Serielle Spielereien

Viele Elektroniker und technische Informatiker haben vermutlich mit einen Tutorial über die Serielle Schnittstelle angefangen. Zum Beispiel wie LEDs per Seriellen Schnittstelle an und aus schalten. In diesen Artikel beschreibe ich wie man dies bewerkstelligen kann.

Serielle Schnittstelle

Serielle Schnittstelle (Serial Port, RS232) damals an fast jeden Rechner, heute antiquiert. Der Vorteil gegen USB: Man kann recht einfach einzelne Pins ansprechen. Abgesehen davon wird sie auch heute noch zum programmieren von Mikrocontroller benutzt. Wie gesagt gehört sie heut nicht mehr zur standard Ausstattung von Computern, doch dafür gibt es simple USB-Adapter. Ich habe den hier Benutzt: Digitus DA-70156 (<10€).

Es gibt im Grunde 2 Ausführungen 9-Pin und 25-Pin, ich verwende den 9-Pin bei diesen sieht die Belegung wie folgt aus:

Pin Belegung

Pin Belegung - Stecker

  1. CD (input)
  2. RXD (input)
  3. TXD (output)
  4. DTR (output)
  5. GND (Masse, Minuspol)
  6. DSR (input)
  7. RTS (output)
  8. CTS (input)
  9. RI (output)

Da wir den Port erst einmal zweck entfremden, interessieren uns die einzelnen Bedeutungen der Pins nicht. Lediglich ob es ein Input/Output Pin ist, muss beachtet werden. Wir haben also 3 Output Pins zur Verfügung auf denen wir Strom legen können (3 TXD,4 DTR, 7 RTS).

Ansprechen der Schnittstelle – Code

Dies bewerkstelligen wir per C++, dort müssen wir aber das Rad auch nicht neu erfinden: In einen Forum habe ich vor einiger Zeit eine C++ File entdeckt die einfache Open, Get & Set Funktionen bietet. Die Credits gehen an Mynona (cport – Windows). So können wir z.B. Strom an den RTS Output einschalten, ein paar Sekunden warten, und wieder ausschalten:

#include <windows.h>
#include "cport.h"

int main() {
	ComPort comp; //erzeuge Objekt für Schnittstelle
	comp.SetOPEN(3); //Öffne COM3
	comp.SetRTS(TRUE); //RTS PIN Einschalten
	Sleep(3000) //Warte 3 Sekunden
	comp.SetRTS(FALSE); //RTS PIN Ausschalten
	comp.SetCLOSE(); //Schließe Schnittstelle
}

Serielle Schnittstellen bekommen die Namen COM1 – COM255. Meine USB-Schnittstelle hat bei der Installation die Nummer 3 erhalten (also COM3), dies kann man im Geräte-Manager in Erfahrung bringen oder ändern.

Das Ergebnis – LEDs Steuern

Welche Pins an und aus sind kann man mit dem kostenlosen Programm Free Serial Port Monitor beobachten oder man hängt einfach ein paar LEDs dran. Nur die Widerstände sollte man vorher nicht vergessen. Die Spannung bei der Seriellen Schnittelle liegt bei 12V. Ich hatte grüne LEDs diese brauchen lt. Datenblatt 2.2V und 20mA. Die Rechnung geht wie folgt:

(Betriebsspannung – Durchlassspannung) / Betriebsstrom = Widerstand
(12V – 2.2V) / 0.02A = 490Ω

Wenn man den passenden Widerstand nicht hat nimmt man den nächst größeren. Auf den Bild hab ich 1,5kΩ benutzt, ein wenig viel, aber die LEDs leuchteten stark genug. Man kann übrigens auch mehrere Widerstände addieren z.B. ein 220Ω + ein 330Ω. Wichtig: Ist der Widerstand zu gering kann nicht nur die LED kaputt gehen sondern der Widerstand wird glühend heiß! Wer nicht selber rechnen will der findet im Netz auch Widerstandsrechner.

Der Rest ist einfach, Bsp. RTS:
RTS (Pin 7) > Widerstand > LED > GND (Pin 5)

Hier habe ich alle 3 Outputs genutzt:

Und konnte mit ein kleinen selbst geschriebenen Programm alle 3 LEDs einzeln, mit meinen PC, an- und ausschalten. Zugegeben nicht sehr Spektakulär aber die LEDs lassen sich ja durch beliebige Bauteile austauschen. Übrigens habe ich auf den Bild provisorisch Klingeldraht über die Pins gestülpt – fürs experiementieren ging es ganz gut – für richtige Projekte kann man sich aber Buchsen Kaufen die man direkt anlöten kann (Stichwort:  Lötkelch).

Mit den jetzigen Stand könnte man zum Beispiel eine Status LED aufleuchten lassen wenn man eine Email bekommt oder ähnliches. Als nächstes kann man sich damit beschäftigen einfache Geräte zu Steuern oder Inputs auszuwerten.

Wie immer: für Fragen, Lob & Kritik nutzt die Kommentarfunktion.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.