DIY - RS232 TTL Wandler

1. Projektbeschreibung

Ziel des Projektes ist es einen RS232 TTL Wandler aus Transistoren und Standardbauelemente herzustellen. Der Wandler soll dabei die gültigen RS232 – Pegel erzeugen und erst auf die für RS232 gültigen Pegel reagieren. Der Wandler wird hierbei nur 2 Leitungen umfassen und sich auf die Rx und Tx Leitung beschränken.

 

1.1 Motivation

Der Standard RS232 wird häufig auch heute noch in der Industrie verwendet. Meine ersten Berührungen mit RS232 sind demnach auf Arbeit entstanden. Dabei werden ICs für die RS232 TTL Wandlung verwendet. Hierbei sind mir einige Interessante Punkte des ICs aufgefallen wie zum Beispiel, dass die ICs eine 5V Versorgungsspannung besitzen und Pegel von ca. -10V bis 10 V erzeugen. Auch die Rx Pegel sind Interessant da hier ein Hystereseartiges Verhalten gefordert ist. Wobei eine negative und eine positive Spannung als Schaltflanken vorgesehen sind. Bei meiner Recherche wie ICs funktionieren, fand ich nur Erklärungen für ICs, welche nicht die exakten RS232 Forderungen einhalten. Hierdurch wuchs die Idee meine eigene Schaltung zu entwerfen.

 

1.2 Was ist RS232

RS232 ist ein Übertragungsstandart der in den 1960ern entwickelt wurde. Die Bekannteste Variante nutzt einen 9 poligen D-Sub Stecker. Von den möglichen Signalleitungen werden häufig nur die TX und Rx Leitungen verwendet. Auf die 7 Steuerleitungen wird deshalb an dieser Stelle nicht eingegangen. Es existieren im Internet schon genügend Erklärungen für den gesamten Standard.

 

Die Signalspannungen können zwischen -15 und +15 Volt liegen. Bei einem richtigen RS232 – Wandler ist eine Spannung über 3 Volt eine logische Null und Spannungen unter -3V eine Logische Eins. Pegel dazwischen gelten als Undefiniert. Es existieren jedoch auch Pegelwandler die nur eine Signalspannungen 5V und 0V bereitstellen. Sie invertieren demnach nur das Eingangssignal. Sie funktionieren da viele Pegelwandler nicht auf die negative Spannung von -3V bestehen. In der Abbildung ist eine UART Übertragung (Blau) und eine entsprechende RS232 Übertragung (Gelb) dargestellt.

Die Übertragungsgeschwindigkeit richtet sich nach dem Kabeltyp und der Kabellänge. Häufig ist folgende Tabelle im Internet anzufinden. Sie gilt für ein ungeschirmtes Kabel. Jedoch besitzen andere Umweltfaktoren Einfluss auf die maximale Kabellänge.

Datenrate (kBd) Länge (m)
 2,4 900
4,8 300
9,6 152
19,2 15
57,6 5
115,2 < 2

Quelle:

    https://de.wikipedia.org/wiki/RS-232 zugriff am 15.12.2022

 

1.3 Vorüberlegungen

Das Projekt benötigt folgende Funktionen:

  • Eine Schaltung die aus 5V, 10V Spannung erzeugt
  • Eine Schaltung die aus 10V, -10V erzeugt
  • Eine Schaltung die auf die RS232 Pegel reagiert und erst den Zustand bei 3V oder -3V ändert
  • Eine Schaltung die aus UART Pegeln die RS232 Pegel erzeugt.

Nach ein wenig Recherche wird man als mögliche Lösung für die Spannungserhöhung, bzw. Invertierung auf den Begriff Ladungspumpe stoßen. Diese benötigen jedoch eine getaktete Spannung. Für die Schaltung wird noch eine Takterzeugung benötigt.

  • Schaltung für Takterzeugung

 

1.4 Benötigte Materialien

ID Bezeichner Gehäuse Stückzahl Bezeichnung
1 Q2,Q1,Q3,Q5,Q6,Q7,Q9,Q10,Q11,Q12,Q14 TO-92 11 2N3904_(EBC)
2 C6,C4 CP_Radial_D5.0mm_P2.50mm 2 1u
3 C1 C_Disc_D3.0mm_W1.6mm_P2.50mm 1 470p
4 C3 C_Disc_D3.0mm_W1.6mm_P2.50mm 1 100n
5 C5 C_Disc_D3.0mm_W2.0mm_P2.50mm 1 100n
6 C7 C_Disc_D3.0mm_W2.0mm_P2.50mm 1 15p
7 D1,D3,D4,D5,D6,D7,D8 D_DO-41_SOD81_P2.54mm_Vertical_KathodeUp 7 1N5818
8 D2 D_DO-35_SOD27_P2.54mm_Vertical_KathodeUp 1 D_Zener_2.7V
9 J1 PinSocket_1x06_P2.54mm_Vertical 1 Conn_01x06_Female
10 J2 TerminalBlock_Phoenix_MKDS-1,5-4-5.08_1x04_P5.08mm_Horizontal 1 Screw_Terminal_01x04
11 Q4,Q8,Q13 TO-92 3 2N3906_(EBC)
12 R1,R2 R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical 2 470k
13 R3 R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical 1 3k9
14 R4,R6,R11,R13,R14,R15,R17,R19,R20,R21,R22,R24  R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical 12 10k
15 R5 R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical 1 1k5
16 R7 R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical 1 47k
17 R8 R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical 1 100k
18 R9,R10,R16,R18,R23,R25 R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical 6 1k
19 R12 R_Axial_DIN0204_L3.6mm_D1.6mm_P2.54mm_Vertical 1 2k2
 
   

2 Schaltungen

2.1 Takterzeugung

Für die Ladungspumpe wird ein Takt mit relativ hoher Frequenz im kHz Bereich benötigt. Mein erster Gedanke war es eine A-stabile Kippstufe zu verwenden. Diese funktionierte die erste Zeit recht gut, nach einiger Zeit stabilisierte sich die Kippstufe leider. Nach ein wenig Recherche über Oszillatorschaltungen, bin ich auf etwas gestoßen das sich Ringoszillator nennt.

 

http://elektronik-labor.de/Notizen/Ringoszillator.html  letzter Zugriff am: 15.12.2022

 

Bei einem Ringoszillator handelt es sich um eine rückgekoppelt Verstärkerschaltung, die aufgrund ihrer hohen Verstärkung ins Schwingen gerät. Die Schaltung kann ohne Kondensatoren aufgebaut werden und benötigt eine ungeraten Anzahl an Transistoren.

Der hier dargestellte Ringoszillator, verwendet 3 NPN Transistoren vom Typ 2N3904. Die Auslegung erfolgte mit Hilfe von dem Simulationsprogramm LTSpice. Der Ausgang des Ringoszillators ist mit einem Kondensator getrennt. Dieser stellt einen Hochpass dar und trennt die Spannungen des Oszillator von der Taktstufe. Ohne die Trennung waren die Spannungen der Takterzeugung zu gering. Die Widerstände R7 und R8 steuern den Transistor Q14 vor.

 

Über die Kapazität C1 lässt sich das Tastverhältnis einstellen. Die Ladungspumpe arbeitete, in diesem Fall besser, wenn das Tastverhältnis weniger als 50% beträgt. Durch Simulation wurde ein Tastverhältnis von etwa 25% ermittelt, mit einer Kapazität C1 von 470pF. Für ein Tastverhältnis von 50% beträgt die Kapazität C1 1nF.

 

Die Schaltung erzeugt einen Takt mit einer Frequenz von 189 kHz.

2.2 Ladungspumpe für die 10V Spannungserzeugung

Die Ladungspumpe benötigt eine Wechselspannung um eine höhere Spannung zu erzeugen. Zur Erzeugung der Wechselspannung werden die Transistoren Q8 und Q9 verwendet.

 

Q8 ist ein PNP Transistor, welcher schaltet wenn an der Basis eine um etwa 0,7V kleinere Spannung anliegt als am Emitter. R12 und R13 bilden einen Spannungsteiler durch den an der Basis von Q8 eine Spannung von 4,1V Anliegt, wenn der Takt den Pegel 0V aufweist. Q9 schaltet wenn der Takt einen Pegel größer 0,7 V aufweist.

 

Hat der Takt einen high Pegel, schaltet Q9 und Q8 sperrt. Die Kapazität C3 kann über D5 laden. Hat der Takt einen low Pegel, schaltet Q8 und Q9 sperrt. Die Ladungen der Kapazität C3 kann sich durch die Diode D5 nicht ausgleichen. Dies kommt einer Reihenschaltung von zwei Spannungsquellen gleich. So liegen für die Taktzeit etwa 10 V an. D6 und C4 bilden einen Gleichrichter, welcher die Spannung stabilisiert. Diese Schaltung funktioniert nur für geringe Lastströme.

 

2.3 Ladungspumpe für die -10V Spannungserzeugung

Mit leichten Änderungen, kann die Schaltung Spannungen invertieren. Aufgrund des etwas höheren Schaltungsaufwands für den PNP Transistors (Grund sind die höheren Spannungspegel als der Takt), wurde dieser durch einen Widerstand ersetzt. Die Schaltung ist hierdurch zwar einfacher, die Belastbarkeit der Schaltung ist jedoch geringer.

 

Liegt der low Pegel an Q12, sperrt der Transistor und es sammeln sich auf der linken Seite von C5 positive Ladungen an. Die positiven Ladungen auf der rechten Seite können über D7 abfließen.

 

Liegt der high Pegel an Q12 an, schaltet der Transistor durch und an der linken Seite der Kapazität liegt GND Potential an. Durch D7 können sich die negativen Ladungen auf der rechten Seite nicht ausgleichen. Es resultiert eine gegen GND negativere Spannung.

 

D8 und C6 bilden einen Gleichrichter. Wenn für C6 ein ELKO verwendet wird, ist zu beachten das der Ausgang des Gleichrichters eine negative Spannung hat. Die positive Seite des ELKO ist gegen GND zu schalten.

 

2.4 RS232 Tx Treiber

Der Tx Treiber schaltet mit Q13 (PNP Transistor) die erzeugten 10 V gegen den Ausgang. Wenn Q13 nicht aktiv ist, sorgt der pull down Widerstand R24 für die negative Ausgangsspannung. R25 und C7 stellen eine Anstiegsbegrenzung des Signals dar. Es wurde sich für einen PNP Transistor entschieden, da sich die Schaltung hierfür einfacher umsetzen lässt. Ein NPN Transistor mit dem Emitter gegen -10V ist schwieriger, da an der Basis mit Signal GND die Spannung noch um 0,7V größer ist als am Emitter.

 

R21, R22 und Q11 ist die benötigte Schaltung für den PNP Transistor. Ist Q11 geschaltet, liegt an der Basis von Q13 eine niedrigere Spannung als am Emitter an. Ist Q11 gesperrt, gleichen Basis und Emitter Potential von Q13 sich und der Transistor ist gesperrt.

 

Q10, R18 und R17 stellen die Invertierung des UART Signals dar.

 

2.5 Rx Treiber

Die Empfängerseite muss die Pegel 3V und -3 V erkennen. Es darf dabei kein Wechsel am Ausgang zwischen -3 und 3V stattfinden. Um dieses Verhalten zu gewährleisten wird ein RS – Flipflop verwendet.

 

2.5.1 Positive Flankenerkennung

Für die positive Flankenerkennung wird ein einfacher Transistor Komparator verwendet. Der npn - Transistor ist voll durchgeschaltet, wenn an seiner Basis eine Spannung von etwa 0,6 V anliegt. Die Schaltschwelle wird über den Spannungsteiler über R3 und R5 eingestellt.

Durch einsetzten der Widerstandswerte und umstellen der Gleichung nach der Schaltschwelle, ergibt sich ein Wert von 2,16V. Über die Diode D1 fällt noch eine Spannung von ca. 0,25V ab. Somit wird eine positive Flanke ab etwa 2,5V erkannt.

 

Die Diode verhindert, dass bei negativen Spannungen diese nicht an der Basis des Transistors anliegt. Ist der Transistor durchgeschaltet, wird die Basis von Q6 des Flipflops gegen GND gezogen und der Transistor Q7 schaltet. Das UART Signal ist invertiert zum RS232 Signal.

 

2.5.2 negative Flanken Erkennung

Für die negative Flankenerkennung wird eine Zenerdiode und eine Diode verwendet. Die Diode D3 verhindert, dass positive Potentiale bis zur Basis von Q4 durchdringen. D2 schaltet durch, wenn die R232 Signalspannung um 2,7V geringer ist als an der Basis von Q4. Bei dem Transistor handelt es sich um einen PNP Transistor. Dieser leitet, wenn seine Basis negativer ist als sein Emitter.

 

Ist im RS-Fliflop Q7 geschaltet, liegen am Emitter von dem PNP Transistors Q4 (Reset) etwa 0,6V an. Liegt eine negative Flanke an, wird die Basis von Q7 gegen GND Potential geschaltet. Q6 des Flipflops kann nun schalten.

 

3 Test des Wandlers

Der Wandler zeigte bei einer Übertragungsrate von 115200 Baud und einer Kabellänge von 2 Meter erste Übertragungsfehler. Bei 57600 Baud war der Test erfolgreich. Für den Test wurde an die Platine ein USB zu UART Wandler angeschlossen. Mit diesem konnte die Verbindung zwischen PC und RS232 Wandler hergestellt werden. Wird RX und TX der RS232 Seite kurzgeschlossen fällt die Spannung auf -3V ab. Die Negative Ladungspumpe kann hier nicht genügend Strom liefern um den negativen Spannungspegel von etwa -9V aufrecht zu erhalten.

Da die Negative Spannung beim TX Treiber über einen Widerstand gepullt wird, ist die Abfallende Flanke deutlich langsamer als die steigende Flanke.