Hallo,
ich würde gerne mit einem Attiny841 einen RS485 Bus aufbauen. Dieser
wird wahlweise mit 3V3 oder 5V betrieben.
Nun möchte ich für das ganze einen MAX485 einsetzen. Den RS485 möchte
ich mit 4 Adern aufbauen. A, B, GND und ca 12V.
Die 12V dienen hier auch als Versorgungsspannung für den Attiny. Die
Spannung wird mit 1117er auf 5 und 3V3 heruntergesetzt.
Nun bin ich aus dem Datenblatt nicht wirklich schlau geworden, wie die
Schaltugn auszusehen hat. Im Netz findet man Module, bei denen die
Datenleitungen mit PullUps (10k) auf VCC angehoben werden. Im Datenblatt
ist dort nichts zu finden.
RS485 funktioniert normalerweise differentiell als 2-Draht Bus ohne
Bezug zu VCC und GND Potenzial. Schau mal hier:
https://de.wikipedia.org/wiki/EIA-485
Hallo,
zunächst empfehle ich dir, bandbreitenbegrenzte Treiber zu nutzen,
sofern die Baudrate nicht über ca. 200kBaud liegen soll. Z.B. MAX483
statt MAX485.
In der Schaltung kannst du R9 auch gegen +5V beschalten.
Außerdem sollte R9 und R10 vom Wert etwas kleiner sein, z.B. 470R ...1k.
Diese Widerstände dienendazu, den BUS im passiven Zustand auf definierte
Ruhepegel vorzuspannen.
R8 dient der sogenannten Terminierung (BUS-Abschluss) und wird nur an
den beiden Enden des BUS beschaltet. BUS-Teilnehmer, die dazwischen
liegen, sollen keinen solchen haben.
Der Widerstand R8 kann dann auch etwas größer sein, wenn R9 und R10 vom
Wert her kleiner sind.
R8 Parallel zu (R9+R10) soll der Impedanz des Kabels entsprechen, bei
verdrillten Leitungen eben ca. 120 Ohm.
Die UART Leitungen Rxd (Pin1)und Txd (Pin4) haben immer Ruhepegel High
und sollten mit Pullup beschaltet werden.
Die Leitung an Pin2/3 wird aber besser mit einem Pulldown-R versehen,
so das "Read Enable" = Low im Restzustand aktiv wird und der Treiber den
den BUS nicht blockiert.
Wie ist da mit den Eingängen des uC - sind diese 5V-Tolerant?
Ansonsten müßtest du dir Gedanken um die Pegelanpassung von 5V auf 3,3V
machen.
Gruß Öletronika
Pete K. schrieb:> RS485 funktioniert normalerweise differentiell als 2-Draht Bus ohne> Bezug zu VCC und GND Potenzial.
Das wird auch durch ständiges wiederholen nicht richtig.
RS485 ist nicht galvanisch getrennt und hat natürlich einen Massebezug.
Auch das wird in dem von Dir verlinkten Wiki-Artikel erklärt.
Pete K. schrieb:> RS485 funktioniert normalerweise differentiell als 2-Draht Bus ohne> Bezug zu VCC und GND Potenzial.
Dann erkläre mal, wie ohne galvanische Trennung ein Empfänger mit einem
natürlicherweise begrenzten Gleichtaktaussteuerbereich ohne Massebezug
klar kommen soll.
Ja, das habe ich falsch beschrieben. Ich meinte, dass die beiden Signale
über zwei Drähte gehen, ohne dass Sender und Empfänger die GNDs oder VCC
verbunden haben.
Pete K. schrieb:> Ich meinte, dass die beiden Signale> über zwei Drähte gehen, ohne dass Sender und Empfänger die GNDs oder VCC> verbunden haben.
Aber nur, wenn sich der Potenzialunterschied zwischen den GNDs in einem
erlaubten Bereich bewegt. Also ganz schwebend (= keiner kümmert sich um
die Potenziale) geht (meist) nicht gut.
Gruß Dietrich
Pete K. schrieb:> Ja, das habe ich falsch beschrieben. Ich meinte, dass die beiden Signale> über zwei Drähte gehen, ohne dass Sender und Empfänger die GNDs oder VCC> verbunden haben.
Wie willst du dann sicherstellen, dass die in den Absolute /Maximum/
Ratings genannte Bedingung für die Eingangsspannung des Receivers
eingehalten werden? Es muss eine Beziehung innerhalb der im Datenblatt
beschriebenen Grenzen zwischen Gnd des Transmitters auf der einen Seite
und Gnd des Receivers auf der anderen Seite geben. Mit zwei Drähten
alleine funktioniert das nicht sauber.
Simon schrieb:> Nun bin ich aus dem Datenblatt nicht wirklich schlau geworden, wie die> Schaltugn auszusehen hat.
So wie im Datenblatt.
> Im Netz findet man Module, bei denen die> Datenleitungen mit PullUps (10k) auf VCC angehoben werden.
Das wäre dann Käse. (Eine Leitung nach '+', eine nach GND.)
Nennt sich, wenn's richtig gemacht ist: 'faile safe'.
> Im Datenblatt ist dort nichts zu finden.
Doch! Am Anfang steht, dass 'fail safe' schon eingebaut ist. Deshalb
sind natürlich auf dem Schema keine Widerstände zu sehen.
Die meisten RS485 Bausteine haben Fail-Safe-Widerstände eingebaut
(einfach mal nach "fail" im Datenblatt suchen, so dass externe
Widerstände nicht nötig sind, abgesehen vom Terminator.
>Die UART Leitungen Rxd (Pin1)und Txd (Pin4) haben immer Ruhepegel High>und sollten mit Pullup beschaltet werden.
Das widerspricht sich. Der Empfängerausgang ist undefiniert wenn RXE
high ist, also in der Regel im Sendemodus. Das weiß aber der µC und kann
den Empfänger abschalten -> kein Pullup nötig
Stefan
Ich wuerd den Empfaenger nie abschalten. Man muss die Meldung ja eh
verarbeiten und auf das Ziel, resp die ID des Empfaengers achten.
Das mit dem Potentialunterschied kann schwer in die Hose gehen. Wir
hatten mal den Fall, dass auch nur 2 Leiter verwendet wurden, und den
GND nahm man von der Erde, resp in diesem alten Haus war Erde=Null. Wenn
also der Liftmotor lief, gab das einen GND Offset, waehrend diesem die
Kommunikation nicht lief. Die Software war gut und hat Reties gemacht,
deshalb merkte man das lange nicht.
also. Falls man groessere Potentialdifferenzen erwartet, fuehrt man den
GND mit und macht die Potentialtrennung auf einer der beiden Seiten,
wobei man zB mit einem magnetischen Isolierer, wie einem ADuM1400 oder
so trennt und einen isolierten Switcher auf den mitgefuehrten GND
bezieht. Optokoppler sind nicht mehr angesagt, die ziehen zuviel.
Aeh. Ich wuerd RS422 bevorzugen, die 2 zusaetzlichen Leiter kosten
nichts, und man spart sich di Richtungsumschalterei.