Forum: Mikrocontroller und Digitale Elektronik MAX485 - Kommunikations- und Pegelprobleme


von Peder (st_peter)


Angehängte Dateien:

Lesenswert?

Hi,

ich beiße mir zur Zeit die Zähne daran aus, eine RS485-Kommunikation 
zwischen einem µC und einem externen Gerät (Pfeiffer TPG366) 
herzustellen. In früheren Tests habe ich das schon einmal geschafft, 
aber ich kann es nicht mehr reproduzieren.

Ich habe meine Schaltung sowohl als PCB als auch minimal auf einem 
Steckbrett aufgebaut. Zu beiden Aufbauten gibt es jeweils einen 
Screenshot vom Oszi.

Zu sehen sind jeweils die Datenleitungen (lila/orange) und die Differenz 
(türkis). Ja, die Leitungen tauschen während der Messungen - ich hab die 
Sonden vertauscht, aber die Adern trotzdem m.M.n. korrekt angeschlossen.
In den Bildern sieht man eine kurze Anfrage vom µC, die ignoriert wird 
und eine davon unabhängige Sendung vom Gerät. Dieses Gerät sendet im 
Normalfall nach dem Einschalten kontinuierlich Messwerte, bis es ein 
erste Byte über RS485 empfängt. Dann stoppt es die Übertragung und 
wartet auf Befehle. Das passiert hier aber nicht.

Was auffällt, in Verbindung mit der Platine sieht das Signal vom Gerät 
auf der orangen Datenleitung ganz anders aus als die korrespondierende 
lila Datenleitung in Verbindung mit dem Steckbrett.

Woran kann das liegen bzw. ist das in Ordnung? Ist es wahrscheinlich, 
dass hier einfach ein Chip auf meiner Platine defekt ist?


Dann hätte ich noch zwei weitere Fragen:
- Im Datenblatt des MAX485 
(https://www.analog.com/en/products/max485.html) gibt es ein Bild 8 
"Driver DC Test Load" - dort gibt es zwei 27R-Widerstände zwischen den 
Datenleitungen. Sollen diese die beiden 120R-Widerstände simulieren, die 
es an den Enden des RS485-Bussen gibt? Weil 4*27 = 120R?

- Zu Pullups/Pulldowns scheinen die Meinungen auseinanderzugehen. Laut 
Datenblatt scheinen die nicht nötig zu sein, aber auch hier im Forum 
bilde ich mir ein, Gegenteiliges gelesen zu haben. Wie steht Ihr dazu? 
Welche Gründe gibt es, die doch einzusetzen?



Vielen Dank schon mal

Peter

von Icke ®. (49636b65)


Lesenswert?

Natürlich darf jeder seine Meinung haben, richtig ist jedenfalls:

- jeweils 120 Ohm Terminierung an den Enden des Busses
- BIAS-Netzwerk (Pullup/Down) einmal (und NUR einmal) irgendwo auf dem 
Bus

Die BIAS-Widerstände müssen so bemessen sein, daß mindestens 200mV 
Vorspannung anliegen, bei 5V sind das jeweils 470 Ohm.

Ohne BIAS-Widerstände nimmt der Bus zufällige Pegel an, wenn kein 
Teilnehmer sendet. Die Auswirkungen sind unvorhersehbar, sicher ist nur, 
daß die Busteilnehmer nicht gut darauf reagieren.

: Bearbeitet durch User
von Peder (st_peter)


Lesenswert?

Das werde ich mal ausprobieren. Danke!

Allerdings... Ist es nicht möglich, dass das externe Gerät in seiner 
Blackbox auch schon Pullups/Pulldowns verbaut hat?
Wenn ich auf den Datenleitungen jeweils zu VCC und GND die ~470R messe, 
ist das dann ein richtiges Indiz dafür?

von Harald K. (kirnbichler)


Lesenswert?

Die beiden Signale /RE und DE des Max485 musst Du auch irgendwo 
anschließen ...

von Icke ®. (49636b65)


Lesenswert?

Peder schrieb:
> Ist es nicht möglich, dass das externe Gerät in seiner
> Blackbox auch schon Pullups/Pulldowns verbaut hat?
> Wenn ich auf den Datenleitungen jeweils zu VCC und GND die ~470R messe,
> ist das dann ein richtiges Indiz dafür?

Ja und ja. Manche RS485-Devices haben nebem der Terminierung auch das 
BIAS schaltbar an Bord. Steht normalerweise in der Doku. Die 
Widerstandswerte können abweichen, sind i.d.R. aber unter 1kOhm.

von Vanye R. (vanye_rijan)


Lesenswert?

> Die beiden Signale /RE und DE des Max485 musst Du auch irgendwo

Hat er doch, hast du nur nicht gesehen. Ich wuerde sie wohl verbinden 
und nur einen anschliessen...

Ich wuerde auch den MAX3008 weglassen und stattdessen einen RS485 
Treiber nehmen der 3V3 kann.

Ausserdem wuerde ich GND durchverbinden. :-) GND wird nicht fuer die 
Datenuebertragung gebraucht, wohl aber fuer die physikalische Funkion 
der Driver. Besonders wenn vielleicht eine Seite auf 230V/2 von 
irgendeinem Schaltnetzteil liegt und die andere nicht.

Die Biaswiderstaende wuerde ich drauf machen nachdem ich weiss das die 
Software auch ohne gut funktioniert. Sie sind technisch naemlich nicht 
notwendig, dein SoftwareDriver muss erkennen wenn er "falsche" Bytes 
bekommt und sauber neu aufsetzen. Danach koennen die dann aber nicht 
schaden.

120R sind natuerlich okay und richtig wenn man 100m Kabel durch eine 
Industrieanlage schleift. Sind es nur 2-3m im eigenen Keller reichen 
auch 1k. Die 120R sind manchmal etwas unangenehm weil man da 90% der 
Energie der gesamten Schaltung drin verheizt.

Wenn das alles nicht hilft, mal AB vertauschen. Hat mich auch schon oft 
gehilft. :-D

Vanye

von Rainer W. (rawi)


Lesenswert?

Peder schrieb:
> - Im Datenblatt des MAX485
> (https://www.analog.com/en/products/max485.html) gibt es ein Bild 8
> "Driver DC Test Load"

Auf der verlinkten Seite gibt es kein Bild "Driver DC Test Load". In dem 
auf der Seite verlinkten Datenblatt gibt es eine Figure 4, die so heißt. 
Meinst du die?
Die angegebenen Daten beziehen sich auf die in den Messbedingungen mit 
Verweis auf Fig. 4 angegeben Werte für die Last R.
https://www.analog.com/media/en/technical-documentation/data-sheets/MAX1487-MAX491.pdf

von Peder (st_peter)


Lesenswert?

Rainer W. schrieb:
> Auf der verlinkten Seite gibt es kein Bild "Driver DC Test Load". In dem
> auf der Seite verlinkten Datenblatt gibt es eine Figure 4, die so heißt.
> Meinst du die?
> Die angegebenen Daten beziehen sich auf die in den Messbedingungen mit
> Verweis auf Fig. 4 angegeben Werte für die Last R.
> 
https://www.analog.com/media/en/technical-documentation/data-sheets/MAX1487-MAX491.pdf

Mein Fehler. Es ist der MAX485E 
(https://www.analog.com/en/products/max485e.html), aber die Grafik 
entspricht dann der Fig.4, ja.



Vanye R. schrieb:
> Ich wuerde auch den MAX3008 weglassen und stattdessen einen RS485
> Treiber nehmen der 3V3 kann.
Muss ich noch mal schauen. Da ich eigentlich immer bevorzugt mit 3,3V 
arbeite, fürchte ich, dass ich danach schon gesucht habe.
>
> Ausserdem wuerde ich GND durchverbinden. :-) GND wird nicht fuer die
> Datenuebertragung gebraucht, wohl aber fuer die physikalische Funkion
> der Driver.
Falls ich dich richtig verstehe, habe ich das so auch gemacht. Das 
Pfeiffer-Gerät hat an der RS485-Buchse 24V, die meine Platine versorgt. 
Insofern sind alle auf gleichem Ground.
>
> 120R sind natuerlich okay und richtig wenn man 100m Kabel durch eine
> Industrieanlage schleift. Sind es nur 2-3m im eigenen Keller reichen
> auch 1k. Die 120R sind manchmal etwas unangenehm weil man da 90% der
> Energie der gesamten Schaltung drin verheizt.
Guter Punkt. Ich habe tatsächlich eine sehr kurze Leitung <1m. 
Vielleicht lohnt es sich, die Widerstände mal nach unten zu korrigieren.

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.