Die Steuerung der unterschiedlichsten
Aktionen über den PC-Parallelport ist
besonders beliebt, weil keine Eingriffe in
die PC-Hardware notwendig sind. Diese
Schaltung ist ein universelles Parallel-
Input/Output-Interface (UPIO) mit acht
Vor- und acht Rückwärtskanälen. Die
Schaltung ist unkritisch im Aufbau, die
zugehörige Windows-Software ist beson-
ders bedienerfreundlich gestaltet.
Schaltung
Der Aufwand an Hardware hält sich in
engen Grenzen. Wie aus Bild 1 hervor-
geht, werden nur gängige, leicht erhältli-
che Standard-Bauteile verwendet. Ein
8-bit-Latch vom Typ 74HCT574 (IC3, oben
im Bild) sorgt dafür, dass die Schaltzu-
stände der acht Ausgangsleitungen
während des gesamten Schreib-/Lese-
Zyklus stabil sind. Er steuert über den
8-fach-Treiber ULN2803 (IC1) die Relais
Re1...Re8. In umgekehrter Signalrichtung
stellt der Tri-State-Buffer 74HCT241 (IC5)
die Verbindung der acht Eingangsleitun-
gen von den Steckverbindern K12 und K13
zum PC-Parallelport her. Da ein PC-Paral-
lelport prinzipiell nur über vier Eingangs-
leitungen verfügt, müssen die Signale in
zwei Zyklen in den PC eingelesen werden.
Ein Steckernetzteil, das eine unstabili-
sierte Gleichspannung von ca. 12 V lie-
fert, kann die Stromversorgung überneh-
men. Der zur Schaltung gehörende Span-
nungsregler 78L05 (IC2) setzt die
COMPUTER& PERIPHERIE
58
Elektor
4/2000
Parallelport-I/O-Interface
Mit Windows-Software für den PC
Die acht Relais dieser Schaltung (oder andere Aktuatoren) können mit der zugehörigen
Windows-Software über den PC-Parallelport gesteuert werden. Gleichzeitig stehen acht
digitale Eingangsleitungen für Rückmelde- oder sonstige Signale zur Verfügung.
Bild 1. Schaltung des Parallelport-
Interface.
K10
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
1
2
3
4
5
6
7
8
9
74HCT574
IC3
12
13
14
15
16
17
18
19
EN
11
C1
1D
2
3
4
7
8
9
5
6
1
IC1
2803
VEE
+VS
ULN
11
12
13
14
15
16
17
18
I1
I2
I3
I4
I5
I6
I7
I8
O1
O2
O3
O4
O5
O6
O7
O8
10
1
2
3
6
7
8
4
5
9
K11
1
2
1
IC4a
D9
1N4001
IC5a
12
14
16
18
EN
4
6
8
1
2
IC5b
3
5
7
9
EN
13
15
17
19
11
C1
470µ
25V
K13
K12
R10
4x 10k
1
5
4
3
2
R11
4x 10k
1
5
4
3
2
C10
C13
C6
C9
RE1
D1
R1
22Ω
RE2
D2
R2
22Ω
K1
K2
RE3
D3
R3
22Ω
RE4
D4
R4
22Ω
K3
K4
RE5
D5
R5
22Ω
RE6
D6
R6
22Ω
K5
K6
RE7
D7
R7
22Ω
RE8
D8
R8
22Ω
K7
K8
78L05
IC2
C4
100n
C3
100n
C2
100µ
25V
R9
820
Ω
D10
K9
D11
1N4001
12V
5V
4x 22n
4x 22n
13
12
1
IC4f
11
10
1
IC4e
9
8
1
IC4d
5
6
1
IC4c
3
4
1
IC4b
IC5
20
10
C14
100n
IC4
14
7
C15
100n
IC3
20
10
C5
100n
STROBE
D0
D1
D2
D3
D4
D5
D6
D7
12V
12V
12V
12V
12V
12V
12V
12V
12V
IC5 = 74HCT241
IC4 = 74LS05
5V
5V
5V
002011 - 11
Hardware-Entwurf von D. Aggelos
Spannung auf die Betriebsspannung 5 V
für IC3...IC5 herab. Das Treiber-IC
ULN2803 (IC1) liegt ebenso wie die
Relais-Spulen an der unstabilisierten
12-V-Spannung. Die Stromaufnahme der
Schaltung hängt im Wesentlichen von
den Spulenwiderständen der Relais ab.
Die Netzteil-Leistung muss so bemessen
sein, dass alle acht Relais gleichzeitig
aktiviert werden können.
COMPUTER& PERIPHERIE
59
4/2000
Elektor
Stückliste
Widerstände:
R1...R8 = 22
Ω
R9 = 820
Ω
R10,R11 = SIL array 4 x 10 k
Kondensatoren:
C1 = 470
µ/25V stehend
C2 = 100
µ/25V stehend
C3,C4,C5,C14,C15 = 100 n
C6...C13 = 22 n
Halbleiter:
D1...D8 = 1N4148
D9,D11 = 1N4001
D10 = LED
IC1 = ULN2803
IC2 = 78L05
IC3 = 74HCT574
IC4 = 74LS05
IC5 = 74HCT241
Außerdem:
K1...K8 = 3-polige
Anschlussklemme für
Platinenmontage, Raster 5mm
RE1...RE8 = 12-V-Relais für
Platinenmontage, z.B. Siemens
V23040-A0002-B201
K9 = 2-polige Anschlussklemme
für Platinenmontage, Raster 5mm
K10 = 36-polige Centronics-
Buchse für Platinenmontage
K11 = 3-polige Stiftleiste mit
Jumper
K12,K13 = 4-polige Stiftleiste
Platine EPS 002011-1,
Diskette 002011-11, siehe
Serviceseiten und
www.elektor.de (kostenloser
Download für Abonnenten)
Bild 2. Platine und Bestückungsplan.
002011-1
(C) ELEKTOR
C1
C2
C3
C4
C5
C6
C7
C8
C9
C10
C11
C12
C13
C14
C15
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
H1
H2
H3
H4
IC1
IC2
IC3
IC4
IC5
K1
K2
K3
K4
K5
K6
K7
K8
K9
K10
K11
K12
K13
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
RE1
RE2
RE3
RE4
RE5
RE6
RE7
RE8
0
+
002011-1
002011-1
(C) ELEKTOR
Anzeige
Platine
Für die Schaltung in Bild 1 wurde eine Platine ent-
worfen, Bild 2 zeigt das Layout und den
Bestückungsplan. Die Verbindung zum PC stellt ein
für Platinenmontage geeigneter 36-poliger Centro-
nics-Konnektor her, so dass die Schaltung über ein
normales Druckerkabel mit dem PC verbunden
werden kann. Auf der Relais-Seite sind 3-polige
Platinen-Schraubklemmen vorgesehen, deren Kon-
takte direkt an den Umschaltkontakten der Relais
liegen. Die acht in Richtung PC führenden Signal-
leitungen sind an den beiden schon erwähnten
4-poligen SIL-Konnektoren K12 und K13 verfügbar.
Original-Software
Die ursprünglich vom Entwickler dieser Schal-
tung geschriebene Steuersoftware war eine recht
kurz gehaltene Programm-Routine, sie war auf die
Anwendung als einfache Ablaufsteuerung zuge-
schnitten. Die Relais konnten nach einem vom
Anwender programmierbaren zeitlichen Schema
aktiviert und deaktiviert werden, wobei sowohl
die Betriebsart “Hold” (Schaltzustand halten) als
auch “One-Shot” (Schaltzustand nicht halten)
möglich war. Ferner konnte die Programm-Rou-
tine die Schaltzustände mit Hilfe die Eingangs-
leitungen abfragen.
Parallelport-Steuerung
unter Windows
Beim Testen der Original-Software wurde schnell
deutlich, dass sie einige Unzulänglichkeiten aufwies
und verschiedene Ergänzungen wünschenswert
waren. Da die Modifikation des Originals schwieri-
ger erschien als das Neuschreiben, entschied sich
das Elektor-Labor für eine neu zu erstellende, mög-
lichst universell verwendbare Programm-Routine.
Unter DOS und Windows 3.1 ist es relativ einfach,
von der Ebene einer höheren Program-
miersprache wie Basic oder Pascal auf die
parallelen oder seriellen PC-Ports zuzu-
greifen. In Basic genügt die unkompliziert
zu handhabende IN/OUT-Instruktion, in
Pascal bietet sich hierfür die äquivalente
PORT-Instruktion an. Bei den späteren
Windows-Versionen (Windows
95/98/NT)läuft die Programmierung hard-
ware-ferner ab; hier ist es nicht mehr
möglich (und sogar verboten!), auf die
diversen Register und Speicherplätze
unmittelbar zuzugreifen. Der Grund liegt
in der Gesamtkonzeption dieser Betriebs-
systeme, die mit den unterschiedlichsten
Arten so genannter Device-Treiber arbei-
ten. Das Schreiben eines Device-Treibers
in eigener Regie ist fast immer eine ziem-
lich mühsame und zeitaufwendige
Arbeit. Oft kommt man wesentlich
schneller zum Ziel, wenn man im Inter-
net nachforscht, ob der gesuchte Treiber
nicht schon existiert. Bei unserer Suche
stießen wir bei www.entechtaiwan.com
auf eine (Shareware-)Routine mit dem
Namen “TVicPort”, geschrieben von Vic-
tor Ishikeev, die unseren Zweck erfüllt.
Die Routine existiert in verschiedenen
Versionen, unter anderem für Delphi (Ver-
sionen 2 bis 5), Java Builder (Versionen 1,
3 und 4), Visual Basic (Version 6) sowie
Borland C++ und MS Visual C++ für
Windows 95/98/NT.
Wie nicht anders zu erwarten, ist der Par-
allelport im Zeitalter der objektorientierten
Programmierung nichts anderes als ein
object mit den verschiedensten properties,
das auf die diversesten events antwortet.
Bei diesem Konzept hat der Programmierer
leichten Zugriff auf das object (sprich: Par-
allelport), wobei die Steuerung über die
zum object gehörenden methods abge-
wickelt wird. An dieser Stelle soll eine
kurze Beschreibung der methods und pro-
perties anhand des Beispiel-Programms
(eine Delphi-2-Applikation) genügen.
Die wichtigsten Prozeduren heißen Open-
Driver und CloseDriver, von denen, wie
schon die Namen verraten, TVicPort
geöffnet bzw. geschlossen wird. Die logi-
sche Variable (Property) ActiveHW zeigt
an, ob der Port geöffnet oder geschlossen
ist bzw. ob der Treiber vorhanden oder
nicht vorhanden ist. Die Property LPT-
NumPorts gibt die Anzahl der im System
vorhandenen Parallelports an, während
LPTNumber bestimmt, welcher Parallel-
port vom Treiber gesteuert wird. Die Pro-
perty LPTBaseAdress enthält die Basis-
Adresse dieses Ports. Zum Parallelport
gehört außerdem eine Property mit dem
Namen Pin, ein aus 25 logischen Varia-
blen (Bits) bestehendes Array, das die
logischen Zustände (States) an den Port-
Pins repräsentiert. Über dieses Array hat
der Programmierer leichten Zugriff auf
die Signale der Portleitungen. Zu unter-
scheiden sind lediglich Eingangsleitun-
gen, Ausgangsleitungen und bidirektio-
nale Leitungen.
“HWTest”
und Programmbeispiel
Das Programm “HWTest”, das sich
zusammen mit der übrigen Software auf
der Projekt-Diskette befindet, demon-
striert anschaulich, wie die Steuerung der
Hardware abläuft. Für das Erstellen eige-
ner Applikationen kann HWTest als Basis
dienen. Auch für das Programmbeispiel,
das sich ebenfalls auf der Projekt-Diskette
befindet, war HWTest die Grundlage. Die
acht Relais auf der Platine können durch
Anklicken der zugehörigen Schaltflächen
aktiviert und deaktiviert werden. Darun-
ter werden die logischen Zustände auf
den digitalen Eingangsleitungen ange-
zeigt. Falls im System mehrere Parallel-
ports vorhanden sind, kann der Port mit
dem virtuellen Drehschalter ausgewählt
werden. Bleibt nur noch hinzuzufügen,
dass die Parallelport-Steuerung natürlich
nur arbeitet, wenn zuvor der Treiber erfol-
greich geladen wurde, was durch
Anklicken der Schaltfläche “Open Driver”
geschieht. Einen Eindruck vom Erschei-
nungsbild des Programms auf dem Moni-
tor gibt Bild 3.
Entwicklungs-Werkzeuge
Der Schaltungs-Entwickler erstellte sein
Programm UPIO.exe in der Entwick-
lungsumgebung von Borland’s Delphi,
Version 1, 16 bit. Alle Original-Dateien
(.dpr, .pas, .opt und .res) sind ebenso wie
eine korrigierte und ergänzte Version auf
der Projekt-Diskette zu finden. Der Origi-
nal-Source-Code des Autors hat lediglich
informativen Charakter; er kann nicht
editiert werden, da die LPT-Komponente
fehlt. Ferner wird wegen verschiedener
anderer Probleme empfohlen, die Origi-
nal .exe-Datei nicht zu verwenden.
Vollständigkeitshalber sei noch erwähnt,
dass die Original-Schaltung mit “Protel
Schematic Capture” gezeichnet wurde,
während für das Original-Platinen-Layout
die “Advanced Schematics Software” zum
Einsatz kam. Im Elektor-Labor wurde bei-
des überarbeitet und in die hier veröf-
fentlichte Form gebracht.
(002011-1)gd
COMPUTER& PERIPHERIE
60
Elektor
4/2000
Bild 3. Das Steuerprogramm auf dem Monitor.