Arduino UART Verbindung zu Pumpe

Gast #6687600
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
#6687676
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.
Gast #6687680
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.
Gast #6687682
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.
#6687966
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
Gast #6688281
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.
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #6688295
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren