Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
anleitungen:spezial:pyprogramgenerator:direct-mode-servo [2024/06/30 16:09] – [Programmierung von Animationen] hlinke | anleitungen:spezial:pyprogramgenerator:direct-mode-servo [2024/07/01 11:30] (aktuell) – [Einstellung der Endlagen] hlinke | ||
---|---|---|---|
Zeile 21: | Zeile 21: | ||
Beschreibung folgt, wenn die Platine verfügbar ist | Beschreibung folgt, wenn die Platine verfügbar ist | ||
- | |||
- | |||
Zeile 71: | Zeile 69: | ||
SERVO1 ist egal, wenn R5 nicht bestückt ist und muss geöffnet werden, wenn R5 vorher mal bestückt wurde. | SERVO1 ist egal, wenn R5 nicht bestückt ist und muss geöffnet werden, wenn R5 vorher mal bestückt wurde. | ||
- | ==== Einstellung | + | ==== Adressierung |
- | In pyMobaLedLib | + | Bei der modifizierten Platine belegt jeder Servo eine RGB-Adresse. (Bei der originalen Platine hatte das gesamte Modul eine RGB-LED Adresse und die Servos wurde durch die R-G-B Kanäle angesprochen). |
+ | Die Adressen bei der modifizierten Platine sind fortlaufend. D.h. erste Servo-Adresse 5, dann haben die beiden anderen Servos die Adresse 6 und 7. | ||
+ | Diese Adresse ist auch bei der Endlageneinstellung und in der Servo-Animation angegeben werden, damit der richtige Servo angesprochen wird. | ||
- | Es ist aber ganz einfach: | + | ==== Einstellung der Endlagen |
- | - Die Servo Position in die Mitte stellen. | + | |
- | - Die Servo Control Betriebsart auf: " | + | |
- | - Von der Mitte ausgehend langsam zur gewünschten Endposition fahren. Der Servo sollte dieser Bewegung folgen. | + | |
- | - Wenn die erste Endposition erreicht ist, "Enter drücken" | + | |
- | - zur zweiten Endposition fahren. | + | |
- | - Nochmal " | + | |
- | - Betriebsart wieder auf " | + | |
- | + | ||
- | Achtung: Der nachfolgende Text ist eine Sammlung von Hinweisen aus der Diskussion. Der Text wird noch etwas besser strukturiert... | + | |
- | + | ||
- | + | ||
- | Genau genommen ist der Bereich von 0 bis 255, beim Direct Mode Servo, eine Art " | + | |
- | + | ||
- | Wenn du den Servo im Normalbereich mit den Endlagen trainierst, dann entspricht der Bereich von 0 bis 255 den PWM Werten von 1ms bis 2ms. Wenn du das selbe mit der Einstellung | + | |
- | + | ||
- | Doch egal, welche Millisekunden Werte du für die Endlagen festlegst, | + | |
- | Umstellen auf Endlagen | + | |
- | Schieberegler auf die eine Endlage einstellen, Enter drücken, Schieberegler auf die zweite Endlage stellen und wieder Enter drücken - fertig. Ist das so richtig? | + | |
- | + | ||
- | Dirket nach dem Flashen des Attiny85 und im Normalmodus bewegt sich der Servo mit dem Schieberegler von 0 bis 255 nur etwa 30°. Durch drücken von Enter geht er nochmal etwas weiter so dass ich in etwa auf die eigentlichen Maxima komme. Passt das soweit? | + | |
- | + | ||
- | Ja, ob die Programmierung erfolgreich war, kannst du ja daran sehen, dass sich nun der Normalbereich 0.255 innerhalb der eingestellten Endlagen bewegt. Danach sollte der DM Servo auch im Betriebsmode ansprechbar sein. Die 30 Grad default sind eine Sicherheitsfunktion, | + | |
- | + | ||
- | Ein DM Servo belegt den Adressraum einer RGB LED mit drei Mal 8 Bit bzw. Werten von 0..255! Im ersten Kanal kommt eine Steuerinformation und eine CRC Prüfsumme, im zweiten Kanal ein Stellwert von 0.255 und der dritte Kanal ist bei der Std. MLL derzeit nicht genutzt. Außerdem hat die Std. MLL die ersten beiden Kanäle technisch vertauscht. Deine Beobachtung könnte also richtig sein, wenn sich " | + | |
- | + | ||
- | so, die Kanäle sind geklärt. Es ändert sich an einer RGB-LED an einem WS2811-Modul der rote Kanal und grün wird langsam heller. Mit einer WS2812 sind rot und grün vertauscht, also alles so wie es soll. Das passt erstmal mit deiner Beschreibung. | + | |
- | + | ||
- | Der zweite und dritte Servo haben sich auch geklärt. Ich hatte die 510 vorher an das Ende meiner Kette gehängt, wodurch sie die Adresse 47 bekommen hat. Adresse 48 und 49 sind dann Servo 2 und 3. Aber bei Adresse 48 wird zumindest bei mir die erste LED auf Kanal 1 angesprochen. Ich habe die 510 nun als erste an Kanal 0 gehängt und nun werden nach der Heartbeat auf 1, 2 und 3 die drei Servos angesprochen. | + | |
- | + | ||
- | Aber es ist bei allen drei Servos so, dass die Einstellung bei Normal Position erstmal nur in sehr begrenztem Bereich funktioniert und das auch nur in dem ich zu 0 gehe und dann mehrmals zwischen 1 und 0 wechsle, damit der Servo immer weiter zum Anschlag läuft. Das Gleiche am anderen Ende bei 255. Und ich bekomme mit meinen SG90 Servos nur 90° maximal hin. Das sollten eigenlich ca. 170° sein. | + | |
- | + | ||
- | Programmierung der Endlagen: mache ich das richtig: Training End Pos angeben, erst auf 0 stellen, Enter drücken, 255 einstellen und wieder Enter drücken? Nach dem ich das getan habe bewegen sich die Servos unter Normal Position wieder nur wie vorher beschrieben. | + | |
- | + | ||
- | ProgrammGenerator: | + | |
- | + | ||
- | Du bist, für den derzeitigen Programm-Stand, | + | |
- | + | ||
- | Aber: das Trainieren der Endlagen ist eigentlich der Farbtest und hier werden NUR EINZELNE Werte in den WS2811 Strang übertragen, | + | |
- | + | ||
- | Du musst also (derzeit) den pyPG Regler so langsam bewegen, dass das Servo auch hinterher kommt! | + | |
- | Nach meinen Messungen und meiner Erfahrung haben SG90 Servos, bei der Servo Norm-PWM von 1-2ms, nur 90 Grad Stellwinkel! Die 170 Grad Aussage kommt dadurch zustande, dass fast alle eben nicht 1-2ms PWMs machen, sondern mehr! Das gibt es beim DM Servo auch und heißt " | + | |
- | + | ||
- | ch habe die 510 an einer Verteilerplatine mit separater 5V-Versorgung. Das sollte kein Problem sein. Aber ich hatte für die Tests drei Servos parallel am Laufen, vielleicht ist dann der Strom doch mal zu gering. Werden die Factory Defaults dann auch gleich wieder ins EEPROM geschrieben? | + | |
- | + | ||
- | Tatsächlich haben die Tinys hinter einer echten physikalischen WS2811 oder WS2812B LED eine ganz passable Reichweite! Die nächste WS2811, hinter dem Tiny, kann auch ganz ordentlich weg sein (z.B. 70cm kein Problem), aber ATMega238 auf ATTiny85 ist irgendwie seltsam. Es wundert mich ein wenig, denn ATTiny auf ATTiny, also zwei meiner Direct Mode Servo Platinen, vertragen durchaus einen halben Meter zwischeneinander! | + | |
- | wenn das EEPROM als inkonsistent erkannt wird, erhält das EEPROM die selben default Werte, wie bei der ersten Inbetriebnahme. Die alten Endlagen sind also weg! | + | |
- | + | ||
- | Normalerweise befindet sich der ARDUINO im sogenannten " | + | |
- | + | ||
- | Damit ich die angeschlossenen Objekte, RGB-Leds, WS2811-Platinen oder Servoplatinen direkt ansteuern kann, kann ich den ARDUINO in den sohenanten " | + | |
- | Du kannst den Modus unten in der Status-Leiste links sehen. Dort steht z.B. " | + | |
- | + | ||
- | Auf der Servo2 Seite muß ich den Servo direkt anteuern. Also schalte ich dort auf den " | + | |
+ | Die Einstellung der Endlagen erfolgt über die " | ||
+ | Die Beschreibung findest Du hier: | ||
+ | [[anleitungen: | ||
==== Programmierung von Animationen ==== | ==== Programmierung von Animationen ==== |