projects:4e4th:4e4th:start:msp430g2553_experimente:servotester
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
projects:4e4th:4e4th:start:msp430g2553_experimente:servotester [2014-07-15 23:53] – [Experiment zum Fahrweg für ein Servo] mka | projects:4e4th:4e4th:start:msp430g2553_experimente:servotester [2018-05-02 17:58] (aktuell) – [Servotester für analoge Servos im Modellbau] mka | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
- | So ein [[http:// | + | So ein [[http:// |
===== Aufbau ===== | ===== Aufbau ===== | ||
- | Die Schaltung ist ganz unkompliziert. Der Portpin kann direkt an den Steuereingang eines Servos angeschlossen werden. Die Servos benötigen jedoch ihre eigene Stromversorgung, | + | Die Schaltung ist ganz unkompliziert. Der Portpin kann direkt an den Steuereingang eines Servos angeschlossen werden. Die Servos benötigen jedoch ihre eigene Stromversorgung, |
{{: | {{: | ||
Zeile 12: | Zeile 12: | ||
===== Testprogramm für 8 Servos ===== | ===== Testprogramm für 8 Servos ===== | ||
- | Am Steuereingang werden [[http:// | + | Am Steuereingang werden [[http:// |
Im Testprogramm erhalten die Servos ihren Puls einfach nacheinander. Auf diese Weise passen bis zu 9 Servo-Pulse in die 50Hz Wiederholrate, | Im Testprogramm erhalten die Servos ihren Puls einfach nacheinander. Auf diese Weise passen bis zu 9 Servo-Pulse in die 50Hz Wiederholrate, | ||
Zeile 59: | Zeile 59: | ||
DECIMAL | DECIMAL | ||
VARIABLE RESTDAUER | VARIABLE RESTDAUER | ||
- | : REST restdauer @ 0 DO LOOP key? ; | + | : REST restdauer @ 0 DO LOOP ; |
: P2SET true p2dir c! zero p2 c! zero p2sel c! ; | : P2SET true p2dir c! zero p2 c! zero p2sel c! ; | ||
- | : NEU | + | : NEU |
| | ||
\ erzeuge Puls der Breite x an Pin p vom Port adr. | \ erzeuge Puls der Breite x an Pin p vom Port adr. | ||
: SUBREST | : SUBREST | ||
- | : PULS ( x p adr -- ) | + | : PULS |
2dup >r >r cset \ H-Pegel | 2dup >r >r cset \ H-Pegel | ||
dup subrest | dup subrest | ||
Zeile 81: | Zeile 81: | ||
2000 us p2.6 puls | 2000 us p2.6 puls | ||
2000 us p2.7 puls | 2000 us p2.7 puls | ||
- | rest UNTIL key drop ; | + | rest |
: TEST1 | : TEST1 | ||
BEGIN neu | BEGIN neu | ||
Zeile 92: | Zeile 92: | ||
1000 us p2.6 puls | 1000 us p2.6 puls | ||
1000 us p2.7 puls | 1000 us p2.7 puls | ||
- | rest UNTIL key drop ; | + | rest |
| | ||
: RUN ( -- ) 5 0 do test1 test2 loop ; \ druecke mehrmals eine Taste wenns lauft. | : RUN ( -- ) 5 0 do test1 test2 loop ; \ druecke mehrmals eine Taste wenns lauft. | ||
Zeile 98: | Zeile 98: | ||
===== Experiment zum Fahrweg ===== | ===== Experiment zum Fahrweg ===== | ||
- | An einem einzelnen Servo lässt sich mit einem weiteren kleinen Programm zeigen, wie sich der Servo bei vollem Fahrweg verhält. Wird von 1ms auf 2ms Pulsbreite umgeschaltet, | + | An einem einzelnen Servo lässt sich mit einem weiteren kleinen Programm zeigen, wie sich der Servo bei vollem Fahrweg verhält. Wird von 1 ms auf 2 ms Pulsbreite umgeschaltet, |
+ | ==== Wieviele Pulse sind für einen vollen Weg des Servos nötig? ==== | ||
+ | |||
+ | \ Erste Annäherung: | ||
+ | : FAHRTEST1 | ||
+ | 100 10 DO | ||
+ | key? IF key drop leave THEN i . | ||
+ | i 0 DO neu 1000 us p2.0 puls rest LOOP | ||
+ | i 0 DO neu 2000 us p2.0 puls rest LOOP | ||
+ | LOOP ; | ||
+ | |||
+ | Dazu kann der Aufbau unverändert benutzt werden. Sobald man den Eindruck hat das der Servo den vollen Fahrweg zurück gelegt hat, drückt man eine Taste und das Experiment stoppt. Die zuletzt ausgegebene Zahl ist die Anzahl der Pulswiederholungen. Nach einigen Durchgängen bekommt man ein ganz gutes Gefühl dafür. Bei meiner Anordnung kam ich so auf geschätzte 20 bis 23 Pulse. Rund 40 Pulse ergaben einen Rhythmus von praktisch gleich langem Hin- und Herfahren und still stehen. | ||
+ | |||
+ | ==== Wie lange dauert das dann? ==== | ||
+ | |||
+ | \ Beobachten von vollen Wegen am Oszilloskop. | ||
+ | : FAHRTEST2 | ||
+ | BEGIN | ||
+ | 40 0 DO neu 1000 us p2.0 puls rest LOOP 100 ms | ||
+ | 40 0 DO neu 2000 us p2.0 puls rest LOOP 200 ms | ||
+ | key? UNTIL key drop ; | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Anhand der kleinen Puls-Pausen kann man identifizieren welche Pulsserie gerade abgelaufen war. Der kürzeren Pause gingen die 1 ms Pulse voraus (rechts im Bild), und der längeren die 2 ms Pulse, (links im Bild). Mit jeder Pulsserie fuhr der Motor in die andere Richtung. Man erkennt wie die Spannung einbrach, wenn der Motor startete, und sich dann einpendelte wenn er lief. Nach **20 bis 21 Pulsen** bleib der Motor stehen, aber es gab auch danach noch kurze Regelpulse der Servoelektronik. Bei den 1ms Steuer-Pulsen waren es immer nur wenige nachlaufende Regelpulse, im Bild waren es 7 Stück. Bei den 2ms-Pulsen waren es immer viele, über die ganze Steuerpulsserie hinweg. Ich deute das so, dass der Motor auf dieser Seite noch nicht am mechanischen Anschlag war, sondern in einer Position davor gehalten wurde. Der Servo brummte dabei auch leise, was er in der anderen Endstellung nicht tat. So kann man abzählen das dieser Servo nach 20 Pulsen, die alle 20ms kamen, einen vollen Fahrweg machte, also **400 ms** benötigte, ungefähr eine 1/2 Sekunde. | ||
+ | |||
+ | ==== Anmerkung ==== | ||
+ | Ein anderer Ansatz, die Servos praktisch gleichzeitig anzusteuern, | ||
+ | |||
+ | Im Rahmen der grundlegenden Experimente wurde darauf verzichtet hier assemblierten, | ||
- | |
projects/4e4th/4e4th/start/msp430g2553_experimente/servotester.1405461223.txt.gz · Zuletzt geändert: 2014-07-15 23:53 von mka