Hallo zusammen, ich habe einen Aufbau mit einem dutzend Dynamixel Servos. Jedes Servo hat neben der Spannungsversorgung einen Signalanschluß, mit dem es durch eindeutige ID angesteuert werden kann. Das Signal ist ein 5 V TTL Signal. Schließt man mehrere Servos nacheinander an den Bus verschlechtert sich die Qualität des Steuersignals rapide, sodass eine Kommunikation nicht mehr möglich ist. Siehe dazu die Screenshots mit zunehmender Anzahl an Servos. Gibt es eine Idee, was die Ursache ist und wie man das ggfs. verbessern kann? Ist das eher durch den Widerstand der Kabel für die höheren Frequenzen bedingt oder werden da parasitäre Kapazitäten während des Schaltvorgangs umgeladen? Im ersteren Fall könnte man ja Kabel mit einem höheren Querschnitt versuchen, im letzteren Fall dürfte das eher nichts bringen. Viele Grüße Markus
Zu schwacher UART Ausgang. Treiber dazwischen und gut ist.
Nimm einen 74HC244, schalte alle Gatter parallel und puffere damit das TTL Signal. Anderer Puffer wäre z.B. der 74HC573, den man auf transparent stellt. Das sind Bustreiber, die ein hohes Fan-Out haben.
:
Bearbeitet durch User
Die unbekannte Quelle ist zu hochohmig. 1MHz Baudrate ist schon verdammt sportlich.
Markus L. schrieb: > ich habe einen Aufbau mit einem dutzend Dynamixel Servos. Und wie sieht der aus, insbesondere wie ist die Signalquelle spezifiziert?
Danke für den Input. Das mit dem Treiber klingt gut, allerdings bräuchte ich einen bidirektionalen, da die gesamte Kommunikation über ein Kabel läuft. Muss ich mal danach suchen. Wolfgang schrieb: > Und wie sieht der aus, insbesondere wie ist die Signalquelle > spezifiziert? Die Quelle ist hier spezifiziert inkl. Schaltplan: http://xevelabs.com/doku.php?id=product:usb2ax:specs Das Steuerignal hängt im Grunde direkt an einem RX/TX eines Atmega 32U2. Das klingt dann natürlich plausibel, dass der einfach zu schwach ist.
Markus L. schrieb: > Das Steuerignal hängt im Grunde direkt an einem RX/TX eines Atmega 32U2. > Das klingt dann natürlich plausibel, dass der einfach zu schwach ist. Dann setze den Buffer nur in die TX Leitung und schliesse RX danach an. Optional kannst du auch in die RX Leitung noch ein Schmitttrigger Gatter setzen, damit die Antwort etwas deutlicher wird. Man könnte auch sowas wie 74HC245 einsetzen, der bidirektional ist, aber das erfordert ein Signal zur Richtungsumschaltung.
Noch nie was von Dynamixel gehört, aber das heisst ja nichts... Die Dinger sehen doch recht ordentlich aus, da hätte ich ne andere Schnittstelle als erbärmliche TTL-UART erwartet, das ist doch nichts für einen Bus. Das schreit ja förmlich nach RS485. Braucht zwar eine zweite Leitung, aber vom Prinzip her geeignet (immer nur einer sendet).
H.Joachim S. schrieb: > Die Dinger sehen doch recht ordentlich aus, da hätte ich ne andere > Schnittstelle als erbärmliche TTL-UART erwartet TTL wird´s wohl kaum sein. Der ATMega32u2 besitzt C-MOS Push-Pull Ausgänge und zieht damit genauso gut nach VDD wie nach Gnd.
Wolfgang schrieb: > Der ATMega32u2 besitzt C-MOS Push-Pull > Ausgänge und zieht damit genauso gut nach VDD wie nach Gnd. Es ist trotzdem keine glückliche Entscheidung, einen Portpin ungepuffert als Bustreiber zu benutzen.
Ich habe vermutlich das Problem identifiziert. Es gibt auf github eine aktuellere Version dieses Adapters, bei dem die Widerstände in den RX/TX-Leitungen von 150 auf 47 Ohm verringert wurden, mit dem Vermerk "Upgraded to v3.2b : changed R3 from 150 to 47ohms for stronger line drive". https://github.com/Xevel/usb2ax/tree/master/hardware Das spricht ja dafür, dass mein Problem wohl bekannt ist/war und dem schon Abhilfe geschaffen wurde. Ich habe nämlich noch die Version 3.2a mit 150 Ohm. Ich werde jetzt die Adapter tauschen und dann weiterschauen, vermutlich /hoffentlich wird sich das Problem damit erledigen.
Dieter W. schrieb: > Es ist trotzdem keine glückliche Entscheidung, einen Portpin ungepuffert > als Bustreiber zu benutzen. ACK. Riskiert unnötig den MC. Aber der TE hats vermutlich nicht so mit Hardware.
Matthias S. schrieb: > Aber der TE hats vermutlich nicht so mit > Hardware. Nicht so sehr bisher. Aber das Ding wird ja so immerhin verkauft, das ist ja nicht meine Eigenentwicklung: https://www.generationrobots.com/de/401584-usb2ax-fur-dynamixel-servomotors.html
Trotzdem ist und bleibt es eine lächerlich anmutende Hilfskrücke. Hat nur einen Zweck: billig, billig. Damit geht man einfach nicht ins Feld und verbindet mehrere Servos. Es kommt ja neben den von Hause aus vorhandenen prinzipiellen Problemen noch was gravierendes hinzu: Masseversatz bei ordentlich Stromfluss der Motore. Und da sieht es eben ganz schnell ganz böse aus mit dem Störabstand, da braucht noch gar keine externen Störungen bemühen. Ich seh gerade: du hast aufs falsche Pferd gesetzt, die Teile gibt es (sinnvollerweise) auch mit RS485. Keine Ahnung wie alt der Standard ist, 40 Jahre sind es mindestens und wird heute noch reichlich verwendet. Hat schon seinen Sinn, tut nicht weh und kostet auch nicht viel. Vor allem: es funktioniert im realen Leben und nicht nur auf der Werkbank.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.