Forum: Mikrocontroller und Digitale Elektronik RS485-Multiplexer


von Mark U. (residuum)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ein Mikrocontroller mit einem UART soll mehrere RS485-Geräte auslesen. 
Es ist nicht möglich, alle RS485-Geräte auf einen Bus zu legen, da sich 
dabei einzelne Geräte aufhängen. Anscheinend kommen sie nicht mit den 
Protokollen der andern Geräte nicht klar.

Es könnten mehrere Transceiver eingesetzt werden, die auf TTL-Seite 
zwischen Mikrocontroller und Transceiver gemuxt werden. Dies benötigt 
aber mehr Platz auf der Platine und auch mehrere DC-DC-Wandler (einzelne 
Kanäle sollen voneinander isoliert sein).
Stattdessen würde ich gerne folgendes versuchen:

Ein Transceiver (durch DC-DC Wandler galvanisch vom Mikrocontroller 
getrennt, alle Signale dahinter laufen über Opto-Koppler) bedient alle 
Kanäle. Dazu wird ein analoger Multiplexer verwendet, der Signale von 
+/-12V schaltet. So werden von jedem RS485-Kanal die Signale A, B und 
auch GND zum Transceiver geschaltet. Der Abschlusswiderstand (120 Ohm) 
befindet sich auf Seite des Busses ebenso wie die nicht gezeichneten 
Schutzdioden.

Jetzt meine Frage: Der Multiplexer hat für die geschalteten Signale 
einen Widerstand von ca. 100 Ohm. Dadurch stimmt dann aber der gesamte 
Abschlusswiderstand (120 Ohm + Widerstand Mux) nicht mehr.

Wie kann ich so einen Multiplexer aufbauen, dass die Anpassung korrekt 
ist?
Bzw. wäre es besser, die Anpassung zwischen Multiplexer und Transceiver 
zu schalten?

Vielen Dank schon mal.
Gruß
Markus

von Pandur S. (jetztnicht)


Lesenswert?

Was soll ein Mux ?
RS485 ist ja genau deswegen Halbduplex, weil man verschiedene Sender und 
Empfaenger zusammenschliessen will. Es braucht keinen Mux, wenn sich 
alle Teilnehmer an das Protokoll halten.

Aha, es gibt mehrere Master, obwohl es nur einen geben duerft, dh ein 
starres Singlemaster System wurde auf Multimaster "erweitert" ohne das 
es dies merken sollte... Dann nimm Relais.

von Peter D. (peda)


Lesenswert?

Markus E. schrieb:
> einzelne
> Kanäle sollen voneinander isoliert sein

Das kann kein Multiplexer.
Du kannst aber Opto-MOS nehmen, z.B. ASSR-1218.

von Mark U. (residuum)


Lesenswert?

Das Problem ist eben genau das, dass sich nicht alle Teilnehmer an ein 
Protokoll halten bzw. tolerant gegenüber anderen Protokollen sind.

Das habe ich leider nicht bedacht, dass mit dem Multiplexer die 
Isolation der Kanäle voneinander verloren geht.
Die Opto-MOS schaue ich mir gerne mal an. Danke für den Tip.

von Strubi (Gast)


Lesenswert?

Moin,

das ist ein recht gefährliches Unterfangen, je nach uC. Da musst du das 
Verhalten des UART-Interface bzgl. RS485 genau kennen, ansonsten rennst 
du ev. in Timing-Schwierigkeiten, wenn du nicht zu einem genau 
definierten Zeitpunkt den Muxer umschaltest. Du kannst da natürlich über 
externe Interrupteingänge was frickeln.
Genauer: manche UART-Implementierungen signalisieren: Daten sind raus 
(aber sie sind noch im FIFO). D.h. der uC-Master ist eigentlich noch im 
Transfer, und du schaltest dann schon bereits den Muxer um -> Bumm :-)

Ansonsten ist das noch knackig, die Teilnehmer untereinander 
galvanisch zu trennen. Da brauchst du eigentlich fast zwingend für jeden 
Kanal DC/DC und Isolatoren sowieso, wenn die ganzen unterschiedlichen 
GNDs potentialfrei sein sollen. Eigentlich sollten die Teilnehmer 
jeweils die Trennung beinhalten. Klingt für mich nach hässlichem 
Workaround...

Der Abschlusswiderstand als solcher wäre sonst nicht kritisch, würde ich 
sagen. 100 Ohm seriell hast du bei einer langen Leitung schnell mal 
beisammen..

von Dieter W. (dds5)


Lesenswert?

Vielleicht kämen auch 485 Treiber mit galvanischer Trennung in Frage, 
z.B. TI ISO1176 oder was von Analog Devices.

http://www.analog.com/en/products/interface-isolation/rs-232-rs-422-rs-485/isolated-rs-485.html

Den MUX kann man sich sparen durch Enable der einzelnen Treiber.

von Simon (Gast)


Lesenswert?

Markus E. schrieb:
> Das Problem ist eben genau das, dass sich nicht alle Teilnehmer an
> ein
> Protokoll halten bzw. tolerant gegenüber anderen Protokollen sind.
>
> Das habe ich leider nicht bedacht, dass mit dem Multiplexer die
> Isolation der Kanäle voneinander verloren geht.
> Die Opto-MOS schaue ich mir gerne mal an. Danke für den Tip.

Brauchst du denn überhaupt eine richtige Trennung der Kanäle oder ist 
deine Intention nur, dass die von einander nicht so viel mitkriegen 
sollen, also mehr Verhinderung von crosstalk als galvanische Trennung? 
Ersteres ist mit dem Analog Multiplexer meist ein geringes Problem.

von Mark U. (residuum)


Lesenswert?

Die Kanäle müssen schon galvanisch getrennt sein.

Ich werde mal einen Test-Aufbau mit ASSR-1218 machen, das sieht 
vielversprechend aus.

von Cyborg (Gast)


Lesenswert?

Ein Differenzsignal-System kann man nicht muxen.
Die Trennung von GND lässt das nicht zu.

von Georg (Gast)


Lesenswert?

Cyborg schrieb:
> Ein Differenzsignal-System kann man nicht muxen.
> Die Trennung von GND lässt das nicht zu

Das ist natürlich barer Unsinn - für den Empfänger müssen die Signale in 
einem bestimmten Spannungs-Bereich um GND des Empfängers liegen, näheres 
in der Norm bzw. im Datenblatt. Ein Multiplexer muss nur den gleichen 
Bereich abdecken wie der Empfänger.

Dass RS485 ohne jeden GND-Bezug funktioniert ist ein Märchen, das auch 
durch ständige Wiederholung nicht wahr wird. Das ist völlig anders als 
bei Ethernet, wo auf beiden Seiten ein Transformator sitzt.

Georg

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.