Serielle Kommunikation
« | 24 Nov 2018 | »In den 90ern zählte die serielle Schnittstelle neben der parallelen Schnittstelle am PC zu den wichtigsten Anschlüssen neben Tastatur und Bildschirm.
Während Drucker am breiten parallelen Port hingen, war die wichtigste Anwendung des seriellen Ports, eine Computer-Maus an das Gerät anzubinden.
Noch viel wichtiger war die Schnittstelle aber in der Industrie und das ist sie teils heute noch.
Die PC-Maus war so eine Sache…
Eigentlich hatte IBM für Tastatur und Maus eine eigene Schnittstelle
geschaffen, nämlich PS/2.
Doch diese setzte sich am Massenmarkt erst Ende der 1990er durch, wurde aber
zeitgleich schon wieder von USB
abgelöst.
RS-232
Das was aus den seriellen Steckern hinten am PC rauskam, war
RS232. Die alten PC-Mäuse waren am
9-poligen D-SUB Anschluss des ersten
seriellen Ports angeschlossen, der auch gerne COM1
genannt wird.
Manche PCs besaßen auch einen zweiten seriellen Port (COM2
) oder noch
weitere. Hier wurde gelegentlich der alternative 25-polige Stecker benutzt,
der aber auch nicht mehr Leitungen belegte, der als 9-polige.
Über einen solchen COM2 habe ich seinerzeit meine erstes “kleines”
Netzwerk zwischen zwei PCs gebaut:
Die Computer wurden mit einem
Nullmodem-Kabel
verbunden und durch die DOS-Programme
[INTERLNK und INTERSVR](http://www.i8086.de/dos-befehle/interlnk-exe.html)
bedient.
Viele Geräte, von der Fernsehbox bis zur Produktionsmaschine, haben immer noch einen solchen Stecker und werden über unterschiedlichste Protokolle verwaltet, programmiert oder ausgelesen.
TTL
Wehe, man macht wie ich den Fehler, und glaubt “serielle Verbindungen” sind immer das gleiche.
So gut wie alle unsere Mikrocontroller unterstützen auch serielle Kommunikation, doch dabei handelt es sich selten um die in RS232 spezifizierten Spannungspegel. Nein, sie nutzen die Transistor-Transistor-Logik, kurz TTL.
Während RS232 am PC die Signale zwischen -12 Volt (logische 1) und +12 Volt (logische 0) definiert, arbeitet TTL z.B. beim Arduino UNO im Bereich 0 Volt (logische 0) und 5 Volt (logische 1).
Die Spannungen können auch variieren, bei RS232 von +/- 3 - 15 Volt, und bei TTL 2 - 6 Volt.
Nachdem RS232 mit negativen Spannungen arbeitet, TTL aber nicht, wäre das der erste zerstörerische Problemfall. Das kritischste Problem sind die Spannungen selbst: Eine 5 Volt MCU wird durch 12 Volt sprichwörtlich gegrillt.
Generell wichtig: Immer darauf achten, dass die Spannungen und
Stromrichtungen kompatibel sind!
Auch ich habe schon Plus und Minus verwechselt … mit ärgerlichen Folgen.
Das gilt auch für die serielle Kommunikation zwischen
Mikrocontrollern über TTL.
Der Arduino UNO sollte mit 5 Volt nicht direkt
mit einem Raspberry PI oder ESP8266 verdrahtet sein,
die nur 3.3 Volt auf ihren Leitungen fahren.
Hier hat man aber oft Glück. Die 1.6 Volt unterschied, haben zumindest bei mir noch keinen Chip zerstört und das schwächere Signal war stark genug um auch beim Empfänger lesen zu werden.
Gesund ist das aber nicht. Und deshalb sollte auf jeden Fall ein Spannungsteiler zwischen den TX Pin des Arduino und dem RX Pin des ESP oder Raspberry gesetzt werden.
Hat man 3 Widerstände zur Hand, deren 3. Ring rot ist, dann liegt der Widerstand zwangsläufig zwischen 1 bis 9 Kilo-Ohm. Das sollte für die Schaltung OK sein:
TX
(5 Volt) ->Widerstand
Widerstand
->Gabelung
-> RX
(hier sollten dann 3.3 Volt anstehen)-> Widerstand -> Widerstand -> Ground
(hier fließen die restlichen 1.7 Volt ab)
Und schon hat man die serielle Verbindung zwischen einem 5 Volt und 3.3 Volt Geräte einigermaßen gesichert hergestellt.
Für den allgemeinen Fall gibt es natürlich auch ordentliche Adapter, die zwischen USB, RS232 und TTL, und auch zwischen 3.3 und 5 Volt TTL konvertieren können.
Dein Elektrohändler des Vertrauens hat so etwas bestimmt im Angebot.