Disclaimer
Im folgenden Text könnten sich ein paar Fehler eingeschlichen haben. Naja,
eigentlich enthält der Text mit an Sicherheit grenzender Wahrscheinlichkeit
mindestens einen Fehler. Also: Jedes Bauteil mindestens zweimal prüfen, jede
Verbindung nochmal durchchecken usw. bevor das Ding an den PC gesteckt wird.
Was braucht man also?
Als erstes: Mindestens acht Transistoren (Typ BC557A hat sich als ausreichend
erwiesen, baugleiche gehen aber auf jeden Fall auch). Warum mindestens?
Naja, ein Transistor ist so verdammt hitzempfindlich, was sich vor allem
beim Löten negativ auf seine Gesundheit auswirken könnte...
Dreizehn Relais. Ich hab hier monostabile vierfach-Wechsler genommen, Hauptsache
ist aber, daß sie bei 5V (oder bissl weniger) schalten. Allzuviel muß auch
nicht dranhängen, also ist man mit 1A auch gut bedient.
Jede Menge Kabel in ausreichender Länge, möglichst in zwei bis drei verscheidenen
Farben.
Dann noch einen Parallelport-Stecker (25pol. Sub-D). Mit dem wird die Schaltung
an den PC gestöpselt. Am besten ersetzt man die Innengewindeschrauben, die
da normalerweise dran sind, mit ganz normalen, sonst passts nicht so gut
in die Buchse.
Eine Stromweiche für (5V) CPU-Lüfter. Wenn man keine zur Hand hat zweigt
man einfach von +5V und 0V (rot und schwarz) je ein Kabel ab (siehe Bild).
Also, wie geht man am besten vor? Als erstes macht man sich einen Schaltplan.
Der könnte (ungefähr!) so aussehen:
Der Kondensator kann man übrigens getrost weglassen. Obwohl ich den fettesten
Eumel genommen hab, der in Reichweite war, hab ich immer noch mit Spannungsabriß
an der I/O Karte zu kämpfen, wenn mehrere Relais gleichzeitig anziehen. Am
besten ists, man lässt nach dem Beschreiben von $378 einfach einen Lesezyklus
aus.
Um den PC mit 0/1 Informationen füttern zu können legt man auf die Pins 15,13,12,10,11
(die Reihenfolge geht auf die eigenarige Sortierung durchs BIOS zurück) per
Relais entweder +5V oder 0V. Theoretisch würdens auch nur 5V oder nicht 5V
tun, zuminsest ich war aber gezwungen das per Relais zu lösen, weil meine Karte
sonst mit den Bits wackelt (zuwenig Potentialgefälle am Ausgang). So gehts
aber auf jeden Fall. Wichtig dabei ist, bei Pin 11 (bzw. dem fünften Eingang)
+5V und 0V zu vertauschen weil der genau umgekehrt schaltet.
Um 0/1 Informationen vom PC der Außenwelt zugänglich zu machen ist schon ein
Transistor nötig, um die Spannung im PC nicht abreißen zu lassen (wirkt sich
nachteilig auf die Systemstabilität aus :). Man nimmt sich einen Transistor,
klemmt 0V an den Kollektor und den Emitter an den Spuleneingang. Der Spulenausgang
wird sinnvollerweise mit +5V verbunden und die Transistorbasis an einen der
Datenpins des Sub-D Steckers gelegt. Die Datenpins sind in wesentlich sinnvollerer
Reihenfolge als die Eingänge, nämlich 2,3,4,5,6,7,8,9. Sehr einprägsam...
Hat man jetzt alles richtig verbunden und - empfehlenswerterweise - die Lötstellen
am Stecker mit Heißkleber versiegelt, dann kann man das ganze mal am PC anschließen.
Wenn man einen Kondensator zwischen + und - Eingang gehängt hat sollte man
die Schaltung übrigens nicht während des Betriebs anhängen, weil der Kondens
beim Aufladen unheimlich viel Strom zieht - kann man aber mit einem Widerstand
noch abdämmen.
Wie steuert man jetzt das ganze vom PC aus an? Wenn man die Basisadresse seines
LPT-Ports weiß, ganz einfach: Angenommen die Basisadresse ist $378, wird
auf $378 geschrieben und von $379 gelesen. Beim Schreiben werden natürlich
alle 8 Bits benutzt, zum Lesen sind nur die oberen 5 Bits wichtig (Bits 0-2
ignorieren).
Ein bissl Pseudocode (schaltet Ausgang 1 um und zeigt den Status an):
Bit[1]:=1-Bit[0];
Port[WritePort]:=BitsToByte(Bit);
ByteToBits(Port[WritePort],Bit);
for x:=0 to 7 do Write(Bit[x]);
Write('|');
ByteToBits(Port[ReadPort],Bit);
for x:=3 to 7 do Write(Bit[x]);
Writeln;