Forum: Mikrocontroller und Digitale Elektronik Arduino UART Verbindung zu Pumpe


von Dennis (Gast)


Lesenswert?

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

von Harry L. (mysth)


Lesenswert?

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.

von Helmut -. (dc3yc)


Lesenswert?

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.

von N. M. (mani)


Lesenswert?

Hast du nur RX und TX verbunden oder auch GND?

von Falk B. (falk)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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.

von Dennis (Gast)


Lesenswert?

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.

von Dennis (Gast)


Lesenswert?

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.

von Gerald K. (geku)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von N. M. (mani)


Lesenswert?

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.

von Rainer V. (a_zip)


Lesenswert?

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

von Dennis (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

Dennis schrieb:
> Common GND ist nicht vorhanden.
> Siehe Schematic anbei.

Da fehlt die Masse zwischen Arduino und Pumpe!

von Christian M. (christian_m280)


Lesenswert?

Dennis schrieb:
> Common GND ist nicht vorhanden.
> Siehe Schematic anbei.

Dann haben wir ja den Fehler! Du wurdest zweimal danach gefragt!

Gruss Chregu

von Dennis (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.