BASISKURS
Elektronik am PC
Elektronik-Experimente an der seriellen Schnittstelle
(Teil 4)
Von Burkhard Kainka
Bisher wurden die Eigenschaften der RS232-Ausgänge genauer betrachten.
Nun sind die Eingänge dran. Die Norm ver-
langt, dass Eingangsspannungen von mehr
als +3V als High-Signal erkannt werden,
solche von weniger als -3V als Low-
Signal. Dazwischen ist der Pegel nicht
eindeutig bestimmt.
Schaltschwellen chende 1489A hat einen kleineren
bleibt jeweils der Widerstand RF. Bei ihm liegen die
zuletzt erkannte Schaltschwellen bei 1V und 1,95 V.
Zustand bestehen.
Laut Datenblatt liegt
Messungen
die untere Schwelle für den
1489 bei 1 V, die obere bei 1,25 V, Der 1489 stellt praktisch den Standard
jeweils mit einer möglichen Streu- für RS232-Eingänge dar. In modernen
ung von Ä…0,25V. Der etwas abwei- PCs ist der Leitungsempfänger meist
Typische RS232-Einsteckkarten verwendeten
VCC
meist Leitungsempfänger vom Typ 1489 (Bild
14
MC1489 MC1489A
1). Das IC benötigt nur eine einfache
R 6k7 1k6
F
Betriebsspannung von 5 V. Die Innenschal-
tung zeigt eine einfache Schaltstufe mit drei R
Response Control Output
F
2 3
Transistoren. Man erkennt , dass die tatsäch-
liche Schaltschwelle nicht weit von der Basis-
Emitterschwelle bei etwa 0,6 V liegen kann.
Betrachtet man auch den Eingangs-Span-
nungsteiler von 3k8/10 k, so kommt man auf
Input
etwa 0,8 V. Vom Ausgang der zweiten Tran-
1
3k8
sistorstufe zur Basis des ersten Transistors
führt aber auch noch der Widerstand RF.
GND
Damit ergibt sich eine Rückkopplung, die ins-
7
gesamt das Verhalten eines Schmitt-Triggers
000074 - 4 - 11
bewirkt. Es gibt also zwei Schaltschwellen,
eine für ansteigende Spannungen und eine
für abfallende Spannungen. Zwischen den
Bild 1. Innenschaltung des 1489 (Quelle: Motorola).
38 Elektor 12/2000
9k0
5k0
1k7
10k
BASISKURS
anders interpretiert. Es ist daher inter-
+10V
RTS
essant, das genaue Verhalten der Ein-
Listing 1
gangsleitungen am eigenen PC zu
Das Programm Counter1
22k
untersuchen. Man benötigt dazu eine
einstellbare Spannungsquelle. Man Dim DSRold, Counter1
DTR
muss dabei aber nicht an ein Labor-
10V
Private Sub Form_Load()
netzteil denken, denn die serielle
i = OPENCOM( COM2,1200,N,8,1 )
Schnittstelle selbst liefert ja schon die
If i = 0 Then
DCD
Spannungen, die man benötigt. Es
i = OPENCOM( COM1,1200,N,8,1 )
reicht ein einfaches Potentiometer, um
Option1.Value = True
V die Messung durchzuführen (Bild 2). End If
If i = 0 Then MsgBox ( COM
Für die Messung benötigt man das
GND
Interface Error )
Programm IOTEST aus der ersten
000074 - 4 - 12
TXD 1
Folge. Die Leitung RTS wird einge-
RTS 1
schaltet, die Leitung DCD wird
DTR 1
Bild 2. Messung der Eingangs-Schalt-
beobachtet (Bild 3). Beim Verstellen
Counter1 = 0
schwellen.
des Potis beobachtet man gleichzei- DSRold = DSR()
Timer1.Interval = 20
tig das angeschlossene Voltmeter.
End Sub
Beim PC des Autors ergaben sich fol-
gende Ergebnisse:
Private Sub Timer1_Timer()
DSRNew = DSR()
Untere Schwelle: 1,0 V
If DSRNew > DSRold Then
Obere Schwelle: 2,0 V Counter1 = Counter1 + 1
Label1.Caption = Str$(Coun-
ter1)
Der im PC verwendete Eingangs-
End If
treiber ist also eher ein 1498A als ein
DSRold = DSRNew
1489.
End Sub
Man kann die Messung für alle vier
Eingänge der seriellen Schnittstelle
wiederholen und wird ähnliche
Spannungen messen. Die gemes- Eingänge parallel ansteuern kann. Aus den
sene obere Schaltschwelle ist gemessenen Spannungen und Strömen lässt
bedeutsam für einige mögliche sich ein Eingangswiderstand von 5k6 berech-
Anwendungen. Es ist nicht möglich, nen. Dieses Ergebnis erscheint plausibel,
eine einfache Batterie mit 1,5 V am wenn man die Innenschaltung des 1489
Eingang zu erkennen. Eine direkte betrachtet.
Bild. 3. Beobachtung der Eingangszu-
Verbindung zwischen RS232-Aus- Ein ganz wichtiges Ergebnis der Messungen
stände.
gang und RS232-Eingang wird ist, dass man keine negativen Spannungen
immer erkannt. Wenn allerdings eine braucht, um Null-Zustände zu erzeugen,
LED gleichzeitig angeschlossen obwohl die RS232-Norm eigentlich Spannun-
in ein komplexeres IC integriert. Dabei wird, ist das Ergebnis unsicher. Die gen unter -3 V vorschreibt. Viele Versuche
hat der Hersteller eine gewisse Frei- Spannung an der eingeschalten LED können daher mit einfacher Betriebsspan-
heit, ob er sich an den Quasi-Standard kann unterhalb oder oberhalb der nung durchgeführt werden. Allerdings gibt
hält, oder ob er die RS232-Norm etwas Eingangs-Schaltschwelle liegen. Es es vereinzelt PCs, deren Leitungsempfänger
kann also sein, dass die LED leuch- sich von den hier beschriebenen unterschei-
tet, der Eingang aber noch Null den. Vor allem einige Laptops bestehen auf
zeigt. negativen Eingangsspannungen. Man muss
+10V
RTS
dies dann bei einigen Versuchen beachten.
Für manche Versuche ist nicht nur
22k
die Schaltspannung , sondern auch
Abfrage von Schalterzuständen
der Eingangsstrom wichtig. Auch
hierzu kann man eine einfache Mes- Man kann mit der seriellen Schnittstelle ohne
DTR
10V
A sung durchführen (Bild 4). Hier gibt großen Aufwand bis zu vier Schalterzustände
es ebenfalls eine Hysterese. Gemes- abfragen (Bild 5). Es genügt eine Ausgangs-
DCD sen wurde: leitung, z.B. DTR, die hochgesetzt wird, um
die erforderliche Betriebsspannung zu liefern.
Obere Schwelle: 0,18 mA Die Schalter können entfernt über Kabel fast
Untere Schwelle: 0,36 mA beliebiger Länge verbunden werden. Bis zu
GND
drei typische Reset-Taster lassen sich aber
000074 - 4 - 14
Aus diesen Ergebnissen kann man auch direkt auf der Platine einsetzen (Bild 6).
ableiten, dass ein RS232-Ausgang In diesem Fall werden drei Ausgangsleitun-
weit mehr als die vorhandenen vier gen verwendet.
Bild 4. Messung des Eingangsstroms.
12/2000 Elektor 39
BASISKURS
+10V
DTR
Listing 2
Impulszähler mit vier Eingängen
Private Sub Timer1_Timer()
DCDnew = DCD()
RI
DSRnew = DSR()
CTSnew = CTS()
CTS
RInew = RI()
If DCDnew > DCDold Then
Counter1 = Counter1 + 1
DSR
Label1.Caption = Str$(Coun-
ter1)
End If
DCD
If DSRnew > DSRold Then
000074 - 4 - 15
Counter2 = Counter2 + 1
Label2.Caption = Str$(Coun-
Bild 6. Direktes Aufstecken von drei
Bild 5. Anschluss von bis zu vier Schal-
ter2)
Tastern.
tern.
End If
If CTSnew > CTSold Then
Counter3 = Counter3 + 1
Counter1, die Darstellung auf dem
Label3.Caption = Str$(Coun-
Bildschirm ist in Bild 7 zu sehen. Es
ter3)
End If werden zwei globale Variablen
If RInew > RIRold Then
benötigt, DSRold zum Festhalten des
Counter4 = Counter4 + 1
letzten Zustands der DSR-Leitung
Label4.Caption = Str$(Coun-
und Counter1 als Zählregister. Die
ter4)
beiden Variablen werden in der
End If
ersten Prozedur initialisiert. Der
DCDold = DCDnew
Zähler wird auf Null gesetzt, DSRold
DSRold = DSRnew
erhält den momentanen Zustand der
CTSold = CTSnew
DSR-Leitung. Außerdem werden alle
RIold = RInew
Bild 7. Das Programm Counter1.
Ausgangsleitungen eingeschaltet.
End Sub
Damit hat man die Möglichkeit,
irgendeinen Ausgang mit dem Ein-
gang DSR zu verbinden, um ein Zähl- Signal theoretisch dann erkannt wer-
Ein Impulszähler
signal zu erzeugen. den, wenn es 20 ms lang Low ist
Elektronische Zähler erfordern relativ viel Der eigentliche Zählvorgang wird in und 20 ms high. Zu einer Perioden-
Aufwand an digitaler Schaltungstechnik. der Timer-Prozedur ausgeführt. Win- dauer von 40 ms gehört eine Fre-
Wenn aber ein PC eingesetzt wird, wird es dows ruft die Prozedur etwa alle 20 quenz von 25 Hertz (25 Impulse in
ganz einfach. Hier wird ein Impulszähler in ms einmal auf. Dabei wird jedes Mal einer Sekunde). Fehler treten aber
Visual Basic aufgebaut. Als Eingang dient die der Zustand des Eingangs DSR mit schon bei kleineren Impulsraten auf.
Leitung DSR. Es kann ein einfacher Tast- dem Zustand beim letzten Aufruf Daraus kann man schließen, dass
schalter zur Impulseingabe verwendet wer- verglichen. Wenn der neue Zustand Windows ein Timer-Intervall von 20
den. Möglich ist aber auch ein beliebiger größer als der alte Zustand ist, hat ms nicht mehr zuverlässig einhalten
anderer Sensor, solange er eine geeignete ein Wechsel von 0 nach 1 stattge- kann. Eine ähnliche Beobachtung
Spannung abgibt. funden, es gab also eine positive wurde auch schon beim Blinkpro-
Listing 1 zeigt das Programm des Projekts Impulsflanke. Diese Flanke wird gramm gemacht. Bereits bei einem
gezählt, indem die Zählvariable Timer-Intervall von 50 ms konnte
Counter1 um Eins erhöht wird. Nur eine gewisse Unregelmäßigkeit
bei einer positiven Flanke wird auch beobachtet werden.
das Ausgabefeld erneuert.
Man kann den Tastschalter langsam Der Zähler ist zwar in dieser Form
oder schneller betätigen, er zählt nicht der schnellste, dafür kann man
zuverlässig jeden Tastendruck. Bis aber sehr einfach einen Vierfach-
zu einer Rate von etwa 5 Impulsen Zähler bauen (Bild 8). Man braucht
pro Sekunde geht alles gut. Wenn es dazu nur den entscheidenden Pro-
aber wesentlich schneller wird, kann grammcode viermal zu schreiben.
man feststellen, dass einzelne Jedes Mal wird ein anderer Eingang
Impulse nicht mit gezählt werden. abgefragt und ausgewertet. Listing 2
Die genaue Grenze ist vom verwen- zeigt die veränderte Timer-Prozedur.
deten PC abhängig. Bei einem (00074-4e)
Timer-Intervall von 20 ms müsste ein
Bild 8. Der vierfache Zähler Counter2.
40 Elektor 12/2000
DCD
1
RXD
2
TXD
3
DTR
4
GND
5
DSR
6
RTS
7
CTS
8
GND
10
RI
K1
3x S
9
000074-1
000074 - 4 - 16
000074-1
Wyszukiwarka
Podobne podstrony:
Elektronik am PC Teil 3Elektronik am PC Teil 2Lichtstaerkemessung am PCelektro mechan przetwornik A C do PCAM FM SSB Empfänger Teil 1elektroniczny bębenElektrotechnika i elektronika samochodowa Walusiakelektronowy (2)PÄ…czki twarogoweelektryczne gitary gon pawiaCE PC Noselektro zerowkaSieci elektroenergetzcynewięcej podobnych podstron