SN75176BP: serielle Daten über zwei Adern per RS-485

Die serielle Schnittstelle (UART) eines Mikrocontrollers funktioniert über einen Schreibtisch hinweg problemlos, doch über zig oder Hunderte Meter Kabel verfälschen Störungen und Massedifferenzen die Bits. RS-485 löst das, indem jedes Bit als Spannungsdifferenz zwischen zwei Adern übertragen wird. Der TI SN75176BP ist ein klassischer RS-485/RS-422-Transceiver im 8-poligen DIP-Gehäuse: ein Treiber und ein Empfänger, die sich dasselbe Adernpaar teilen. Diese Anleitung erklärt, wie differenzielle Übertragung funktioniert, was jeder Pin macht, und verfolgt ein Byte von Anfang bis Ende über den Bus.

Die Grundlagen: eine Differenz statt eines Pegels

Ein gewöhnliches Logiksignal ist massebezogen (single-ended): Der Empfänger vergleicht eine Ader mit seiner eigenen Masse. Koppelt ein Motor oder ein langes Kabel 2 V Störung auf diese Ader ein oder liegen die beiden Kabelenden auf leicht unterschiedlichem Massepotenzial, kann aus einer 0 eine 1 werden.

RS-485 ist differenziell. Der Treiber legt das Bit gegenläufig auf zwei Adern, A und B: Bei logisch 1 ist A höher als B, bei logisch 0 ist B höher als A. Der Empfänger wertet nur die Differenz A − B aus. Störungen, die in ein verdrilltes Paar einkoppeln, treffen beide Adern nahezu gleich; sie verschieben beide Spannungen, ändern die Differenz aber kaum. Der Empfänger des SN75176BP meldet eine 1, wenn A − B mindestens +0,2 V beträgt, und eine 0 ab −0,2 V und darunter, mit etwa 50 mV Hysterese dazwischen.

RS-485 ist außerdem ein Bus: Bis zu 32 Standard-Transceiver können am selben Paar hängen. Da ein Paar beide Richtungen trägt, darf jeweils nur ein Knoten treiben. Das nennt man Halbduplex, und deshalb hat der SN75176BP getrennte Freigabe-Pins für Treiber und Empfänger.

Die Pins des SN75176BP

Der SN75176BP ist die PDIP-8-Ausführung (Gehäuse P) des SN75176B. Die Logikpins liegen auf der einen Seite, Bus- und Versorgungspins auf der anderen (TI SLLS101I, Abbildung 4-1):

  • Pin 1 – R: Empfängerausgang. Logisch 1 bei A − B ≥ +0,2 V, logisch 0 bei A − B ≤ −0,2 V. Hochohmig (Z), wenn /RE high ist.
  • Pin 2 – /RE: Empfängerfreigabe, aktiv low. Low = R wird getrieben; high = R ist offen.
  • Pin 3 – DE: Treiberfreigabe, aktiv high. High = der Treiber treibt A und B; low = A und B sind freigegeben (Z).
  • Pin 4 – D: Treibereingang. Bei DE high macht D = 1 A high und B low; D = 0 macht A low und B high.
  • Pin 5 – GND und Pin 8 – VCC: eine einzelne 5-V-Versorgung (4,75–5,25 V).
  • Pin 6 – A und Pin 7 – B: der Bus. Treiberausgänge und Empfängereingänge sind im Chip miteinander verbunden.
Pinbelegung des SN75176BP im PDIP-8 in Draufsicht: Pin 1 R, 2 /RE, 3 DE, 4 D links; Pin 8 VCC, 7 B, 6 A, 5 GND rechts; Kerbe und Punkt markieren Pin 1.
SN75176BP in Draufsicht (Gehäuse P, PDIP-8), gezeichnet nach TI SLLS101I Abbildung 4-1.

Die Schaltung: zwei Knoten an einem Bus

Da DE aktiv high und /RE aktiv low ist, lassen sich beide Pins verbinden und von einem einzigen Mikrocontroller-Ausgang, RICHTUNG, steuern. RICHTUNG = 1 schaltet den Treiber ein und den Empfänger aus (Senden); RICHTUNG = 0 umgekehrt (Hören). Der TX-Pin des UART geht an D, sein RX-Pin kommt von R. Die Abbildung zeigt zwei solche Knoten, verbunden über ein verdrilltes Paar:

Zwei Knoten, jeweils ein 5-V-UART an einem SN75176BP: TX an D (Pin 4), RX von R (Pin 1) mit 10-kΩ-Pull-up, eine RICHTUNG-Leitung an DE (Pin 3) und /RE (Pin 2). A (Pin 6) und B (Pin 7) bilden ein verdrilltes Paar mit je einem 120-Ω-Widerstand an beiden Enden, 560-Ω-Bias-Widerständen an nur einer Stelle von A nach +5 V und von B nach GND sowie einer gemeinsamen GND-Leitung.
Unsere eigene Zeichnung eines minimalen RS-485-Busses mit zwei Knoten. Die Abschlusswiderstände sitzen an den beiden physischen Kabelenden; die Bias-Widerstände nur an einer Stelle.

Abschluss: Ein langes Kabel verhält sich wie eine Leitung mit einem Wellenwiderstand von etwa 120 Ω bei typischem verdrilltem Paar. Ein 120-Ω-Widerstand zwischen A und B an jedem Ende nimmt das Signal auf, statt es zu reflektieren (TI Abbildung 7-1). Bei wenigen Metern und 9600 Baud geht es oft auch ohne, aber es ist die richtige Gewohnheit.

Bias (Fail-safe): Sendet kein Knoten, sind alle Treiber aus und A und B schweben. Laut Funktionstabelle des Empfängers ist der Ausgang dann unbestimmt, und ein UART hält Störungen für Startbits. Zwei 560-Ω-Widerstände, A nach +5 V und B nach GND, halten den ruhenden Bus auf 5 V × 60 Ω / (560 + 60 + 560) Ω ≈ +0,25 V, denn die beiden 120-Ω-Abschlüsse ergeben parallel 60 Ω. Das liegt über der Schwelle von +0,2 V, also lesen alle Empfänger eine stabile 1 – genau den Ruhepegel des UART.

Pull-up an RX: Während ein Knoten sendet, ist sein eigenes /RE high und R offen. Ein 10-kΩ-Pull-up hält den RX-Pin des Mikrocontrollers in dieser Zeit auf Ruhepegel (1), statt Störungen aufzufangen.

Ein Byte Schritt für Schritt

  1. Ruhe. Alle RICHTUNG-Leitungen sind 0: alle Treiber aus, alle Empfänger ein. Das Bias-Netzwerk hält A − B bei etwa +0,25 V, also sind alle R-Ausgänge und RX-Pins 1.
  2. Bus übernehmen. Knoten 1 setzt RICHTUNG = 1. Der Treiber schaltet innerhalb von 120 ns (tPZH max.) ein und treibt, weil TX noch auf Ruhepegel 1 liegt, A high und B low: A − B springt an der 60-Ω-Last auf etwa +1,5…+2,5 V. Der eigene Empfänger von Knoten 1 ist jetzt aus, sein Pull-up hält RX auf 1.
  3. Startbit. Der UART sendet das Byte 0x55. Das Startbit setzt TX = D = 0, also polt der Treiber das Paar um: Jetzt ist B höher als A. Bei Knoten 2 liegt A − B weit unter −0,2 V, und höchstens etwa 35 ns später (Empfänger-tPHL) ist R = 0. Der UART von Knoten 2 erkennt die fallende Flanke und beginnt zu zählen.
  4. Datenbits. Der UART sendet Bit 0 zuerst. 0x55 ist binär 0101 0101, also gehen die Bits als 1, 0, 1, 0, 1, 0, 1, 0 hinaus. Jedes Bit polt das Paar um, und der R-Ausgang von Knoten 2 folgt D mit nur einigen zehn Nanosekunden Verzögerung – vernachlässigbar gegenüber der Bitzeit von 104 µs bei 9600 Baud.
  5. Stoppbit. TX = 1 für eine Bitzeit: A − B ist positiv, und Knoten 2 hat das vollständige Byte.
  6. Bus freigeben. Erst wenn das Stoppbit das Schieberegister vollständig verlassen hat, setzt Knoten 1 RICHTUNG = 0. Verwenden Sie das Flag Übertragung abgeschlossen (transmit complete) des UART, nicht Sendepuffer leer, sonst schneiden Sie das letzte Bit ab. Der Treiber wird hochohmig (tPHZ max. 250 ns), das Bias-Netzwerk zieht A − B zurück auf +0,25 V, und alle Empfänger lesen weiter 1. Jetzt darf Knoten 2 seine eigene RICHTUNG = 1 setzen und genauso antworten.
Zeitdiagramm eines Bytes 0x55 von Knoten 1 zu Knoten 2: DE und /RE gehen ein Bit vor dem Startbit auf high, D folgt Startbit, den Bits 1 0 1 0 1 0 1 0 und dem Stoppbit, A minus B schwingt bei eingeschaltetem Treiber zwischen etwa plus und minus 1,5 bis 2,5 V und ruht sonst auf plus 0,25 V Bias, und der R-Ausgang von Knoten 2 folgt D.
Eine Übertragung: Treiber einschalten, Startbit, acht Datenbits (niederwertigstes zuerst) und Stoppbit senden, dann den Bus freigeben. Zeitachse nicht maßstäblich.

Aufbau auf dem Steckbrett

Zwei SN75176BP reichen für eine funktionierende Verbindung auf dem Steckbrett, zum Beispiel zwischen zwei Arduino Uno, zwei 8051-Systemen oder einem Mikrocontroller und einem USB-Seriell-Adapter mit 5-V-TTL-UART. Sie brauchen:

  • 2 × SN75176BP (einer pro Knoten), jeweils mit einem 100-nF-Keramikkondensator direkt zwischen Pin 8 und Pin 5; TIs Layoutbeispiel ergänzt einen 1,5-µF-Kondensator an der Versorgung.
  • 2 × 120-Ω-Abschlusswiderstände, je einer an jedem Ende des Paares.
  • 2 × 560-Ω-Bias-Widerstände an nur einem Knoten (A nach +5 V, B nach GND).
  • 2 × 10-kΩ-Pull-ups von jedem R-Ausgang (Pin 1) nach +5 V.
  • Ein verdrilltes Paar für A und B – ein Paar eines CAT5-Kabels eignet sich gut – plus eine dritte Ader für die Masse zwischen den Knoten.
  • Software, die vor dem Senden RICHTUNG = 1 und nach dem Flag Übertragung abgeschlossen RICHTUNG = 0 setzt. Verbinden Sie an jedem Knoten A mit A und B mit B; vertauscht werden alle Daten invertiert.

Grenzen und Stolperfallen

  • Nur 5 V: VCC muss 4,75–5,25 V betragen. Die Eingänge D, DE und /RE haben TTL-Pegel (high ≥ 2 V), ein 3,3-V-Ausgang kann sie also ansteuern, aber der R-Ausgang ist ein 5-V-Signal: Schließen Sie ihn nicht direkt an einen Eingang an, der nur 3,3 V verträgt. Für ein 3,3-V-System nehmen Sie einen 3,3-V-RS-485-Transceiver oder einen richtigen Pegelwandler.
  • Gleichtaktbereich: A und B dürfen jeweils zwischen −7 V und +12 V gegenüber der Chipmasse liegen. Deshalb führt man trotzdem eine Masseleitung mit: RS-485 verträgt Massedifferenzen, aber nicht unbegrenzt. Zwischen Gebäuden gehören isolierte Transceiver hin.
  • Kein eingebautes Fail-safe: Ein offener, kurzgeschlossener oder ruhender Bus ergibt einen unbestimmten Empfängerausgang. Fügen Sie immer an einer Stelle Bias-Widerstände hinzu.
  • Nur einer spricht: Sind zwei Treiber gleichzeitig eingeschaltet, arbeiten sie gegeneinander. Strombegrenzung und thermische Abschaltung schützen den Chip, aber die Daten gehen verloren. Ihr Protokoll (etwa ein Master, der adressierte Slaves nacheinander abfragt, wie bei Modbus RTU) muss dafür sorgen, dass die Knoten abwechseln.
  • Strom und Temperatur: Der Chip zieht typisch 42 mA mit eingeschaltetem und 26 mA mit ausgeschaltetem Treiber – kein Low-Power-Baustein. Der SN75176B ist für 0–70 °C spezifiziert (der SN65176B für −40…+105 °C).
  • Geschwindigkeit und Länge: TI spezifiziert den Baustein für Busse bis 10 Mbit/s. Längere Kabel erfordern niedrigere Bitraten; bei 9600 Baud erreicht RS-485 typischerweise rund 1200 m, bei Höchstgeschwindigkeit nur kurze Strecken. Halten Sie Stichleitungen von der Hauptleitung zu jedem Chip kurz.
  • Die lagernden Bausteine sind Neuware aus Altbestand, unbenutzt und ungeprüft; testen Sie eine Verbindung auf dem Tisch, bevor Sie sie in ein Projekt einbauen.

Verwandte Anleitungen

Wie man einen Ausgang hochohmig schaltet, damit sich mehrere Bausteine eine Leitung teilen können, erklärt Schritt für Schritt SN74LS126AN: vier 3-State-Puffer an einem Bus, die Open-Drain-Alternative SN74LVC07A: Open-Drain-Puffer verstehen. Für einen UART am anderen Kabelende hat der 80C31 aus Einen vollständigen 80C31-Computer auf Steckbrettern aufbauen einen eingebaut, und 8051-Assembler: Einstieg mit DOS/51 zeigt, wie man ihn programmiert.

Quelle und lagernder Baustein

Alle Pinnummern, Funktionstabellen, Spannungspegel und Schaltzeiten stammen aus TIs Datenblatt SLLS101I (SN65176B, SN75176B, überarbeitet August 2025), das den SN75176BP als PDIP-8-Gehäuse (P) für 0 bis 70 °C führt. Die Diagramme sind unsere eigenen Zeichnungen; prüfen Sie das Datenblatt, bevor Sie ein Produkt um den Chip herum entwerfen.

TI SN75176BP im iMania-Shop · TI-Datenblatt SLLS101I (PDF)