Forum: Analoge Elektronik und Schaltungstechnik MAX487: RS485 auf Ethernet-Kabel


von Bastler (Gast)


Lesenswert?

Hallo,

für einen Teststand möchte ich mit einem Raspberry Pi verschiedene 
ATmegas ansprechen.
Dazu soll UART über RS-485 dienen.
Auf dem Bus sollen später bis zu 100 ATmegas lauschen und nach 
Aufforderung vom Pi senden.
Deshalb wollte ich den MAX487 benutzen.

Als Kabel wäre mir aufgrund der günstigen Kosten und der Verfügbarkeit 
fertiger Kabel CAT6 STP am liebsten.

Allerdings ist mir aufgefallen, dass ich dann nur 100 Ohm 
Wellenwiderstand habe und deshalb anscheinend mit 100 Ohm terminieren 
muss.
Wird dann der Bus bzw. die MAX487 nicht überlastet?
Laut Datenblatt hat der MAX487 48k Eingangswiderstand und 100 davon sind 
zusammen mit 2 100 Ohm-Terminatorwiderständen an den Enden ungefähr 
45,3 Ohm. Bei 120 Ohm und 128 Teilnehmern (nornaler Bus) hätte ich aber 
51,7 Ohm, abgesehen von den Failsafe-Biaswiderständen.

Was mich an der Stelle jetzt irritiert: Der MAX487 gibt im Datenblatt 
keine definitive maximale Ausgangsleistung an. Im Graph Output Current 
VS High Voltage geht die Linie bis ca 100 mA. Damit kann ich dann den 
Bus nicht mehr wie geplant betreiben, weil durch die geringeren 
Terminatorwiderstände der MAX als Treiber überfordert wird?
Kann ich stattdessen mit 120 Ohm terminieren?
Muss ich das Failsafe-Bias in die Last auf dem Bus einbeziehen und wenn 
ja, wie?

Danke für alle hilfreichen Antworten.

von Praktiker (Gast)


Lesenswert?

Es stellt sich die Frage, ob du Papier befriedigen musst, oder es nur 
verlässlich funktionieren soll?

Bei kürzeren Längen und niedrigen Baudraten darf man auch hochohmiger 
terminieren.
Bei vielen Teilnehmern oder langen Leitungen kannst du auch Repeater 
einsetzen.

von Bauform B. (bauformb)


Lesenswert?

Das müssen nicht einmal Repeater sein, du kannst 2 oder mehr Transceiver 
quasi parallel schalten. Also RPi-seitig parallel und Kabelseitig treibt 
jeder ein eigenes Kabel mit entsprechend weniger Teilnehmern. Elektrisch 
reduziert sich die Last entsprechend, aber logisch ist es immer noch ein 
Bus. Es kann ja sowieso immer nur einer zur Zeit senden.

Am UART-Ausgang des RPi sind einfach alle Transceiver parallel 
angeschlossen. Die Empfänger kannst du auch parallel schalten, dann muss 
der RPi die Receiver getrennt enablen. Oder du nimmst ein AND mit 
entsprechend vielen Eingängen; das ist dann für die Software völlig 
transparent.

Bonus: mehrere Kabel vereinfachen die Fehlersuche. Im ersten Schritt 
steckt man Kabel am RPi ab und kann den Fehler schon mal auf die Hälfte 
(oder ein Drittel...) der ATmegas eingrenzen. Mit getrennten 
Enable-Signalen ginge der Schritt sogar in Software.

von Achim H. (pluto25)


Lesenswert?

Bastler schrieb:
> der MAX als Treiber überfordert wird?
Wird er nicht. Bei einer Stern Verdrahtung braucht auch jedes Ende einen 
Widerstand. Mit 5 Enden (24Ohm) gibt es keine Probleme(darunter nicht 
getestet)

von Falk B. (falk)


Lesenswert?

Bastler schrieb:

> Auf dem Bus sollen später bis zu 100 ATmegas lauschen und nach
> Aufforderung vom Pi senden.

Ganz schön viele.

> Deshalb wollte ich den MAX487 benutzen.

"The MAX487 and MAX1487 feature quarter-unit-load
receiver input impedance, allowing up to 128 MAX487/
MAX1487 transceivers on the bus."

Geht.

> Als Kabel wäre mir aufgrund der günstigen Kosten und der Verfügbarkeit
> fertiger Kabel CAT6 STP am liebsten.

OK.

> Allerdings ist mir aufgefallen, dass ich dann nur 100 Ohm
> Wellenwiderstand habe und deshalb anscheinend mit 100 Ohm terminieren
> muss.

Ja.

> Wird dann der Bus bzw. die MAX487 nicht überlastet?

Nein.

> Laut Datenblatt hat der MAX487 48k Eingangswiderstand und 100 davon sind
> zusammen mit 2 100 Ohm-Terminatorwiderständen an den Enden ungefähr
> 45,3 Ohm.

Rechne das mal getrennt. 100 MAX487 haben 480Ohm, das ist noch ~5xZ0 
(Wellenwiderstand). Das geht noch.

> Bei 120 Ohm und 128 Teilnehmern (nornaler Bus) hätte ich aber
> 51,7 Ohm, abgesehen von den Failsafe-Biaswiderständen.

Also nur 10% mehr.

> Was mich an der Stelle jetzt irritiert: Der MAX487 gibt im Datenblatt
> keine definitive maximale Ausgangsleistung an.

Wozu auch? Es gibt aber garantierte Pegel, mind. 1,5V Differenzspannung 
bei 27 Ohm Last.

> Bus nicht mehr wie geplant betreiben, weil durch die geringeren
> Terminatorwiderstände der MAX als Treiber überfordert wird?

Nein.

> Kann ich stattdessen mit 120 Ohm terminieren?

Das musst du sogar.

> Muss ich das Failsafe-Bias in die Last auf dem Bus einbeziehen und wenn
> ja, wie?

Wenn man sie richtig berechnet, sind das auch 100 Ohm.

https://www.mikrocontroller.net/articles/RS-485#Weitere_Hinweise

Für 100 Ohm sollte man folgende Werte nutzen.

R1=R3=470R
R2=110R

Rg=R2//(R1+R2)= R2*(R1+R3)/(R2+R1+R3)

von Roland F. (rhf)


Lesenswert?

Hallo,
Falk B. schrieb:
> Rg=R2//(R1+R2)= R2*(R1+R3)/(R2+R1+R3)

Kleine Korrektur:
> Rg=R2//(R1+R3)= R2*(R1+R3)/(R2+R1+R3)

rhf

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.