RS485 nicht symmetrisch!

Gast #4836742
Hallo!

Ich habe ein Problem mit der Datenübertragung zwischen 2 Arduinos:
Die Zwei sind mittels RS485 Transceiver verbunden, im Anhang der 
Screenshot vom LogicAnalyzer.
Wie man sehen kann sind die zwei RS485 Signale nicht symmetrisch!
Das Gelbe startet mit High, das Grüne mit Low. Soweit so gut!
Nach der Übertragung ist jedoch das Gelbe noch eine Zeitlang High.

Wie kann sowas sein?

Das Rote Signal ist der RXD-Pin vom Arduino, der natürlich eine 
Übertragung feststellt und die RXD-LED ständig leuchtet.

Sollte nicht der Transceiver das Signal automatisch symmetrieren?

Gruss aus Österreich, Hannes Schiller.

PS: Transceiver ist ein 65176B.
Angehängte Dateien:
Gast #4836756
Hab ich im Quelltext:

Serial.flush() //Warten bis Daten raus sind
digitialWrite(RS485,LOW) //Transmitter abschalten

Oder muss ich das anders formulieren?
(Firma: keine) #4836767
Sieht fast so aus, als ob Du bei der Richtungsumschaltung nicht beide 
Richtungen abschaltest, sondern nur eine. Jeder "normale" RS485 PHY hat 
je einen Eingang zum Aktivieren von Empfänger und Sender, 
intelligenterweise in der Regel invertiert, so dass Du mit einer Leitung 
zum Umschalten beider Pins auskommst, wenn Du sie zusammenschaltest. 
Manche Leute legen konstant den Receive Enable auf "immer an," manche 
steuern beide getrennt (dann must Du natürlich softwaremäßig beide 
Leitungen parallel runterziehen. Oder Rx immer aktiv lassen, aber die im 
loopback gelesenen eigenen Zeichen auf dem Bus ignorieren, was auch bei 
der "immer an" Variante der Fall ist).

Hast Du einen Schaltplan von der PHY Ansteuerung?
Gast #4836771
Ich hab die Daten vom LA decodiert, und gesehen, dass die Daten 
vollständig gesendet wurden.
Das Byte '171' wird übertragen und auch das Stop Signal kann ich sehen, 
wenn ich reinzoome.
Wie kann es überhaupt sein, dass beide RS485 Leitungen high sind?
Das ist doch normalerweise garnicht möglich oder?
#4836788
Bei abgeschaltetem Transmitter und vorhandenem Abschluss haben beide 
Leitungen den gleichen Pegel. Ein LA wird folglich auf beiden Leitungen 
den gleichen Zustand anzeigen.

Es ist also vielleicht alles in Ordnung und dein LA führt dich an der 
Nase herum.
#4836795
Hannes schrieb:
> Terminierung ist beiderseits 150 Ohm

Bei abgeschaltetem Sender hast Du dann 0V Differenz zwischen den beiden 
Leitungen. Daraus darf ein Empfänger machen, was er will, denn das ist 
undefiniert.
Eine richtige Terminierung hat an einer Seite noch Ziehwiderstände an 
Vcc und GND. Damit ist der Ruhepegel definiert. Siehe:
https://de.wikipedia.org/wiki/EIA-485#Technik
Gast #4836813
Warum leuchtet dann die RX-LED beim empfangenden Arduino die ganze Zeit?
Das mit den Widerständen hab ich schon versucht, je 470 Ohm nach VCC bei 
A und nach GND bei B, hat nix gebracht!
Problem bei der Sache ist, dass der Arduino nicht antworten kann, weil 
er die ganze Zeit empfängt.
Das mit den Ruhepegeln stimmt natürlich, habe mit dem Oszi nachgemessen.
#4836815
A. K. schrieb:
> Dietrich L. schrieb:
>> Daraus darf ein Empfänger machen, was er will, denn das ist
>> undefiniert.
>
> Nicht ganz. Es gibt eine kleine Hysterese. Bei 0V Differenz bleibt er im
> bisherigen Zustand.

Da hast Du völlig recht.
Aber jede kleine Störung/Reflektion kann den Zustand ändern und zu 
Fehlern des Auswertung führen. Daher ist der "Abschlusswiderstand mit 
Bias-Netzwerk" ja so wichtig und wird Hannes bei der Suche helfen, falls 
es eine andere Ursache für das beobachtete Verhalten gibt.
Gast #4836825
Fehler liegt nicht beim RS485, sondern beim Arduino!
Hab gerade das Oszi an den RX-Pin angeschlossen, da is keine Spannung im 
Ruhezustand!
Keine Ahnung wieso die blöde LED leuchtet, aber am Bus liegts nicht!
Gast #4836872
A. K. schrieb:
> Es ist also vielleicht alles in Ordnung und dein LA führt dich an der
> Nase herum.

Der RS485 Pegel ist die Differenz zwischen den beiden Signalen, der LA 
misst aber die Signale gegen GND. Er zeigt daher etwas Falsches an. Wenn 
das eine RS485 Signal 4,5V und das andere 5,5V hat, ist das für das 
differentielle Signal OK (> 200mV), für den LA sind beide High. Der LA 
ist ungeeignet, er müsste einen Differenzeingang haben.

MfG Klaus

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.