Hallo, ich habe eine Problem bei der Verbindung von einem Arduino MEGA zu einer Pumpe über ein UART Interface. Die Pumpe hat folgende UART Charakteristik: Electrical Signal: 5Vdc TTL Level Baud Rate: 9600 bps Data Bits: 8 Parity: None Stop Bits: 1 Each message from the motor will end with a carriage return (ASCII: OD) Diese Charakteristik sollte ident mit der vom Arduino sein. Dementsprechend habe ich Arduino Tx mit Pumpe Rx verbunden und Arduino Rx mit Pumpe Tx. Über den Serial Monitor lässt sich nachvollziehen, dass das richtige gesendet wird. Jedoch kann die Pumpe mit diesem Arduino Output nicht arbeiten. In weiterer Folge habe ich einen Max232 dazwischen gehangen und jetzt funktioniert die Ansteuerung der Pumpe, jedoch kommen nur "Hieroglyphen" als response. Kann mit bitte jemand versuchen zu erklären, warum ich bei dieser Pumpenkonfiguration einen Levelconverter benötige, weil ja theoretisch eine direkte Tx/Rx Verbindung zwischen Arduino und Pumpe möglich sein sollte laut Charakteristik? Vielen Dank für euer Feedback. LG Dennis
Dennis schrieb: > Electrical Signal: 5Vdc TTL Level und Dennis schrieb: > einen Max232 dazwischen gehangen passt nicht. Entweder TTL oder RS232. Zudem invertiert der MAX232 noch dein Signal.
Wie lange ist denn die Leitung mit TTL-Pegel zwischen Arduino und Pumpe? Wenn sie länger als 10cm ist, musst du halt überall einen TTL-RS232-Konverter reinschalten. Für TTL sind die 10cm schon grenzwertig.
Dennis schrieb: > Each message from the motor will end with a carriage return (ASCII: OD) > > Diese Charakteristik sollte ident mit der vom Arduino sein. Ja. > Dementsprechend habe ich Arduino Tx mit Pumpe Rx verbunden und Arduino > Rx mit Pumpe Tx. Über den Serial Monitor lässt sich nachvollziehen, dass > das richtige gesendet wird. Jedoch kann die Pumpe mit diesem Arduino > Output nicht arbeiten. Weil die standardmäßige, serielle Verbindung vom Arduino am USB-Chip hängt. Wenn man die Pins zusätzlich an einen anderen UART anklemmt, geht das nicht. Der MEGA hat aber mehrere UARTs, da kann man einen der anderen für die Verbindung zur Pumpe nehmen. > In weiterer Folge habe ich einen Max232 dazwischen gehangen Aua! RS232 arbeitet mit +/-12V, deine Pumpe angeblich mit 5V CMOS. > und jetzt > funktioniert die Ansteuerung der Pumpe, Wirklich. Da stimmt etwas nicht. > Kann mit bitte jemand versuchen zu erklären, warum ich bei dieser > Pumpenkonfiguration einen Levelconverter benötige, weil ja theoretisch > eine direkte Tx/Rx Verbindung zwischen Arduino und Pumpe möglich sein > sollte laut Charakteristik? Gute Frage.
Helmut -. schrieb: > Wie lange ist denn die Leitung mit TTL-Pegel zwischen Arduino und Pumpe? > Wenn sie länger als 10cm ist, musst du halt überall einen > TTL-RS232-Konverter reinschalten. Für TTL sind die 10cm schon > grenzwertig. Totaler Quark, erst recht bei lumpigen 9600 Baud.
Die Leitung ist ca. 50cm. Wieso macht das auf diese Länge so einen Unterschied? Für mich passen jedoch TTL und Rs232 auch nicht zusammen aber nur mit dem converter bekomme ich eine Ansteuerung hin. Jedoch funktioniert der response nicht. Alles komisch.
Falk B. schrieb: > Weil die standardmäßige, serielle Verbindung vom Arduino am USB-Chip > hängt. Wenn man die Pins zusätzlich an einen anderen UART anklemmt, geht > das nicht. Der MEGA hat aber mehrere UARTs, da kann man einen der > anderen für die Verbindung zur Pumpe nehmen Ist schon auf Serial 2 gehangen. Funktioniert aber nicht.
Harry L. schrieb: > Zudem invertiert der MAX232 noch dein Signal. Aber vielleicht ist das gerade das Problem des TOs. Es ware möglich, dass die Polarität des TTL Signals nicht stimmt. Einmal zum Test einen Inverter dazwischen schalten. Gilt für beide Richtungen.
Wenn das CMOS UART in der richtigen Polarität ist, sollten im Ruhezustand beide Leitungen high sein (5V). Das gilt fürs TX der Pumpe als auch fürs TX des Arduino. GND wird ja wohl verbunden sein.
Matthias S. schrieb: > GND wird ja wohl verbunden sein. Hatte ich oben auch schon gefragt weil nur erwähnt wurde wie RX und TX verbunden ist.
Dennis schrieb: > aber nur mit > dem converter bekomme ich eine Ansteuerung hin Aber du bekommst sie doch gar nicht hin. Du schriebst doch, dass nur Müll zurückkommt...und was da passiert, was deine Pumpe nun anlaufen läßt, weiß der Himmel allein. Mit einem Oszilloskop könntest du das Protokoll und die Pegel auf den Leitungen bequem messen...ansonsten wirst du nur die Ruhepegel richtig bestimmen können. Aber das wären doch schon mal Infos. Als nächstes wäre wichtig zu wissen, was die Pumpe denn über die Schnittstelle erwartet. Wird da ein Protokoll abgefragt oder soll da einfach nur z.B. ein ASCII-Wert übertragen werden, der dann auch nur pro forma quittiert wird. Viel Erfolg und Gruß, Rainer
Rainer V. schrieb: > Dennis schrieb: >> aber nur mit >> dem converter bekomme ich eine Ansteuerung hin > > ansonsten wirst du nur die Ruhepegel richtig bestimmen können. Ruhepegel ist bei Arduino und Pumpe jeweils ca. 5VDC (GND to Tx) > Als nächstes wäre wichtig zu wissen, was die Pumpe denn > über die Schnittstelle erwartet. Wird da ein Protokoll abgefragt oder > soll da einfach nur z.B. ein ASCII-Wert übertragen werden, der dann auch > nur pro forma quittiert wird. Die Pumpe erwartet einen ASCII Befehl und sende auch eine ASCII response zu jeden Input Befehl. Übers debuggen ist ersichtlich, dass das richtige vom Arduino zur Pumpe gesendet wird aber der response sieht aus, als stimme die Baud Rate nicht (immer nur Fragezeichen und Kästchen). > GND wird ja wohl verbunden sein. > Hatte ich oben auch schon gefragt weil nur erwähnt wurde wie RX und TX > verbunden ist. Im Moment ist es nur ein Testaufbau, wie folgt. Arduino über USB powered, und Tx/Rx mit Pumpe verbunden. Pumpe wird über ein Spannungswandler versorgt und hängt an einem separaten AC/DC Netzteil. Common GND ist nicht vorhanden. Siehe Schematic anbei.
Dennis schrieb: > Common GND ist nicht vorhanden. > Siehe Schematic anbei. Da fehlt die Masse zwischen Arduino und Pumpe!
Dennis schrieb: > Common GND ist nicht vorhanden. > Siehe Schematic anbei. Dann haben wir ja den Fehler! Du wurdest zweimal danach gefragt! Gruss Chregu
Habe beide GND miteinander Verbunden und funktioniert :D Danke für eure Hilfe. Komisch aber trotzdem, warum die Ansteuerung mit dem MAX232 vorher funktioniert hat. #BlackMagic
Dennis schrieb: > Common GND ist nicht vorhanden. Fast jede Angabe zu irgendwelchen Spannungen an IO-Pins in fast jedem Datenblatt bei fast jedem IC bezieht sich auf GND. Also kannst du nicht "nur RX und TX" irgendwohin verbinden, weil die sich nämlich auf den GND beziehen, der sowieso verbunden sein muss. So ist z.B. auch ein OneWire-Bus in der Realität ein Zweidrahtbus, weil die Masse "sowieso" druchverbunden ist. Dennis schrieb: > laut Charakteristik? Wenn es Probleme gibt, dann miss mit einem geeingeten Messgerät die Spannungen an den Pins. Kontrolliere, ob die Spannungen sich so verhalten, wie es im Datenblatt angegeben ist. In deinem Fall ohne GND-Verbindung wird das nicht der Fall sein, sondern du wirst beliebige Störsignale und Netzbrummen auf den Leitungen sehen. Dennis schrieb: > Komisch aber trotzdem, warum die Ansteuerung mit dem MAX232 vorher > funktioniert hat. Zufall. Du kannst zufällig 100 mal mit einer roten Binde verbundenen Augen quer über eine Autobahn gehen. Und wenn du dann beim 101. Mal mit einer blauen Binde überfahren wirst, ist dann die Farbe der Binde schuldig? > #BlackMagic Nein, absolut nicht. Sondern #Datenblattnichtgelesenodernichtverstanden
:
Bearbeitet durch Moderator
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.