Wandler rs232/rs482 <-> TTL halbduplex...

Am 26.06.2020 um 22:29 schrieb Nico Hoffmann:
Hallo,

ich möchte einen Servomotor Robotis AX-12A
(<https://emanual.robotis.com/docs/en/dxl/ax/ax-12a/>) über eine
serielle Schnittstelle bedienen. Die serielle Schnittstelle hängt an
einer SPS, daher kommen die von Robotis angebotenen Lösungen (IDE,
Contollerboard, ...) wohl nicht wirklich in Betracht, weil die darauf
abstellen, dass ein Stück Elektronik an einem PC hängt und von da
bedient wird.
....
Soweit so schön. Ist das plausibel, oder habe ich irgendwo einen
Denkfehler gemacht?

Moins,

ich habe erst jetzt den Thread bemerkt.Wir haben hier schon mehrere
tausend AX12 und AX18 installiert.Die Ansteuerung ist scon etwas
merkwürdig, aber man kann sich daran gewöhnen.
Unsere Standardbeschaltung ist via USB<->RS232 Umsetzer, vorzugsweise
ein Pololu mit einem CP210x on board, aber mit anderen geht es auch. Das
Ding wird entweder vom PC oder Raspberry Pi angesteuert. Und ja, wir
haben auch mehrere Motoren dran, so bis 8 Stück geht es noch. Zwischen
dem USB<->RS232 und Motoren ist ein Interface mit 74HCT241 on board, zu
Richtungsumschaltung und auch als Leitungstreiber (wir haben manchmal
bis zu 5m Strecke). Die Richtung ist immer Hören, wenn der Host sendet,
wird die Richtung umgeschaltet. Bei CP210x gibt es programiebare (Fuse)
Leitungen, die dann schalten, wenn der Host sendet. Bei normalem UART
kann man RTS Leitung verwenden.
Wichtig ist, dass die Steckdosen am Motor ganz einfach parallel
geschaltet sind, kein Treiber oder sonst was. Auch die
Spannungsversorgung soll man entsprechend dimensionieren. Bei 8xAX18
können schon 10A+ Einschaltstrom fliessen, je nach Mechanik. Die kleinen
Molex-Buchsen sind vielleicht überfordert. Meistens haben wir dafür
dickere Leitungen, und keine Daisy-Chain zwischen den Motoren.

Waldemar
 
Nico Hoffmann schreibt:

ich möchte einen Servomotor Robotis AX-12A
(<https://emanual.robotis.com/docs/en/dxl/ax/ax-12a/>) über eine
serielle Schnittstelle bedienen. Die serielle Schnittstelle hängt an
einer SPS, daher kommen die von Robotis angebotenen Lösungen (IDE,
Contollerboard, ...) wohl nicht wirklich in Betracht, weil die darauf
abstellen, dass ein Stück Elektronik an einem PC hängt und von da
bedient wird.

Ich kenne mich mit den Details nicht wirklich aus, daher schildere ich
etwas ausschweifenden meinen Gedankengang:

Nun spricht der AX-12A ein serielles Protokoll (\"Half Duplex
Asynchronous Serial Communication (8bit, 1stop, No Parity)\"), das
Robotis freundlicherweise offengelegt hat, aber mit TTL-Pegeln,
d.h. Spannung zwischen 0 und 5 Volt.

Die RS232 hat RS232-Pegel, also zwischen -12V und +12V.

Ich brauche also einen Pegelumsetzer, typischerweise etwas wo der
MAX232-IC drin arbeitet. Die gibt es fertig zu kaufen. Aber im Manual
steht, dass es halbduplex sein soll, d.h. mit Richtungsumschaltung,
weil es nur eine Leitung für Senden und Empfangen gibt. Vgl. das
Schema in Kap. 5.4.1 im Manual, Link s.o.

Leider bin ich noch nicht wirklich weiter.

Ich habe mir einemn MAX232 besorgt, der genau das macht: RS232-Pegel
auf TTL-Pegel umsetzen und umgekehrt (Richtungsumschaltung macht er
nicht).

Ich habe folgende Schaltung aufgebaut:

RS232 (von der SPS) ----TX--> MAX232 --->TX (TTL)---+
|
+-----Dynamixel
|
RS232 (zur SPS) <-------RX-- MAX232 <----RX (TTL)---+

Ich sende also von der SPS Daten zum MAX232 raus (TX), gehe über die
TTL-Seite des MAX232 zurück und bekomme dieselben Daten über die
RX-Leitung wieder in die SPS. Bis hierher ist es wie ein
\"Kurzschlußstecker\" mit Pegelwandlung.
Auf der TTL-Seite ist dann noch der Dynamixel angeschlossen.

Die SPS hört ihr eigenes Echo. Wenn ich die Verbindung auf der
TTL-Seite des MAX232 auftrenne, bleibt das Echo aus. Funktioniert also
soweit.

Leider höre ich keine Antwort vom Dynamixel, obwohl ich eigentlich ein
Statuspaket erwarte. Ich habe ein bischen an den Einstellungen
rumprobiert, aber der Dynamixel bleibt stumm.

Es gibt einen USB-TTL-Adapter von Dynamixel, d.h. Robotis, der
zusammen mit der Robotis-IDE den Dynamixel steuern können soll. Den
besorge ich mir mal. Das hilft mir zwar bei meiner SPS nicht weiter,
aber wenn ich den Dynamixel damit am PC zum Leben erwecken kann, werde
ich versuchen, die TTL-Seite über den MAX232 \"abzuhören\". Vielleicht
sehe ich dann, warum es nicht klappt.


N., mühsam ernährt sich das Eichhörnchen...
--
--with-signature: illegal option -- -
 
Am 16.10.2020 um 18:27 schrieb Nico Hoffmann:
Nico Hoffmann schreibt:

Ich sende also von der SPS Daten zum MAX232 raus (TX), gehe über die
TTL-Seite des MAX232 zurück und bekomme dieselben Daten über die
RX-Leitung wieder in die SPS. Bis hierher ist es wie ein
\"Kurzschlußstecker\" mit Pegelwandlung.
Auf der TTL-Seite ist dann noch der Dynamixel angeschlossen.

Die SPS hört ihr eigenes Echo. Wenn ich die Verbindung auf der
TTL-Seite des MAX232 auftrenne, bleibt das Echo aus. Funktioniert also
soweit.

Vermutlich ist der Max232 stärker als der Dynamixel, d.h. der TTL
Ausgang des Max232 schaltet den TTL Eingang des Max232 auf High wenn der
RS232 Eingang des Max232 auf ca. -10V liegt. Im Ruhezustand ist das
Eingangssignal des Max232 ca. -10V, der TTL Ausgang dann +5V.

Das angeschlossene Gerät schaltet ebenfalls zwischen +5V und 0V hin und her.

Leider höre ich keine Antwort vom Dynamixel, obwohl ich eigentlich ein
Statuspaket erwarte. Ich habe ein bischen an den Einstellungen
rumprobiert, aber der Dynamixel bleibt stumm.

Wenn der Max genug Strom liefert, kann der Dynamixel den Eingang nicht
auf GND ziehen.
 
stefan schreibt:

Am 16.10.2020 um 18:27 schrieb Nico Hoffmann:
Nico Hoffmann schreibt:

Ich sende also von der SPS Daten zum MAX232 raus (TX), gehe über die
TTL-Seite des MAX232 zurück und bekomme dieselben Daten über die
RX-Leitung wieder in die SPS. Bis hierher ist es wie ein
\"Kurzschlußstecker\" mit Pegelwandlung.
Auf der TTL-Seite ist dann noch der Dynamixel angeschlossen.

Die SPS hört ihr eigenes Echo. Wenn ich die Verbindung auf der
TTL-Seite des MAX232 auftrenne, bleibt das Echo aus. Funktioniert also
soweit.

Vermutlich ist der Max232 stärker als der Dynamixel, d.h. der TTL
Ausgang des Max232 schaltet den TTL Eingang des Max232 auf High wenn der
RS232 Eingang des Max232 auf ca. -10V liegt. Im Ruhezustand ist das
Eingangssignal des Max232 ca. -10V, der TTL Ausgang dann +5V.

Im Ruhezustand hab\' ichs mit dem Multimeter genau so gemessen.


Das angeschlossene Gerät schaltet ebenfalls zwischen +5V und 0V hin und her.

Leider höre ich keine Antwort vom Dynamixel, obwohl ich eigentlich ein
Statuspaket erwarte. Ich habe ein bischen an den Einstellungen
rumprobiert, aber der Dynamixel bleibt stumm.

Wenn der Max genug Strom liefert, kann der Dynamixel den Eingang nicht
auf GND ziehen.

Das könnte sein. Wie schaffe ich Abhilfe?

N.
--
--with-signature: illegal option -- -
 
Am 16.10.2020 um 20:20 schrieb Nico Hoffmann:
stefan schreibt:

Am 16.10.2020 um 18:27 schrieb Nico Hoffmann:
Nico Hoffmann schreibt:

Ich sende also von der SPS Daten zum MAX232 raus (TX), gehe über die
TTL-Seite des MAX232 zurück und bekomme dieselben Daten über die
RX-Leitung wieder in die SPS. Bis hierher ist es wie ein
\"Kurzschlußstecker\" mit Pegelwandlung.
Auf der TTL-Seite ist dann noch der Dynamixel angeschlossen.

Die SPS hört ihr eigenes Echo. Wenn ich die Verbindung auf der
TTL-Seite des MAX232 auftrenne, bleibt das Echo aus. Funktioniert also
soweit.

Vermutlich ist der Max232 stärker als der Dynamixel, d.h. der TTL
Ausgang des Max232 schaltet den TTL Eingang des Max232 auf High wenn der
RS232 Eingang des Max232 auf ca. -10V liegt. Im Ruhezustand ist das
Eingangssignal des Max232 ca. -10V, der TTL Ausgang dann +5V.

Im Ruhezustand hab\' ichs mit dem Multimeter genau so gemessen.


Das angeschlossene Gerät schaltet ebenfalls zwischen +5V und 0V hin und her.

Leider höre ich keine Antwort vom Dynamixel, obwohl ich eigentlich ein
Statuspaket erwarte. Ich habe ein bischen an den Einstellungen
rumprobiert, aber der Dynamixel bleibt stumm.

Wenn der Max genug Strom liefert, kann der Dynamixel den Eingang nicht
auf GND ziehen.

Das könnte sein. Wie schaffe ich Abhilfe?

N.

Man könnte es mit einem Widerstand in der TX Leitung des Max232
versuchen, aber dann ist der Dynamixel stärker.

Keine Ahnung, ob es da eine Standardschaltung mit TTLs gibt.

Man könnte vielleicht die beiden TX-Signale auf ein AND Gatter geben und
den Ausgang dann auf den RX Eingang des Max232 geben. Dann würden beide
Sender in der Lage sein, die Leitung nach GND zu ziehen.

Aber du hast auf der einen Seite ja eine Leitung, die sowohl Sender, als
auch Empfänger ist.


folgende Idee: (bitte prüfen)

Am TTL Ausgang des Max232 ein 2k2 Widerstand zur RX/TX-Leitung deines
Dynamixel.

Diese RX/TX-Leitung dann auf den einen Eingang eines AND Gatters, auf
den anderen Eingang die TX Leitung des Max232 (also direkt am Max232,
nicht hinter dem Widerstand).

Wenn der PC höhrt, ist die TX Leitung auf High, das AND kann also die
Signale von RX/TX durchschalten. Wenn der PC sendet, zieht er die TX/RX
Leitung über den 2k2 nach GND.

Eventuell noch eine Diode parallel zum Widerstand damit die Leitung
besser nach GND gezogen werden kann.


Andere Idee:

Man schaltet die TX* Leitung des PCs nicht auf den RX* des Max232
sondern über einen Widerstand auf die Basis eines NPN Transistors.
Emiter an GND und den offenen Kollektor an RX/TX.

Die RX/TX Leitung dann wie gehabt an den TTL Eingang des Max232.

Dann verwendet man nur 1/4 des Max232, ist aber egal.

Wenn nun die TX* Leitung des PCs auf +10V geht, schaltet der Transistor
die RX/TX Leitung auf GND. Ist die TX* Leitung auf -10V, sperrt der
Transistor und TX/RX kann vom Dynamixel nach GND gezogen werden.

Den 1/4 Max232 könnte man auch noch durch einen einzelnen Transistor
ersetzen. Man braucht im Prinzip nur einen Inverter.
 
ungefähr so: nur eine Idee, nicht getestet

https://www.directupload.net/file/d/5974/mid8ax3c_jpg.htm
 
Am 17.10.2020 um 13:46 schrieb stefan:
ungefähr so: nur eine Idee, nicht getestet

https://www.directupload.net/file/d/5974/mid8ax3c_jpg.htm

oder so:

https://www.directupload.net/file/d/5974/yy7l8565_jpg.htm
 
stefan schreibt:

Am 16.10.2020 um 20:20 schrieb Nico Hoffmann:
stefan schreibt:

Am 16.10.2020 um 18:27 schrieb Nico Hoffmann:

Leider höre ich keine Antwort vom Dynamixel, obwohl ich eigentlich ein
Statuspaket erwarte. Ich habe ein bischen an den Einstellungen
rumprobiert, aber der Dynamixel bleibt stumm.

Wenn der Max genug Strom liefert, kann der Dynamixel den Eingang nicht
auf GND ziehen.

Das könnte sein. Wie schaffe ich Abhilfe?

Man könnte es mit einem Widerstand in der TX Leitung des Max232
versuchen, aber dann ist der Dynamixel stärker.

Ich hab\' das mal probiert. 1,2kOhm vom TTL-Ausgang des MAX232 zum
\'Data\' des Dynamixel, und dann 1:1 an den TTL-Eingang des MAX232.

http://lewonze.de/bilder/2020/max232-AX12-A.png

Ohne Ergebnis, Der Dynamixel ist wie tot. Ich habe mit dem Oszi die
Data-Leitung abgegriffen. Wenn der Dynamixel zu schwach wäre, sollte
ich wenigstens irgendein bischen Gewackel sehen, aber nichts, null.
Ich seh\' nur mein \'ping\'-Telegramm.

Ich habe daher weitere Schaltungen nicht ausprobiert, weil es offenbar
nicht erfolgversprechend ist.

Der Plan ist jetzt, von Dynamixel einen USB-TTL-Adapter zu besorgen,
der vom PC aus mit einem Dynamixel-Programm betrieben werden
kann. Dann habe ich eine reine Dynamixel-Lösung ohne Eigenanteil, die
ja wohl hoffentlich funktioniert.

Dann könnte ich mit dem Oszi schauen, was passiert und mit meiner
jetzigen Nicht-Lösung vergleichen, um den Fehler zu finden. Leider hat
die SPS, die den Dynamixel steuern soll, kein USB...

N.
--
--with-signature: illegal option -- -
 
Am 21.10.2020 um 21:17 schrieb Nico Hoffmann:
stefan schreibt:

Am 16.10.2020 um 20:20 schrieb Nico Hoffmann:
stefan schreibt:

Am 16.10.2020 um 18:27 schrieb Nico Hoffmann:


Man könnte es mit einem Widerstand in der TX Leitung des Max232
versuchen, aber dann ist der Dynamixel stärker.

Ich hab\' das mal probiert. 1,2kOhm vom TTL-Ausgang des MAX232 zum
\'Data\' des Dynamixel, und dann 1:1 an den TTL-Eingang des MAX232.

http://lewonze.de/bilder/2020/max232-AX12-A.png

Ohne Ergebnis, Der Dynamixel ist wie tot. Ich habe mit dem Oszi die
Data-Leitung abgegriffen. Wenn der Dynamixel zu schwach wäre, sollte
ich wenigstens irgendein bischen Gewackel sehen, aber nichts, null.
Ich seh\' nur mein \'ping\'-Telegramm.

Es müssen beide senden können, d.h. du solltest an T1in(11) ein halbwegs
sauberes TTL Signal sehen und du solltest ein Eche bekommen.
Wenn der Pull-Up im AX-12A zu klein ist, kann der Max232 das Signal
nicht nach GND ziehen. Der AD-12A empfängt dann nichts und antwortet
auch nicht.

Ich habe daher weitere Schaltungen nicht ausprobiert, weil es offenbar
nicht erfolgversprechend ist.

Die anderen Schaltungsvorschläge hatten schon einen Sinn, weil bei der
simplen Schaltung mit dem Widerstand der Max232 unter Umständen nicht in
der Lage ist, die TXT Leitung sauber nach GND zu schalten. Das ist bei
den beiden anderen Schaltungsvorschläge anders, d.h. beide Sender sind
da in der Lage, die Leitung sauber nach GND zu schalten während der
jeweils andere Sender ein H-Signal ausgibt.

Der Plan ist jetzt, von Dynamixel einen USB-TTL-Adapter zu besorgen,
der vom PC aus mit einem Dynamixel-Programm betrieben werden
kann. Dann habe ich eine reine Dynamixel-Lösung ohne Eigenanteil, die
ja wohl hoffentlich funktioniert.

Dann könnte ich mit dem Oszi schauen, was passiert und mit meiner
jetzigen Nicht-Lösung vergleichen, um den Fehler zu finden. Leider hat
die SPS, die den Dynamixel steuern soll, kein USB...

Es ist immer ein Problem, wenn gar nichts läuft. Dann stochert man im
Nebel.

 
stefan schreibt:

Am 21.10.2020 um 21:17 schrieb Nico Hoffmann:
stefan schreibt:

Am 16.10.2020 um 20:20 schrieb Nico Hoffmann:
stefan schreibt:

Am 16.10.2020 um 18:27 schrieb Nico Hoffmann:


Man könnte es mit einem Widerstand in der TX Leitung des Max232
versuchen, aber dann ist der Dynamixel stärker.

Ich hab\' das mal probiert. 1,2kOhm vom TTL-Ausgang des MAX232 zum
\'Data\' des Dynamixel, und dann 1:1 an den TTL-Eingang des MAX232.

http://lewonze.de/bilder/2020/max232-AX12-A.png

Ohne Ergebnis, Der Dynamixel ist wie tot. Ich habe mit dem Oszi die
Data-Leitung abgegriffen. Wenn der Dynamixel zu schwach wäre, sollte
ich wenigstens irgendein bischen Gewackel sehen, aber nichts, null.
Ich seh\' nur mein \'ping\'-Telegramm.

Es müssen beide senden können, d.h. du solltest an T1in(11) ein halbwegs
sauberes TTL Signal sehen und du solltest ein Eche bekommen.

Genau.

Wenn der Pull-Up im AX-12A zu klein ist, kann der Max232 das Signal
nicht nach GND ziehen. Der AD-12A empfängt dann nichts und antwortet
auch nicht.

Ich kopple ja das von mir gesendete Signal zurück und werte das \"Echo\"
aus. Das Echo entspricht genau dem, was ich losschicke.

Daraus läßt sich schließen:

- Der MAX232 sendet TTL-seitig.
- Der MAX232 empfängt auch TTL-seitig, sonst könnte ich das Echo nicht
bekommen.
- Dann muss auch der Dynamixel empfangen, denn er hängt direkt auf dem
TTL-Eingang des MAX232.

Ich habe daher weitere Schaltungen nicht ausprobiert, weil es offenbar
nicht erfolgversprechend ist.

Die anderen Schaltungsvorschläge hatten schon einen Sinn, weil bei der
simplen Schaltung mit dem Widerstand der Max232 unter Umständen nicht in
der Lage ist, die TXT Leitung sauber nach GND zu schalten.

Das hätte ich im Oszillogramm gesehen!

Ich sehe aber nur das Signal, was ich sende, und dann nichts
mehr. Konstant 5V, wie mit dem Lineal gezogen. Wenn vom AX-12A eine
Antwort gekommen wäre, hätte es zumindest einen kleinen Wackler geben
müssen. Dann hätte ich an dieser Stelle weitergemacht. Aber so ist es
zwecklos.


Es ist immer ein Problem, wenn gar nichts läuft. Dann stochert man im
Nebel.

So ist es.

N.
--
--with-signature: illegal option -- -
 
Am 21.10.2020 um 23:52 schrieb Nico Hoffmann:
stefan schreibt:

Am 21.10.2020 um 21:17 schrieb Nico Hoffmann:
stefan schreibt:

Ich kopple ja das von mir gesendete Signal zurück und werte das \"Echo\"
aus. Das Echo entspricht genau dem, was ich losschicke.

Daraus läßt sich schließen:

- Der MAX232 sendet TTL-seitig.
- Der MAX232 empfängt auch TTL-seitig, sonst könnte ich das Echo nicht
bekommen.

korrekt, zumindest so, dass der Max232 es \"versteht\"

- Dann muss auch der Dynamixel empfangen, denn er hängt direkt auf dem
TTL-Eingang des MAX232.

Eigentlich schon, zumindest wenn das Signal sauber auf 0 gezogen wird.

Es könnte aber sein, dass der Dynamixel eine niedrigere Schaltschwelle
hat wie der Max232. Wenn das Signal nur zwischen +5V und +1V schaltet,
könnte es sein, dass der deine Baustein es korrekt verarbeitet, der
andere aber nicht.

Ich habe daher weitere Schaltungen nicht ausprobiert, weil es offenbar
nicht erfolgversprechend ist.

Die anderen Schaltungsvorschläge hatten schon einen Sinn, weil bei der
simplen Schaltung mit dem Widerstand der Max232 unter Umständen nicht in
der Lage ist, die TXT Leitung sauber nach GND zu schalten.

Das hätte ich im Oszillogramm gesehen!

ja, das sollte man

Ich sehe aber nur das Signal, was ich sende, und dann nichts
mehr.

wichtig ist, dass das was vom Max232 kommt vom Dynamixel \"verstanden\"
wird. Deshalb solltest du auch schauen, ob das Signal wirklich sauber
nach 0 gezogen wird.

Konstant 5V, wie mit dem Lineal gezogen. Wenn vom AX-12A eine
Antwort gekommen wäre, hätte es zumindest einen kleinen Wackler geben
müssen.

Das ist korrekt.

Dann hätte ich an dieser Stelle weitergemacht. Aber so ist es
zwecklos.


Es ist immer ein Problem, wenn gar nichts läuft. Dann stochert man im
Nebel.

So ist es.

N.
 
stefan <adresse@ist.invalid> writes:

Am 21.10.2020 um 23:52 schrieb Nico Hoffmann:
stefan schreibt:

Am 21.10.2020 um 21:17 schrieb Nico Hoffmann:
stefan schreibt:


Ich kopple ja das von mir gesendete Signal zurück und werte das \"Echo\"
aus. Das Echo entspricht genau dem, was ich losschicke.

Daraus läßt sich schließen:

- Der MAX232 sendet TTL-seitig.
- Der MAX232 empfängt auch TTL-seitig, sonst könnte ich das Echo nicht
bekommen.

korrekt, zumindest so, dass der Max232 es \"versteht\"

- Dann muss auch der Dynamixel empfangen, denn er hängt direkt auf dem
TTL-Eingang des MAX232.

Eigentlich schon, zumindest wenn das Signal sauber auf 0 gezogen wird.

Es könnte aber sein, dass der Dynamixel eine niedrigere Schaltschwelle
hat wie der Max232. Wenn das Signal nur zwischen +5V und +1V schaltet,
könnte es sein, dass der deine Baustein es korrekt verarbeitet, der
andere aber nicht.

Ich habe daher weitere Schaltungen nicht ausprobiert, weil es offenbar
nicht erfolgversprechend ist.

Die anderen Schaltungsvorschläge hatten schon einen Sinn, weil bei der
simplen Schaltung mit dem Widerstand der Max232 unter Umständen nicht in
der Lage ist, die TXT Leitung sauber nach GND zu schalten.

Das hätte ich im Oszillogramm gesehen!

ja, das sollte man

Ich sehe aber nur das Signal, was ich sende, und dann nichts
mehr.

wichtig ist, dass das was vom Max232 kommt vom Dynamixel \"verstanden\"
wird. Deshalb solltest du auch schauen, ob das Signal wirklich sauber
nach 0 gezogen wird.

Konstant 5V, wie mit dem Lineal gezogen. Wenn vom AX-12A eine
Antwort gekommen wäre, hätte es zumindest einen kleinen Wackler geben
müssen.

Das ist korrekt.

Dann hätte ich an dieser Stelle weitergemacht. Aber so ist es
zwecklos.


Es ist immer ein Problem, wenn gar nichts läuft. Dann stochert man im
Nebel.

So ist es.

Mein Verständnis von \"Halbduplex\" ist, dass es nicht darum geht, welcher
Treiber nun der stärkere ist, sondern um ein Protokoll, das angibt, wer
senden darf, und die andere Seite muss den Treiber hochohmig schalten.


--
Stefan
 
stefan schreibt:

Am 21.10.2020 um 23:52 schrieb Nico Hoffmann:
stefan schreibt:

Am 21.10.2020 um 21:17 schrieb Nico Hoffmann:
stefan schreibt:


Ich kopple ja das von mir gesendete Signal zurück und werte das \"Echo\"
aus. Das Echo entspricht genau dem, was ich losschicke.

Daraus läßt sich schließen:

- Der MAX232 sendet TTL-seitig.
- Der MAX232 empfängt auch TTL-seitig, sonst könnte ich das Echo nicht
bekommen.

korrekt, zumindest so, dass der Max232 es \"versteht\"

- Dann muss auch der Dynamixel empfangen, denn er hängt direkt auf dem
TTL-Eingang des MAX232.

Eigentlich schon, zumindest wenn das Signal sauber auf 0 gezogen wird.

Es könnte aber sein, dass der Dynamixel eine niedrigere Schaltschwelle
hat wie der Max232. Wenn das Signal nur zwischen +5V und +1V schaltet,
könnte es sein, dass der deine Baustein es korrekt verarbeitet, der
andere aber nicht.

Das ist richtig, aber auch das kann ich wohl ausschließen:

http://lewonze.de/bilder/2020/ping-brdcast.png

Oben (gelb) ist RS232, unten (türkis) ist der Dynamixel-Eingang bzw
der TTL-Eingang des MAX232.

Die leichten Ausrundungen in der unteren Kurve werden durch den
Widerstand verursacht. Ohne sind es schöne Rechtecke. Der MAX232
empfängt trotzdem völlig korrekt.

Ich habe auch die Zeitbasis raufgredreht, damit ich eine ziemlich
lange Zeitspanne auf den Bildschirm bekomme, aber wie gesagt - nichts.

Ich mache mit dem USB-TTL-Adapter weiter.

N.
--
--with-signature: illegal option -- -
 
> http://lewonze.de/bilder/2020/max232-AX12-A.png

Die Schaltung ist wenig geeignet.
Sauber ist die Variante von Motorola oben:
http://www.embeddedFORTH.de/temp/halfduplex.pdf
Unten ist das wired OR für Transistoren dargestellt,
funktioniert bei 9600 Baud auch.

> Der Dynamixel ist wie tot.

Man erwartet von einer 5V-UART zwar die Polarität
wie sie aus der UART kommt. Erfahrung mit z.B.
Barcodelesern zeigt aber, daß Pegel auch
invertiert sein können.
Lohnt sich im Breadboard gesockelte 74HC04 Gates
vorzusehen die überbrückt werden können.

MfG JRD
 
On 21 Oct 20 at group /de/sci/electronics in article slrnrp19th.418.oxensepp@haydn.lewonze.de
<oxensepp@gmx.de> (Nico Hoffmann) wrote:

stefan schreibt:

Das hätte ich im Oszillogramm gesehen!

Jetzt nicht den ganzen Fred durchgeackert, aber:

Ich sehe aber nur das Signal, was ich sende, und dann nichts
mehr. Konstant 5V, wie mit dem Lineal gezogen. Wenn vom AX-12A eine
Antwort gekommen wäre, hätte es zumindest einen kleinen Wackler geben
müssen. Dann hätte ich an dieser Stelle weitergemacht. Aber so ist es
zwecklos.

Es ist immer ein Problem, wenn gar nichts läuft. Dann stochert man im
Nebel.

So ist es.

Hmm, sicher das TX und RX bei Deinem Target nicht vertauscht sind?

Was macht das Target bei einem Reset, klappert da TX?



Saludos (an alle Vernünftigen, Rest sh. sig)
Wolfgang

--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt!
Ich diskutiere zukünftig weniger mit Idioten, denn sie ziehen mich auf
ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p
(lt. alter usenet Weisheit) iPod, iPhone, iPad, iTunes, iRak, iDiot
 
Am 22.10.2020 um 06:48 schrieb Stefan Wiens:
stefan <adresse@ist.invalid> writes:

Am 21.10.2020 um 23:52 schrieb Nico Hoffmann:
stefan schreibt:

Am 21.10.2020 um 21:17 schrieb Nico Hoffmann:
stefan schreibt:


Es ist immer ein Problem, wenn gar nichts läuft. Dann stochert man im
Nebel.

So ist es.


Mein Verständnis von \"Halbduplex\" ist, dass es nicht darum geht, welcher
Treiber nun der stärkere ist, sondern um ein Protokoll, das angibt, wer
senden darf, und die andere Seite muss den Treiber hochohmig schalten.

Das ist korrekt. Nur schaltet der Max232 seinen TTL Ausgang nicht auf
hochohmig. Deshalb mein Vorschlag mit dem Transistor, wobei man dann
noch mit dem Pull-Up Widerstand experimentieren kann.

Nico schreibt aber, dass das angesteuerte Gerät nicht antwortet und dass
er auch keine kleine Spannungsänderung gemessen hat. Das bedeutet, dass
das Gerät das Telegramm vom PC nicht erhalten oder nicht verstanden hat.


 
Am 22.10.2020 um 11:20 schrieb Rafael Deliano:
http://lewonze.de/bilder/2020/max232-AX12-A.png

Die Schaltung ist wenig geeignet.
Sauber ist die Variante von Motorola oben:
http://www.embeddedFORTH.de/temp/halfduplex.pdf
Unten ist das wired OR für Transistoren dargestellt,
funktioniert bei 9600 Baud auch.

Der Dynamixel ist wie tot.

Man erwartet von einer 5V-UART zwar die Polarität
wie sie aus der UART kommt. Erfahrung mit z.B.
Barcodelesern zeigt aber, daß Pegel auch
invertiert sein können.
Lohnt sich im Breadboard gesockelte 74HC04 Gates
vorzusehen die überbrückt werden können.

MfG JRD

Das wäre eine Möglichkeit.
 
Am 22.10.2020 um 17:56 schrieb stefan:
Am 22.10.2020 um 11:20 schrieb Rafael Deliano:
http://lewonze.de/bilder/2020/max232-AX12-A.png

Die Schaltung ist wenig geeignet.
Sauber ist die Variante von Motorola oben:
http://www.embeddedFORTH.de/temp/halfduplex.pdf
Unten ist das wired OR für Transistoren dargestellt,
funktioniert bei 9600 Baud auch.

Der Dynamixel ist wie tot.

Man erwartet von einer 5V-UART zwar die Polarität
wie sie aus der UART kommt. Erfahrung mit z.B.
Barcodelesern zeigt aber, daß Pegel auch
invertiert sein können.
Lohnt sich im Breadboard gesockelte 74HC04 Gates
vorzusehen die überbrückt werden können.

MfG JRD


Das wäre eine Möglichkeit.

Allerdings gibt es dabei ein Problem: Ein Uart zieht im Ruhezustand den
TX Pin auf 5V bzw. auf High (RS232 entsprechend die TX* Leitung auf -10V).

Wenn ich nun das Uart Signal invertiere, habe ich im Ruhezustand, also
wenn der TX nicht aktiv ist ein Low-Signal auf dem Pin. Damit würde der
eine Sender den anderen blockieren. Man könnte das Problem mit PNP
Transistoren lösen, das wäre aber eine ungewöhnliche Variante.
 
Nico Hoffmann schreibt:

Nico Hoffmann schreibt:

ich möchte einen Servomotor Robotis AX-12A
(<https://emanual.robotis.com/docs/en/dxl/ax/ax-12a/>) über eine
serielle Schnittstelle bedienen. Die serielle Schnittstelle hängt an
einer SPS, daher kommen die von Robotis angebotenen Lösungen (IDE,
Contollerboard, ...) wohl nicht wirklich in Betracht, weil die darauf
abstellen, dass ein Stück Elektronik an einem PC hängt und von da
bedient wird.

Ich kenne mich mit den Details nicht wirklich aus, daher schildere ich
etwas ausschweifenden meinen Gedankengang:

Nun spricht der AX-12A ein serielles Protokoll (\"Half Duplex
Asynchronous Serial Communication (8bit, 1stop, No Parity)\"), das
Robotis freundlicherweise offengelegt hat, aber mit TTL-Pegeln,
d.h. Spannung zwischen 0 und 5 Volt.

Die RS232 hat RS232-Pegel, also zwischen -12V und +12V.

Ich brauche also einen Pegelumsetzer, typischerweise etwas wo der
MAX232-IC drin arbeitet. Die gibt es fertig zu kaufen. Aber im Manual
steht, dass es halbduplex sein soll, d.h. mit Richtungsumschaltung,
weil es nur eine Leitung für Senden und Empfangen gibt. Vgl. das
Schema in Kap. 5.4.1 im Manual, Link s.o.

Es gibt einen USB-TTL-Adapter von Dynamixel, d.h. Robotis, der
zusammen mit der Robotis-IDE den Dynamixel steuern können soll. Den
besorge ich mir mal. Das hilft mir zwar bei meiner SPS nicht weiter,
aber wenn ich den Dynamixel damit am PC zum Leben erwecken kann, werde
ich versuchen, die TTL-Seite über den MAX232 \"abzuhören\". Vielleicht
sehe ich dann, warum es nicht klappt.

So. Am U2D2 (der USB-TTL-Adapter, <https://www.robotis.us/u2d2/>)
läuft der AX-12A einwandfrei. Ich hab\' wie gesagt kein USB an der SPS.

Die Lösung ist derzeit, ein IoT-Gerät als Umsetzer zu mißbrauchen.
Das ist ein Raspberry-ähnlicher Einplatinencomputer, der u.a. eine
serielle Schnittstelle und eine USB-Host-Schnittstelle hat. Die SPS
häbgt an der seriellen Schnittstelle, und der U2D2 mit dem Servo am
USB. Die Daten werden einfach 1:1 durch das IoT und wieder zurück
geschoben.


Es ist natürlich mit Kanonen auf Spatzen geschossen, aber immerhin
funktioniert es.

Wenn mir die Finger jucken, kann ich immernoch einen Hardware-Umsetzer
basteln.

N.
--
Mephisto war kein Sachse.
 

Welcome to EDABoard.com

Sponsor

Back
Top