Über eine 25-polige Sub-D-Buchse und ein entsprechendes Kabel wird die Verbindung zum Parallelport des Rechners hergestellt. Als Ausgangsleitungen werden die Datenleitungen D0 bis D7 (vgl. 2.) verwendet.
Bei Ausgabe einer "1" leuchtet die zugehörige Diode. Wenn man die Farben der LEDs geeignet wählt, lassen sich auf einfache Weise verschiedenartige Ampelsteuerungen realisieren (vgl. 5.).
Abb. 1 Interface 1
Die Eingabeleitungen E1 bis E4 werden mit Hilfe des Strobesignals auf "1" gesetzt. Beim Einlesevorgang werden eine bis vier dieser Leitungen über einen hinreichend niederohmigen Widerstand (es reicht das Durchschalten der C-E-Strecke eines Transistors oder das Beleuchten eines lichtempfindlichen Widerstandes) mit Masse verbunden; das zugehörige Bit nimmt dann den Wert "0" an. Zur Herstellung der Schaltverbindungen dienen 4-mm-Buchsen.
Wenn man leistungsstärkere Verbraucher wie z.B. die Spulen von
Schrittmotoren ansteuern will, so muß man die Ausgangssignale zur
Ansteuerung von Transistoren nutzen, die genügend hohe Ströme
schalten können. Dann benötigt man aber auch eine zusätzliche
Spannungsquelle, deren Minuspol mit der Rechnermasse zu verbinden ist.
2. Pinbelegung und Register der parallelen Schnittstelle
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*) Der Wert dieses Bits wird vom Rechner automatisch invertiert, aufgrund
der Interfaceschaltung hat es also den Wert 0.
3. Aus- und Eingabe (in Qbasic)
a) Ausgabebefehl
OUT 888, A
Hierbei ist A eine dezimale Ganzzahl zwischen 0 und 255; in binärer
Darstellung hat A demnach 8 Stellen. Es sind diejenigen Datenleitungen
auf 5 V gelegt (die zugehörige Leuchtdiode leuchtet also), deren zugehörige
Binärstelle eine "1" aufweist, z.B. leuchten bei A = 131 = (128 +
2 +1) nur die Dioden an D0 , D1 , D7 (vgl.
Abschnitt 1, Abb. 1).
b) Einlesebefehl
Da die Bits 3 bis 7 des Statusregisters aufgrund der Interfaceschaltung auf "1" gesetzt sind, ist der Registerinhalt nach Start des Rechners davon abhängig, ob die Bits 0 bis 2 intern gesetzt sind oder nicht. Um ein eindeutiges Ergebnis beim Auslesen zu erhalten, ist es sinnvoll, diese Bits zu maskieren. Das kann z.B. auf folgende Weise geschehen:
A =(120 - (INP(889) AND 120)) / 8 (*)
Die Variable A nimmt einen Wert an, der durch den Zustand der Steuerleitungen (vgl. Abschnitt 2) gegeben ist:
A = (120 - (x * 2^6 + x * 2^5 + x * 24 + x * 2^3)) / 8 ;
dabei gilt x = 0, wenn die zugehörige Leitung mit Masse verbunden,
ein Schalter z.B. also geschlossen ist, bzw. x = 1, wenn die zugehörige
Leitung auf 5 V bleibt, ein Schalter z.B. also geöffnet ist.
Durch die Subtraktion von 120 und die anschließende Division
durch 8 bekommt die Variable A genau den Wert, der dem Index bzw. der Summe
der Indices derjenigen Eingangsleitungen entspricht, die mit Masse verbunden
sind: die zugehörigen Schalter sind geschlossen.
Das folgende Beispiel dient zur Erläuterung der Funktionsweise:
Man schließt den Kollektor eines Transistors an die Steuerleitung
"Select" (13) und einen Schalter an die Steuerleitung "Error" (15) an;
der Emitter bzw. der zweite Anschluß des Schalters sind mit Masse
verbunden. Die möglichen Ergebnisse des Befehls (*) finden sich in
der nachstehenden Tabelle:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Man kann das Interface natürlich auch mittels einer anderen Programmiersprache,
z.B. PASCAL, ansteuern.
4. Interface 2
Abb. 2
Im Unterschied zu Interface 1 steuern in dieser Version die vier Datenleitungen (D0 bis D3) Leistungsoperationsverstärker, deren Ausgänge auf den Pluspol einer Fremdquelle (zugehöriges Bit hat den Wert 1) bzw. auf Masse (zugehöriges Bit hat den Wert 0) gezogen werden.
Der Spannungsteiler am Eingang sorgt dafür, daß der OPV für Fremdspannungen bis 18 V sauber schaltet.
Die vier nicht verwendeten Ausgabeleitungen (D4 bis D7) können natürlich bei Bedarf zusätzlich verwendet werden, z.B. um einen Schalttransistor anzusteuern. Zu diesem Zweck wird die Basis des Transistors über einen Vorwiderstand mit der gewählten Datenleitung verbunden, der Emitter liegt an Masse und am Kollektor wird die zu schaltende Last angeschlossen.
In der Abb. 2 ist die Schaltung nur für eine der vier Ausgabeleitungen dargestellt, die drei nicht gezeichneten sind völlig identisch. Die Schaltung der Eingabeleitungen entspricht derjenigen für das Interface 1 (vgl. Abschnitt 1, Abb. 1).
Die Ein- bzw. Ausgaberoutinen entsprechen den für das Interface
1 erläuterten (vgl. Abschnitt 3).
5. Experimentiervorschläge
a) Einführende Versuche mit Interface 1
Lauflicht: Man läßt
die Zahlen 20, 21, ... , 27 in einer Schleife ausgeben. Als Variante kann
man die Reihenfolge
durch eine Zufallszahl steuern
lassen.
Ampel: Kreuzung
zweier Straßen, Straße mit Fußgängerüberweg
ohne Anforderung, Blinkampel für verkehrsarme
Zeiten (als Umschalter kann z.B.
ein Fotowiderstand an einem der Eingänge dienen), Fußgängerüberweg
mit
Anforderung (Taster an einem oder zwei
der Eingänge, Verzögerung der Auslösung durch Programmierung
einer
Warteschleife), Hauptstraße / Nebenstraße
mit Anforderungskontakt (Reedschalter an einem der Eingänge)
b) Weitere Versuche mit Interface 1
Windrichtungsanzeige:
Ausgewertet wird das Signal einer Gruppe von 3 Reflexlichtschranken, die
relativ zu einer
Winkelcodierscheibe rotieren.
Strichcodeleser:
Ausgewertet wird das Signal eines über eine Strichcodemarkierung geführten
Lesekopfes
(Reflexlichtschranke).
Matrixanzeige: 35
Leuchtdioden werden in einer 7 x 5 Matrix angeordnet. Zur Auswahl von einer
der 7 Zeilen
benötigt man 3 Bit, die restlichen
5 Bit dienen zur Ansteuerung der 5 in einer Zeile befindlichen Dioden.
Indem man
die Zeilen mittels einer Programmschleife
ständig nacheinander ansteuert, leuchtet das gewünschte Muster
der Anzeige
auf. Eine Ansteuerschaltung für
die Diodenmatrix findet man im Heft "Prozeßdatenverarbeitung".
Schrittmotor: Die
Ansteuerung von Schrittmotoren läßt sich auf verschiedeneWeisen
realisieren: 4 Bit steuern jede
Spule einzeln, man verwendet eine
Ansteuerschaltung, die ein Taktsignal und ein Steuersignal für Rechts-
bzw.
Linksdrehung erfordert.
c) Versuche mit Interface 2
Schrittmotormodell:
4 gleiche Spulen sind jeweils um 90° versetzt angeordnet; als Rotor
dient eine Magnetnadel. In
der bipolaren Anordnung werden
je zwei Spulen (die sich gegenüberstehen) in Reihe geschaltet und
mit den
Ausgangsleitungen D0
/ D1
bzw. D2 / D3 verbunden. Mit dieser
Anordnung lassen sich Voll- und Halbschrittbetrieb
nachvollziehen.
Aufzugmodell: Eine
seilgeführte Blende wird durch einen Getriebemotor nach oben bzw.
unten bewegt. Dabei
passiert sie 3 Lichtschranken
(K ,E ,I) ; zusätzlich ist noch ein Taster vorhanden. Diese Bauteile
werden mit den 4
Eingangsleitungen verbunden; der
Motor wird z.B. zwischen D0 / D1 angeschlossen.
D-/A-Wandler: Die
4 Ausgänge D0 bis D3 werden an ein Netzwerk
aus entsprechend bemessenen Widerständen
angeschlossen. Damit läßt
sich das Prinzip der gewichteten Ströme demonstrieren.
A-/D-Wandler: Das
beschriebene D-/A-Wandler-Modell läßt sich zu einem Modellversuch
für die A-/D-Wandlung
ausbauen, wenn man als Vergleicher
einen Operationsverstärker nimmt, dessen Ausgangssignal über
eine der
Eingangsleitungen in den Rechner
eingelesen wird.
Servomotor: Das
D-/A-Wandler-Modell gibt in diesem Fall dazu eine Spannung vor, die zu
einer bestimmten
Motorstellung führt. Der
Spannungsvergleich wird wieder mit einem Operationsverstärker durchgeführt.
6. Beispielprogramme (in Qbasic) zu den Experimenten
a) Lauflicht
Programm: Schaltung und Bemerkungen
CLS
Interface1 ohne weitere Schaltung,
FOR I = 0 TO 7 auch
zum Testen geeignet
OUT 888, 2^I
SLEEP 3 Die
8 LEDs leuchten nacheinander
NEXT I
für jeweils ca. 3 Sekunden.
END
b) Fußgängerüberwegampel mit Anforderungskontakt
Programm: Schaltung und Bemerkungen
CLS: A=0
Interface 1
DO
Bitbelegung:
WHILE A<>1
D0 bis D2 : Autofahrer
rot - gelb - grün
GOSUB Einlesen D3
und
D5 : Fußgänger rot - grün
WEND
E1: Tasterverbindung zur
Masse (Schließer)
OUT 888, 12 : SLEEP 4
OUT 888, 10 : SLEEP 2
OUT 888, 9 : SLEEP 2
OUT 888, 33 : SLEEP 10 Das
Programm läuft endlos, bis es mit
OUT 888, 9 : SLEEP 2 STRG
+ PAUSE abgebrochen wird
OUT 888, 11 : SLEEP 2
OUT 888, 12 : SLEEP 4
OUT 888, 8 : SLEEP 6
A=0
LOOP
END
Einlesen:
A = (120 -(INP(889) AND 120)) / 8
RETURN
c) Schrittmotor (bipolar)
Programm: Schaltung und Bemerkungen
Unterprogramm für Links-
Interface 2; Versorgungsspannung ca. 12 V; Drehung: (*)
die 2 Spulenpaare werden
mit den Ausgängen der Operationsverstärker verbunden:
Links: Spulenpaar 1 mit
A0 / A1
OUT 888, 1 Spulenpaar
2 mit A2 / A3
GOSUB Warten (**)
OUT 888, 4 (*) :
Die tatsächliche Drehrichtung hängt
GOSUB Warten
natürlich vom Aufbau ab.
OUT 888, 2
GOSUB Warten (**) : In diesem
Unterprogramm muß eine dem
OUT 888, 8 jeweiligen
Aufbau und Rechner
GOSUB Warten entsprechende Zeitverzögerung
RETURN programmiert
werden
d) Steuerung des Aufzugmodells (vgl. S. 6)
Programm: Schaltung und Bemerkungen
CLS: A=0 : OUT 888,0
Interface 2
Anfang:
Der Getriebemotor ist mit den Ausgängen
WHILE A <> 3
der Operationsverstärker 1 und 2 verbunden,
GOSUB Einlesen
und zwar z.B. so, daß das Setzen von Bit 0 zur
OUT 888,1
Aufwärts-, das Setzen von Bit 1 zur Abwärts-
WEND bewegung der Blende führt.
PRINT " Aufzug im 1. Stock"
(Wenn beide Bit den gleichen Wert haben, bleibt
OUT 888, 0
der Motor stehen.) Die Versorgungsspannung
SLEEP 5
ist auf den Motor abzustimmen.
WHILE A <> 5
Die Eingangsleitungen E1 (unten, K),
OUT 888, 2
E2 (Mitte, E) und E3 (oben, I) werden durch
GOSUB Einlesen
Lichtschranken beeinflußt, die durch die Blende
WEND
unterbrochen werden.
OUT 888, 0
PRINT "Aufzug im Erdgeschoß"
Für die Logik ist zu beachten, daß ein beleuch-
SLEEP 5
teter LDR das zugehörige Bit auf "0" setzt, ein nicht beleuchteter
LDR
das zugehörige Bit auf
WHILE A<> 6
"1" läßt. Daraus folgt, daß die verdunkelten
OUT 888, 2
Lichtschranken an den Werten 3 (oben),
GOSUB Einlesen
5 (Mitte) und 6 (unten) zu erkennen sind.
WEND
Falls alle Lichtschranken frei sind, wird die
OUT 888, 0
Zahl 7 eingelesen.
PRINT "Aufzug im Keller"
SLEEP 5
WHILE A <> 5
OUT 888,1
Umkehr der Drehrichtung des Motors
GOSUB Einlesen
WEND
Das Programm läuft endlos, bis
OUT 888, 0
es mit STRG + PAUSE abgebrochen wird.
PRINT "Erdgeschoß"
SLEEP 5
Die Blende fährt zunächst bis zur oberen Licht-
schranke, bleibt dort ca. 5 Sekunden, fährt dann
GOTO Anfang
abwärts bis zur mittleren Lichtschranke, bleibt
END
dort ca. 5 Sekunden, fährt dann abwärts bis zur
unteren Lichtschranke, bleibt dort ca. 5 Sekun-
-
Einlesen:
den, fährt dann aufwärts bis zur mittleren
A = (120 -(INP(889) AND 120)) / 8 Lichtschranke
usw. Der erreichte Ort wird
RETURN
jeweils auf dem Bildschirm ausgegeben.
Literatur:
[1] H.Schmidt / W. Weber, Messen und Experimentieren
mit dem PC, Dümmler 4236,
Reihe Computerpraxis Physik, Bonn 1993
[2] Deutsches Institut für Fernstudien (DIFF),
Computer im Physikunterricht,
Studienbrief 3A: Ankopplung des Computers an Realexperimente,
Tübingen 1990
[3] Prozeßdatenverarbeitung in der Reihe Informatik
9/10, LSW