Home
Elektronik am PC
Elektronik
Tutorials
Forum
Downloads
Vermischtes
Kontakt
Impressum











Home >  Tutorials  > COM Port No.1

1. Der COM-Port und die RS232-Norm
2. Zugriff in BASIC
3. Erste Schaltungen


1. Der COM-Port und die RS232-Norm

Die Steckbuchse des COM-Ports hat 9 Pins. Drei Ausgänge, fünf Eingänge und Masse. Der RxDAnschluss (Recieve Data) wird als Empfangs-Datenleitung verwendet und hier nicht weiter beschrieben.

rs232_pinbelegung


Die Masse ist sowas wie der Minuspol des COM-Ports, jedoch arbeitet dieser mit positiven und negativen Spannungen gegenüber der (eben deswegen so und nicht Minus genannten) Masse. Das ist Teil der sogenannten RS232-Norm.

Es gibt zwei Wege, die seriellen Schnittstelle anzusteuern. Zum Einen die zeichenorientierten Kommunikation mit RS232-tauglichen externen Geräten über den OPEN COM Befehl. Dabei werden zwar Anfangs solche Dinge wie Datentransferrate, Nutzung eines Stoppbits etc.festgelegt, die eigentliche Datenübertragung wird dann aber vom Rechner intern gesteuert. Der COM-Befehl wird in dem hier vorliegenden Tutorial nicht behandelt.

Es gibt aber auch die Möglichkeit, über die entsprechenden Steuerregister auf alle Leitungen - ausser den TxD-Eingang - direkt zuzugreifen. Diese Möglichkeit werden wir uns im Folgenden genauer anschauen.

Insgesamt besitzt der COM-Port neun Pins. Da neben der Masse insgesamt noch drei Ausgangs- und fünf Eingangsleitungen vorhanden sind, kann bei der hier beschriebenen Art des Gebrauchs auf TxD also leicht verzichtet werden.

In der Regel liegt an einem Ausgabepin bei AUS bzw. NULL eine negative Spannung von -12 Volt gegenüber der Masse an, bei AN bzw. EIN eine positive von +12 Volt. Die Werte können aber bei manchen Rechnern - vor allem Laptops - abweichen und z.B. nur +/- 3 Volt betragen. Die Eingänge wiederum lesen Spannungen von über + 1,25 Volt als EIN oder EINS, und solche unter + 1,0 Volt als AUS bzw. NULL. Die Differenz zwischen Ein- und Ausgangsspannung soll eine sichere übertragung garantieren, ist für unsere Bedürfnisse aber eher hinderlich.

Dazu später mehr. Grundsätzlich will ich mich aber mit elektrotechnischen Details zurückhalten und sie nur soweit behandeln, dass man's nachbauen kann. Wer tiefer einsteigen will, kann sich ja mal im Internet über die Funktionen von Transitoren, Logik-ICs, Zenerdioden usw. informieren oder bei mir nachfragen.



2. Zugriff in BASIC
Die einzelnen Bits, die den logischen Wert 1 oder 0 entsprechend EIN oder AUS der einzelnen Pins des COM-Ports enthalten und über die diese gesetzt bzw. ausgelesen werden können, liegen in festen Speicherzellen, den so genannten Steuerregistern.

Gelegentlich wird von Problemen bei der Ansteuerung der seriellen Schnittstelle durch DOS-Programme unter Windows NT/2000/XP berichtet. Ich habe derartige Probleme jedoch noch nicht feststellen können. Im Zweifelsfalle kann man seinen Rechner für COM-Anwendungen mit der Startdiskette unter DOS starten, was zusätzlich den Effekt hat, dass Programme viel schneller laufen.

Die Adresse der Steuerregister setzt sich aus Basisadresse (BA) und Offset zusammen. Die Basisadresse von COM 1 ist 1016 und für COM 2 gleich 760. Wenn's nicht so sein sollte, vielleicht mal die Einstellungen in der Systemsteuerung überprüfen.

Die Register enthalten je acht Bit. Die Werte für die Steuerleitungen DTR und RTS liegen auf dem ersten und zweiten Bit des Registers mit dem Offset 4. Je nach COM 1 oder 2 errechnet sich so die Adresse entweder als


1016 + 4 = 1020
oder
760 + 4 = 764



Im Folgenden benutze ich für Beispiele immer 1016 als BA (Basisadresse). Da das erste Bit ja für die Einer und das Zweite für die Zweier steht, schaltet der Befehl der Befehl



   OUT (1020) , 1    'nur den Ausgang DTR von COM 1 auf EIN,
   OUT (1020) , 2    'nur den Ausgang RTS.
   OUT (1020) , 3    'schaltet beide auf EIN (Bit 1 = 1 und Bit 2 = 1)
   OUT (1020) , 0    'schaltet DTR und RTS aus.



Der Ausgang TxD wird über das siebte Bit des Registers mit dem Offset 3 gesteuert.Das siebte Bit steht für die 64er.


   OUT (1019) , 64   'schaltet also TxD ein und
   OUT (1019) , 0    'wieder aus.


Der Zustand von DTR und RTS ändert sich dabei nicht,da diese ja in einem anderen Register liegen.



3. Erste Schaltungen
Da die Ausgangsströme auf 10 mA begrenzt sind lässt sich so schon direkt eine Leuchtdiode ansteuern. Natürlich auch eine IR-Diode um eine Fernsteuerung zu bauen oder ein Optokoppler als Treiberstufe.

Da an DTR im AUS-Zustand ja eine negative Spannung anliegt, leuchtet die Leuchtdiode auch wenn sie "verkehrt" herum eingebaut wird.Nur ist sie dann eben bei AUS ein- und bei EIN ausgeschaltet.Für die erste Funktionsprüfung ist das also ideal.

diode_1


Die vier Eingänge CTS,DSR,RI und DCD werden in dieser Reihenfolge über Bit fünf bis acht des Registers mit dem Offset 6 mit dem INP-Befehl abgefragt. Um diese Bits einzeln abfragen zu können, muss mit einer AND-Verknüpfung noch eine entsprechende Maskierung über den Wert von INP gelegt werden.


   ein = INP (1022) AND 16  'liest so also CTS aus

   ein = INP (1022) AND 32  'folglich den DSR-Eingang usw.Kleiner Tip:

   ein = INP (1022) AND 32  'wenn ihr nur 0 und 1 Werte haben
                            'wollt dann z.B. so:
   ein = INP ((1022) AND 128) / 128



Dabei muss die AND-Verknüpfung in Klammern gesetzt werden,da BASIC sonst zuerst 128 / 128 rechnet und dann INP (1022) AND 1 ...

Da die Ausgänge kurzschlussfest sind,läst sich eine einfache Schalterabfrage z.B ein Endschalter oder mit allen Eingängen (CTS-DCD) die vier Richtungen eines Joysticks ohne weitere Beschaltung realisieren.Bei der gezeigten Schaltung muss DTR natürlich eingeschaltet sein.

schalter


Kombiniert man diese ersten beiden Schaltungen,kann man mit einer Lochscheibe wie in einer mechanischen Maus schon Drehzahlen messen.

Um grössere Lasten wie z.B kleine Glühlämpchen zu schalten,braucht man eine externe Stromversorgung.Im Beispiel sind 12 V / 6 W angegeben.Diese Angaben beziehen sich auf den Transistor BD 137.Werden andere NPN-Transistoren benutzt, können natürlich auch andere Lasten geschaltet werden.Auf den 1k-Widerstand am Eingang kann verzichtet werden.Für die,die Schaltpläne nicht so gut lesen können - in der Anlage "Bilder" werden die Bauteile und ihre Anschlüsse genauer erklärt.

Die Diode 1N4148 leitet hier die negative -12 V Spannung im AUS-Zustand direkt an die Masse ab.

schaltung1


Um galvanisch getrennte Stromkreise wie z.B. den Märklin Modellbahn- Wechselstrom oder Netzspannung ( VORSICHT ! ) zu schalten,kommt man um die Verwendung eines Relais nicht herum.Das Relais kann über eine Transistor- schaltung wie oben gesteuert werden.Zu beachten ist dann aber,dass parallel zur Spule des Relais eine sog. Freilaufdiode geschaltet wird,da das Relais beim Ausschalten nochmal einen entgegengesetzen,evtl. sehr hohen Spannungsstoss abgiebt,der über diese zweite Diode abgeleitet wird.Aber Vorsicht ! Die Freilauf- diode muss unbedingt richtig herum eingebaut werden,da sie sonst die Relais- stromversorgung kurzgeschlossen wird.Man hat ja dann schon drei Stromkreise:


     - Den Steuerstrom zwischen DTR und Masse.

     - den Strom, der die Spulen der Relais versorgt (z.B. 5 oder 12 Volt) und
        dessen Masse mit derjenigen des COM-Ports verbunden ist und schliesslich

     - den ganz unabhängigen Stromkreis , der über das Relais geschaltet wird.


schaltung2


Einfacher geht's mit dem Treiber ( =Verstärker)-IC ULN 2803 (Conrad BestNr. 171824). Dieser hat 8 Treiberstufen, die jeweils bis 12 V / 500 mA belastbar sind und schon die Freilaufdioden eigebaut haben. Die Anschlussbelegung mit einem Schaltbeispiel für zwei Glühlämpchen (es könnten auch 2 Relais sein) findet ihr im Anhang unter "Bilder".

Im Prinzip enthält der IC acht komplette Transistorstufen. Zu beachten ist dabei nur, dass hier die Verbraucher (Lämpchen,Relais etc.) auf einem gemeinsamen Pluspol liegen und sozusagen die Verbindung zur Masse geschaltet wird. Folglich muss am Ausgang des ICs ein AUS-Signal ( 0 ) anliegen, um den Verbraucher einzuschalten. Aber die Ausgangswerte werden durch die im IC enthalte Schaltung auch negiert ( 1 = 0 und 0 = 1 ). Dadurch wird doch wieder durch eine 1 an DTR oder RTS die Lampe oder was auch immer eigeschaltet.

Kurzer Tip zum Löten von ICs: Da diese relativ hitzeempfindlich sind, solltet ihr erst einen Stecksockel (gibt's bei Conrad für alle Grössen) einlöten und dann den IC einstecken. Das hat auch den Vorteil, dass man die ICs, die teilweise mehr kosten als der Rest der Schaltung, für mehrere Anwendungen nutzen kann.