[b:15gwmf22]Die Anpassung der RS232 Schnittstellensignale
auf TTL-Pegel mit dem Integrierten Schaltkreis
MAX232.
[/b:15gwmf22]
[b:15gwmf22]
Da die Steuerung von Geräten mittels RS-232 wohl immer noch aktuell ist,
hier eine etwas gekürzte Fassung wie der MAX 232 einsetzbar ist um
die Signale der RS232 eines Rechners in TTL Signale zu verwandlen.[/b:15gwmf22]
Zur Info:
RS232 ist nich gleich TTL.
RS232 -> +/- 15V
TTL -> 0 - 5V
Für die serielle Datenübertragung verfügt der Computer über eine Schnittstelle, mit welcher er in der Lage ist mit anderen Geräten zu kommunizieren.
Die serielle Datenübertragung ist in der Norm RS232 festgelegt. Danach können über die Datenleitungen TxD (Transmit Data) und RxD (Receive Data) Bytes
als Folge von Bits digital übertragen werden. Für die Übertragung der Daten werden noch Parameter wie z.B. die Anzahl der pro Sekunde folgenden
Bits (Baudrate) benötigt. Diese Parameter werden mit Hilfe entsprechender Software an den seriellen Ein-Ausgabe-Baustein (UART-Universal Asynchronous
Receive and Transmit) übermittelt, der die Datenübertragung an der seriellen Schnittstelle (COM) steuert.
Der UART-Baustein gibt die Daten, die er über den internen Bus geliefert bekommt, als invertiertes schwaches Signal aus, was zur Folge hat,
daß es noch einmal durch einen invertierenden Treiber verstärkt werden muß. Dies ist notwendig, damit ein Signal mit einer Amplitude von
ca. 15V bzw. ca. 10V erzeugt werden kann.
Da diese Spannungspegel in der TTL-Technologie nicht verwendbar sind, muß eine Anpassung erfolgen.
In dem Projekt geht es nun darum die Anpassung des Pegels der seriellen Schnittstelle an die Pegel der TTL-Technologie zu verwirklichen.
Um diese uns gestellte Aufgabe in die Tat umzusetzen, ist es Sinn dieses Projektes eine geeignete Schaltung zu entwickeln, welche die Funktion übernimmt.
[b:15gwmf22]Die serielle Datenübertragung.[/b:15gwmf22]
Bei der seriellen Datenübertragung unterscheidet man zwischen synchronem und asynchronem Datenaustausch. Der Unterschied liegt darin,
daß bei der synchronen Übertragung über eine getrennte Leitung noch ein oder mehrere Signale übertragen werden, welche angeben, wann
das nächste Bit auf der Datenleitung gültig ist. Der Vorteil der synchronen Variante liegt in der Tatsache, daß der Empfänger auf
unterschiedliche Taktraten reagieren kann, solange eine maximal Frequenz nicht überschritten wird.
Bei der asynchronen Variante (der am häufigsten verwandten) wird die Synchronisationsinformation direkt in die Datenbits implementiert.
Dies setzt voraus, daß Empfänger und Sender mit der gleichen Taktfrequenz arbeiten müssen. Die implementierte Synchronisationsinformation
besteht zum einen aus einem Startbit, welches den Beginn einer Dateneinheit, und zum andern aus einem Stopbit, welches das Ende einer
Dateneinheit beschreibt. Eine serielle Dateneinheit SDU (Serial Data Unit) besteht, wenn man die Paritätsinformation, die auch vielfach
in der parallelen Datenübertragung vorkommt, noch hinzu nimmt aus einem Startbit, den Datenbits, einem eventuell vorhandenen Paritätsbit
und mindestens einem Stopbit.
Bei der Parität handelt es sich um einen zwar einfachen aber wenig effektiven Schutz gegen Übertragungsfehler.
Dies liegt darin begründet, daß durch die Parität nur einfache Bitfehler sicher und Bündelfehler mit mehreren gestörten Bits nur
mit einer 50% Wahrscheinlichkeit erkannt werden können. Daher ist die Parität hauptsächlich für kurze und störunanfällige Übertragungswege
geeignet. Auf Grund der hardwaremäßigen Unterstützung seitens der seriellen Schnittstellenbausteine ist sie gegenüber den zuverlässigeren
aber auch komplizierter zu berechnenden Alternativen wie dem CRC-Code im Vorteil. Man unterscheidet bei Parität fünf verschieden Varianten:
- keine Parität: es wird kein Paritätsbit eingefügt
- gerade Parität: das Paritätsbit wird so gesetzt, daß in den Datenbits und dem Paritätsbit zusammen eine gerade Anzahl von 1-en vorkommt
- ungerade Parität: das Paritätsbit wird so gesetzt, daß in den Datenbits und dem Paritätsbit zusammen eine ungerade Anzahl von 1-en vorkommt
- Mark: das Paritätsbit wird stets auf den Wert „1“ gesetzt
- Space: das Paritätsbit wird stets auf den Wert „0“ gesetzt
Die beiden Paritätszustände Mark und Space haben an sich keinen großen Nutzen, da sie nur einen Fehler im Paritätsbit selber erfassen können.
Über die Richtigkeit der Datenbits kann nichts ausgesagt werden, denn wenn das Paritätsbit unbeschädigt ist merkt der Empfänger nichts
von eventuell zerstörten Datenbits.
Eine weitere Größe bei der seriellen Datenübertragung ist die Baudrate, welche immer wieder zu Mißverständnissen führt.
Sie ist benannt nach dem französischen Mathematiker J.M.E. Baudot und bedeutet lediglich die Anzahl der Signaländerungen eines
Übertragungkanales je Sekunde. Bei den üblich verwendeten seriellen Schnittstellen sind die Signaländerungen zeitlich äquidistant
und die binäre Datencodierung sehr einfach, in diesem Fall ist die Baudrate, wenn man die Steuerbits mit berücksichtigt, gleich der
Anzahl der übertragenen Bits pro Sekunde (bps). Es ist jedoch mit Hilfe von Datenkompression und leistungsfähigen Codierungen möglich
Datenraten (in bps) zu erzielen die deutlich über der Baudrate liegen.
[b:15gwmf22]Beschreibung MAX232A[/b:15gwmf22]
Die spezifizierten hohen Spannungspegel der seriellen RS232-Schnittstelle können vom MAX232A im Treiber erzeugt und im Empfänger
in TTL- und CMOS- Pegel gewandelt werden.
Im MAX232A sind drei Sektionen integriert: Eine Duale Ladungs-Pumpe DC/DC-Konverter, zwei invertierende RS232 Treiber und zwei invertierende RS232 Empfänger.
Duale Ladungs-Pumpe DC/DC-Konverter:
Der MAX232A hat zwei interne Ladungs-Pumpen, die +5V in enstprechend höhere Spannungen für den RS232 Treiber wandeln.
Der erste Konverter nutzt die Kapazität C1 um die +5V zu +10V zu doppeln. Diese +10V werden durch C3 gepuffert und an PIN V+ ausgegeben.
Über C2 werden im zweiten Konverter die +10V in –10V an C4 und Ausgang V- invertiert. Eine kleine Leistung kann den Ausgängen +10V (V+) und –10V (V-)
zur externen Beschaltung entnommen werden. V+ und V- sind nicht geregelt, die Ausgangsspannungen sinken mit zunehmendem Entladestrom.
[b:15gwmf22]RS232 Treiber[/b:15gwmf22]
Der MAX232A stellt zwei unabhängige Treiberausgänge zur Verfügung. Die typische Treiberausgangsspannung ist bei Belastung mit nominal
5kOhm und Vcc=+5V bei ca. 8V angegeben. Damit werden die EIA/TAI-232E und V.28-Spezifikationen mit minimaler Ausgangsspannung 5V im „Worst-Case“ eingehalten.
Der „Worst-Case“ wird von MAXIM bei maximaler Arbeitstemperatur mit minimaler Belastung von 3k und Vcc=+4,5V angegeben.
Die zugehörigen Treibereingänge sind TTL- und CMOS-kompatibel. Nicht genutzte Treibereingänge können durch die interne Beschaltung mit 400kOhm nach Vcc
unbeschaltet bleiben. Durch diese „Pull-Up-Widerstände“ wird der invertierende Treiberausgang auf Low gehalten. Der interne Strom nach Vcc wird mit 12µA angegeben.
[b:15gwmf22]RS232 Empfänger[/b:15gwmf22]
Die EIA/TIA-232E und V.28 Spezifikation definieren einen größeren Spannungspegel +3V als logische 0. Der RS232-Empfänger invertiert das empfangene Signal.
Durch die auf 0,8V und 2,4V gesetzten Schaltschwelle wird das RS232-Signal logisch gleich auf TTL-Pegel gewandelt.
[b:15gwmf22]Schaltungsfunktion (siehe Bild)[/b:15gwmf22]
Die Spannungsversorgung VCC wird extern erzeugt und ist kein Bestandteil unserer Schaltung. Eine typische Eingangsspannung von +5V und die Betriebsmasse
werden dem Stecker J3 zugeführt. Die Bauteile IC1, IC2 und die LED D1 werden direkt von VCC versorgt. Die Dimensionierung der gewählten Bauteile erlaubt
eine maximale Abweichung der Betriebsspannung von ca. 10%. Die maximale Stromaufnahme überschreitet nicht 20mA, so kann ein stabilisiertes Kleinnetzteil
verwendet werden. Beim Anschluß der externen Spannungsversorgung ist auf die Polung zu achten.
Beschreibung der Bauteile:
Bauteil/Wert/Art/Funktion
C1/10µF/25V/Elektrolytkondensator/+ 10V Spannungsverdoppelung
C2/10µF/25V/Elektrolytkondensator/- 10V Spannungskonverter
C3/10µF/25V/Elektrolytkondensator/+ 10V Puffer
C4/10µF/25V/Elektrolytkondensator/- 10V Puffer
D1/2mA/2V/LED Low Current 3mm ROT/Anzeige der Low-Bit`s
IC1/MAX232A/Wandler für serielle Schnittstelle
IC2/74LS08/4xTTL UND-Gatter/ Treiber f. LED
J1/SUB-D 9pol. 90°/Anschluß der seriellen Schnittstelle
J2/2pol. Jumperblock/Schalter für TTL-Loop
J3/2pol. Jumperanschluß o. J. Anschlußstecker/VCC 5V und Masse
R1/1,5 KOhm 1/4W/Kohlewiderstand/Vorwiderstand f. LED
[b:15gwmf22]Bauteilliste[/b:15gwmf22]
Ein vom PC über die TXD-Leitung gesendetes Datenwort wird über J1 PIN3 direkt dem Empfänger des MAX232 über PIN13 zugeführt.
Am Empfängerausgang PIN12 wird das in den TTL-Pegel gewandelte und negierte Datenwort logisch richtig ausgegeben und durchläuft ein
erstes UND-Gatter im IC2 PIN1/2. Die hier eingesetzten TTL-UND-Gatter werden nur als Treiber genutzt und sind deshalb mit beiden Gattereingängen verbunden.
Mit dem zweiten UND-Gatter wird die „L“-aktive Low-Current-LED D1 mit dem Vorwiderstand R1 gegen VCC betrieben. D1 zeigt die „L“-Bits im Datenwort an.
Mit dem Jumper J2 wird die TTL-Schleife zurück zum MAX232 Treiber geschlossen. Hier kann der Jumper zur Kontrolle der Schleife unterbrochen werden.
Das TTL-Signal wird über J2 an den MAX232 PIN11 übergeben und im internen negierenden RS232-Treiber auf den nötigen Spannungspegel der seriellen Schnittstelle angepaßt.
Dieses RS232-Signal wird J1 PIN2 zurückgeführt und gelangt so über die RXD-Leitung des Schnittstellenkabel an die RS232-Schnittstelle des Test-PC.
Die Spannungen 10V für die RS232-Treiberstufe des MAX232 werden intern über die externen Kapazitäten C1-C4 erzeugt und stehen der Treiberstufe zur Verfügung.
Die nicht genutzten UND-Gatter des IC2 74LS08 sind nicht beschaltet.
Ein Abgriff des TX- und RX-Signals zur weiteren Verarbeitung im TTL-Pegel ist auch über J2 möglich.
Der Jumper kann so gegen ein 2 poligen Jumper-Stecker ersetzt werden.
Eine komplette Doku gibt es hier:
http://www.dg7eaz.de/assets/files/dokumax232.pdf
Weiterführend:
http://www.mikrocontroller.net/part/MAX232
Für Faule:
Pollin -> RS232-TTL-Wandler-Bausatz