Jump to content

mruniversum

Members
  • Gesamte Inhalte

    44
  • Benutzer seit

  • Letzter Besuch

mruniversum's Achievements

Newbie

Newbie (1/14)

0

Reputation in der Community

  1. Hallo, ich nutze genau diesen IR-Kopf zum Auslesen von einem AS1440 digitalen Stromzähler. Wäre als Bricklet auf jeden Fall interessant. Habe mein Projekt hier http://home.arcor.de/darealsvrider/as1440/ veröffentlicht.
  2. Hallo, kurze Frage: Wenn ich beim temperature-bricklet den Wert abfrage bekomme ich z.b. temperature=643 also 6,43°C. Beim humidity-bricklet bekomme ich folgenden Wert: humidity=787 Das entspricht dann 78,7% relative Luftfeuchte? In der Doku steht bei beiden "Ausgabe in 0,1 Schritten". Die Kommaverschiebung verwirrt mich aber. Danke für Aufklärung!
  3. Hallo zusammen, ich suche Hilfe bez. eines Problems mit einer Schrittmotorsteuerung bei einem Bekannten. Ein Schrittmotor treibt einen Schlitten an, der als Längenanschlag für eine Säge dient, das dazugehörige Programm habe ich zur Verfügung gestellt. Es ist aufgefallen, dass der Motor bei einer Fahrt plötzlich für eine Sekunde stoppt, dann weiter fährt, wieder stoppt usw. Um Fehler in der Mechanik auszuschließen, wurde der Motor ausgebaut. Nach dem Einschalten des Stepperbricks hat der Motor erstmal leicht hochfrequent gepfiffen (evtl nicht perfekter Decaywert), Die Achse war stabilisiert, man konnte also die Motorachse nicht drehen. Nach einer gewissen Zeit hat der Motor dann wieder rhytmisch angefangen das Pfeiffen zu unterbrechen, auch konnte in der Zeit die Achse gedreht werden. Durch Zufall fanden wir heraus, dass der Kühlkörper vom Stepperbrick sehr heiß wird, nach einer Behandlung mit Kältespray hörte die Unterbrechung des Pfeiffens auf, und der Haltemoment vom Motor war wieder intakt. Also scheint es so, als ob der Stepperbrick überhitzt, also zu schwach für den Motor ist...? Testweise wurde der max. Strom von 2000mA auf 1600mA zurückgedreht. Damit lief der Motor den ersten Tests nach zu Urteilen durch. Wird jetzt allerdings die Geschwindigkeit erhöht, fängt das Problem wieder an. Mit der aktuellen Geschwindigkeit fährt der Schlitten mit ca 30 Sek / Meter, was eindeutig zu langsam ist auf einer Länge von 2 Metern Wir haben mit 1/8 bis Vollschritten sowie mehreren mechanischen Untersetzungen experimentiert, leider ohne Erfolg. Gibt es Möglichkeiten, den Motor noch mehr Strom / Spannung zur Verfügung zu stellen? Oder ist der Stepperbrick für das Projekt evtl zu klein? (Das wäre ein Desaster). Würde es Sinn machen die Kühlung des Stepperbricks zu verbessern? Oder gibt es evtl noch Parameter um noch mehr Leistung rauszuholen? Der Motor ist ein SM 2861-5055 mit 3Nm. Danke schonmal im voraus für alle Ideen und Antworten. SM2861-5055.pdf
  4. Die Antwort lautet: tinkerforge call hall-effect-bricklet $uid get-edge-count true anstatt tinkerforge call hall-effect-bricklet $uid get-edge-count false Ergebnis (reset sichtbar beim zweiten Aufruf): root@raspberrypi:~/gas# ./get_gas.sh 556 root@raspberrypi:~/gas# ./get_gas.sh 0
  5. Hallo zusammen, kann mir jemand sagen wie ich bei den shell-bindings definieren kann, dass das hall-effekt-bricklet den counter nach dem auslesen wieder auf 0 setzt?
  6. d.h. ich gehe davon aus, dass die Scheibe meines Zählers einen Punkt hat wo sie magnetisch ist? Oder wie kann ich das testen?
  7. Hi, kann ich ein Line Bricklet dazu verwenden, um bei einem Stromzähler die rote Markierung der sich drehenden Scheibe zu erkennen? Offtopic: Wie wäre es mit einem Bereich im Wiki wo man Quellcode posten und finden kann, um evtl auf eine schon vorhandene Lösung zurückzugreifen? mfg
  8. Hi, ich benötige nochmal Hilfe. Ich verstehe die Syntax nicht den Interruptlistener zu beenden! Das Beispiel io4.removeInterruptListener(listener); funktioniert nicht. Kannst du mir nochmal bitte konkret nennen wie ich ihn beenden muss, wenn ich ihn so starte? io4.addInterruptListener(new BrickletIO4.InterruptListener() { public void interrupt(short interruptMask, short valueMask) { try { if (val == 14) { System.out.print("\nSchalter 1"); } if (val == 13) { System.out.print("\nSchalter 2"); } }catch(TinkerforgeException e) { } } }); Vielen Dank!
  9. Hi, der vollständigkeit halber wie ich es gelöst habe: io4.addInterruptListener(new BrickletIO4.InterruptListener() { public void interrupt(short interruptMask, short valueMask) { // System.out.println("!!ENDSCHALTER 0 oder 1!!"); try { val=io4.getValue(); if (val == 14) { System.out.println("NULLSCHALTER " + val); } if (val == 13) { System.out.println("ENDSCHALTER " + val); } }catch(TinkerforgeException e) { } } }); // Enable interrupt on pin 0 + 1 io4.setInterrupt((short)(1111)); ich habe allerdings noch das problem, dass bei jedem programmdurchlauf der listener scheinbar einmal mehr durchläuft wird, da beim ersten durchlauf eine textausgabe kommt, beim zweiten zwei, beim dritten drei usw. (das programm läuft in einer schleife). liegt das etvl. daran weil der listener nicht gestoppt wird? wäre nett wenn das nochmal jemand konkret posten könnte, meine versuche sind bisher gescheitert. => wie muss er beendet werden? io4.removeInterruptListener(null);
  10. Hallo zusammen, nach dem ersten versuch mit den shell-bindings versuche ich es nun mit java. es geht darum, per schalter der am IO4 hängt über einen listener eine aktion auszuführen. das klappt auch soweit, allerdings wird der listener ausgelöst wenn der schalter gedrückt wird, und auch wenn er losgelassen wird. wie lässt sich die abzufragene flanke definieren? // listener wenn IO4 aktiviert wird io4.addInterruptListener(new BrickletIO4.InterruptListener() { public void interrupt(short interruptMask, short valueMask) { System.out.println("STOP"); try { //stepper stoppen und position auf 0 setzen stepper.fullBrake(); stepper.setCurrentPosition(0); }catch(TinkerforgeException e) { } } }); // Enable interrupt on pin 0 io4.setInterrupt((short)(1 << 0));
  11. Hi, danke für die hilfreichen antworten! kann ich auch mehrere callbacks abfragen? z.b. wenn der erste erfolgt ist, dann einen anderen, bzw. können die parallel darauf "warten" aufgerufen zu werden? (z.b. position erreicht beim stepper ODER endschalter erreicht) komme erst später wieder zum testen, daher nochmal diese fragen. danke!
  12. Hallo zusammen, ich habe nun die hardwarekomponenten aber komme nicht weiter. der motor läuft los (das ist schonmal gut), und soll bei der aktivierung vom endschalter stoppen. das klappt soweit (mit einer sekunde verzögerung?!). allerdings bleibt mein shellscript dann im callback "hängen". ich möchte aber dass wenn der callback auslöst (schalter am IO4), der motor gestoppt wird UND sich der callback mit dem ganzen script beendet. hier ein auszug, das unwichtige mal rausgenommen: #konfig io4 tinkerforge call io4-bricklet $io_uid set-interrupt 13 #Position abfragen: POS=$(tinkerforge call stepper-brick $uid get-current-position) echo "Aktuelle Position: $POS" # stepper starten tinkerforge call stepper-brick $uid enable # motor laufen lassen tinkerforge call stepper-brick $uid set-steps 10000 #callback vom IO4. motor soll sofort stoppen bei aktiviertem endschalter tinkerforge dispatch io4-bricklet $io_uid interrupt \ --execute " echo 'stop'; tinkerforge call stepper-brick $uid full-brake; exit; " wenn der motor nun losläuft und ich den schalter drücke, dauert es eine sekunde, dann bleibt er stehen: ./start.sh Aktuelle Position: position=52613 stop stop - warum bleibt die konsole nun im callback stehen? pro drücken und gehenlassen vom schalter wird ein "stop" gepostet (also das script läuft nach wie vor) - warum wird mein "exit" im callback ignoriert? - kann ich auch nur das drücken vom schalter abfragen, nicht das gehen lassen? (sonst wird der callback auch ausgelöst wenn der motor die endposition verlässt und stoppt den motor erneut) danke für denkanstöße....
  13. Hallo zusammen, für ein kleines Projekt benötige ich einen Stepper-Brick für einen Schrittmotor sowie ein I/O 4 um (End) Schalter abzufragen. Eine kurze Frage zur Programmierung: Eine Welle bewegt einen Schlitten der bei einer bestimmten Position stoppen soll. Hierfür wird ein Schalter benutzt, der über den I/O 4 abgefragt werden soll. Von der Programmierlogik her muss ich immer einen Schritt drehen, dann den Schalter auf Aktivierung prüfen, dann wieder einen Schritt drehen und so weiter. (Bis der Schalter gedrückt ist, und dann stoppen). Kann ich das prinzipiell mit den Shell-Bindings realisieren? Ich muss ja immer abwechselnd einen Schritt drehen und dann den Schalter abfragen, ohne dass der Motor zu langsam wird weil die Befehle so lange mit der Ausführung brauchen... Oder ist hier eine richtige Programmiersprache nötig wie Java, C etc? Hoffe das ist so verständlich...
×
×
  • Neu erstellen...