Da ich wusste, dass ich meine RS485-Schaltung verfeinern muss, habe ich gelesen. Ich habe eine Reihe spezifischer Fragen und hoffe, dass Sie mich verwöhnen, wenn ich beschreibe, wie ich versucht habe, eine Bewerbungsnotiz durchzuarbeiten.
Hier sind einige Grundlagen des seriellen Kommunikationssystems:
- RS485
- 115,2 kBaud, hauptsächlich durch die Mikrocontroller begrenzt
- Halbduplex (1 Differentialpaar plus Masse)
- Worst-Case-Kabel von Anfang bis Ende von ~ 80 m
- Worst-Case-Stichlänge von vielleicht 2 cm aufgrund der Leiterplattenspuren; keine Kabelstummel
- Daisy-Chained
- Anzahl der Mehrpunktgeräte von normalerweise 8, wahrscheinlich nicht mehr als 20
- Einige, aber nicht viel BER-Toleranz aufgrund der Prüfsumme im Signalisierungsprotokoll
- Alle Slave-Geräte sind SN65176 ; Der Master ist ein USPTL4 .
Angenommen, das von mir verwendete Kabel ist Belden 3106A , da es genau spezifiziert ist:
- Charakteristische Impedanz Zo = 120 Ohm
- Ausbreitungsgeschwindigkeit VP = 78%
Mein Abschlusskreis hat einige Iterationen durchlaufen:
- Einfache bidirektionale parallele Terminierung. Funktioniert überhaupt nicht, da der ausfallsichere Betrieb unterbrochen und falsche Startbits erzeugt werden.
- Bidirektionaler Abschluss, wobei die Masterseite einen einfachen parallelen Abschluss aufweist und der letzte Slave eine Schaltung aufweist, wie in AN-903 "Leistungsabschluss" beschrieben. Funktioniert immer noch überhaupt nicht: Die parallele Terminierung am Master stellt eine zu starke Gleichstromlast für den Master dar und unterbricht den ausfallsicheren Betrieb.
- Unbeendigter Master, letzter Slave mit "Power Termination" beendet. Es sieht aus wie das:
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Es funktioniert, ist aber aus mindestens zwei Gründen nicht ideal: Es gibt immer noch viel Gleichstromlast; und die Masterseite ist nicht impedanzangepasst / terminiert.
Für eine bessere Alternative halte ich TI AN-903 für "einen Vergleich der Differentialterminierungstechniken". Basierend auf Abschnitt 2 "Unbeendet",
Eine niedrige Geschwindigkeit ist im Allgemeinen entweder als Signalisierungsrate unter 200 kbit / s oder als wesentlich kürzer als die Bitbreite (Einheitsintervall) oder wenn die Signalanstiegszeit wesentlich kürzer als die Bitbreite (Einheitsintervall) ist ist mehr als das Vierfache der Einweg-Ausbreitungsverzögerung des Kabels (dh keine Übertragungsleitung).
Da 115,2 kBaud <200 kBaud ist, ist das erste Kriterium erfüllt. Für das zweite Kriterium zur Berechnung der Kabelverzögerung:
(80 m) / 0,78 c = 342 ns
Im Vergleich zur Bitbreite:
1 / 115,2 kBaud = 8,68 μs
Somit ist dieses Kriterium auch leicht zu erfüllen. Dies bedeutet, dass ich das Kabel möglicherweise als keine Übertragungsleitung behandeln könnte und keine Impedanzanpassung / -terminierung benötige. Ich möchte jedoch aus folgenden Gründen unabhängig davon eine Abschlussschaltung entwickeln:
- Es kann billig gemacht werden
- Es ist eine Lernmöglichkeit
- Es erhöht die Übertragungsqualität, auch wenn es nicht viel ist
- Falls die Kabelstrecke jemals stark verlängert werden muss, überlebt das System
- Das TI-Datenblatt empfiehlt es unbedingt:
Die Leitung sollte an beiden Enden in ihrer charakteristischen Impedanz RT = ZO abgeschlossen sein. Stichlängen außerhalb der Hauptleitung sollten so kurz wie möglich gehalten werden.
Ich möchte eine modifizierte Version von Abschnitt 5, AC-Kündigung, verfolgen. Bei meinen Systemparametern ist RT = 120 Ohm. Für CT heißt es in der App-Notiz:
CT wird andererseits so gewählt, dass es gleich der Umlaufverzögerung des Kabels geteilt durch den ZO des Kabels ist. CT ≤ (Kabelumlaufverzögerung) / ZO
Umlaufkabelverzögerung = 2 * 342 ns = 684 ns
CT ≤ 684 ns / 120 Ohm
CT ≤ 5,7 nF
Wählen Sie CT = 5,6 nF, die nächstgelegene Kapazität in der E24-Serie (5%).
Der App-Hinweis lautet außerdem:
Ferner sollte die resultierende RC-Zeitkonstante kleiner oder gleich 10% des Einheitsintervalls (TUI) sein.
(120 Ohm) (5,6 nF) ≤ 0,1 · 8,68 us
672 ns ≤ 868 ns
Dieser Kondensator sieht also in Ordnung aus. Ich sehe jedoch ein (großes?) Problem, das im App-Hinweis nicht erwähnt wird. Der Kondensator in Reihe mit dem Anpassungswiderstand macht die Impedanz des Anpassungsnetzwerks sehr ungleich der charakteristischen Impedanz des Kabels.
f = 115,2 kBaud / 2 = 57,6 kHz
120 Ohm + 1 / 2πj / 57,6 kHz / 5,6 nF = 120 + 493 j Ohm
Sollte ich nicht auch einen Serieninduktor hinzufügen, um diese Reaktanz aufzuheben?
493 Ohm / 2π / 57,6 kHz = 1,36 mH
Verwenden Sie den E24-Wert 1,3 mH. Dann:
120 Ohm + 1 / 2πj / 57,6 kHz / 5,6 nF + 2πj * 57,6 kHz * 1,3 mH = 120 - 22,9 Ohm
Diese Reaktanz kann mit einer genaueren Induktivität viel näher an Null gebracht werden.
Wenn ich eine Übertragungsleitung mit den gleichen Eigenschaften wie Belden und einer bidirektionalen RC-AC-Terminierung simuliere , scheint dies recht gut zu funktionieren. Wenn ich jedoch den Induktor hinzufüge, um die kapazitive Reaktanz aufzuheben, klingelt es schrecklich.
In Anbetracht all dieser Punkte sind meine Fragen:
- Ist meine Mathematik und meine Interpretation des Anwendungshinweises korrekt?
- Warum zeigt der AN keine bidirektionale AC-Terminierung an? Ist es gültig, an beiden Enden einer Mehrpunktleitung einen Wechselstromabschluss zu haben?
- Warum berücksichtigt der AN bei der Beschreibung der AC-Terminierung nicht die kapazitive Reaktanz?
- Der PC-seitige RS-485-Transceiver verfügt über einen nicht entfernbaren 4,7-k-Pullup in Leitung A und einen 4,7-k-Pulldown in Leitung B für einen ausfallsicheren Betrieb. Wäre dies mit der AC-Terminierung direkt daneben kompatibel?