OliLPT32 (LPT-Multiplexer 8 -> 32 Ausgänge)
(Schalten von Geräten über den LPT-Druckerport)
(Eine Unterseite von http://www.oliver-schlenker.dyndns.org)

Beschreibung:

Mit dieser Seite soll gezeigt werden, wie man mit der LPT-Schnittstelle eines Rechners mit 8 Datenleitungen des Druckerports bis zu 32 Geräte schalten kann. Für den eigentlichen Schaltvorgang benötigt Ihr noch, abgesehen von meiner Hardware "Multiplexer-Platine" und meiner Software "OliLPT32", 4 Relaisplatinen mit je 8 einzelne Schaltrelais zum Schalten der einzelnen Endgeräte. Z. B. den Bausatz "K8IO" der Fa. Pollin (siehe http://www.pollin.de). Ich habe auch noch die 5 Eingangsports, als Eingangsklemmen, auf der Platine berücksichtigt, falls man von dem ein oder anderen Gerät eine Rückmeldung, z. B. über ein Rückmelderelais, benötigt oder man über ein Eingangsereignis Programme oder Ausgangskontakte auslösen möchte. Mit dieser Platine und meiner Steuerungssoftware könnt Ihr die Ausgangskontakte, für verschiedenste Anwendungen, über einen Rechner bedienen bzw. fernsteuern.

Funktionsweise: Im Grundkonzept werden die 8 Datenleitungen (8 Datenbits) über Register-Chips vom Typ 74LS374 multiplexed. D. h. es wird der 1. Chip angesteuert und die Datenbits 1-8 gesetzt. Danach wird auf den 2. Chip geschaltet und weitere 8 Datenbits (von 9-16) gesetzt. Anschließend auf den 3. und 4. Chip, wo jeweils die Bits 17-24 und 25-32 gesetzt werden. Diese Register-Chips (auch "Latch" genannt) behalten den letzten "gesetzten" Zustand der 8 Datenbits, bis wieder auf den entsprechenden Chip gewechselt wird (=ChipSelect) und die Datenbits neu gesetzt werden. Mit dieser Technik wäre es sicherlich auch möglich aus den 5 Eingängen des LPT-Ports bis zu 20 Eingänge zu machen. Dazu würde man 4 weitere 74LS374-Chips benötigen, die dann als Eingangschips per ChipSelect, parallel zu den 4 Ausgangschips der Datenbits, als Eingänge in die LPT-Schnittstelle genutzt werden könnten. Dies habe ich hier allerdings nicht realisiert und nutze nur die 5 Standard-Eingänge der LPT-Schnittstelle direkt, da mir primär nur die 32 Schaltausgänge wichtig waren.

(Um die Grafiken klarer und detaillierter zu sehen, solltet Ihr einen Klick mit der linken Maustaste
auf der entsprechenden Grafik ausführen!)

Hier der LPT-Multiplexer-Schaltplan, den ich als Basis für meine Schaltung benutzt habe:

 

Die Hardware-Bastelei:

 

Vorderseite meiner Multiplexer-Platine:
 (die LEDs leuchten wie auf dem Bild des Steuerprogramms, ist aber sehr schlecht zu erkennen)

Rückseite meiner Multiplexer-Platine:

Oben links seht Ihr 3 Klemmen mit GND belegt. Dann kommen die 32 Ausgangsklemmen, die dann an eine Schaltplatine mit Relais (z. B. die "K8IO" von Pollin (siehe http://www.pollin.de) ) geführt werden würden um Schwachstromgeräte zu Schalten (jeweils gegen GND geschaltet). Um Geräte mit 230V zu schalten, benötigt Ihr noch eine weitere Ebene mit 230V Lastrelais, die dann über die Schwachstromrelais geschalten werden. In diesem Fall solltet Ihr aber einen gelernten Elektriker hinzuziehen, da der Umgang mit 230V-Lichtstrom mit Gefahren für Leib und Leben verbunden sein kann. Hier muss ich auch jede Verantwortung in irgendeiner Art ablehnen und bitte Euch (falls Ihr keine entsprechende Ausbildung habt) nicht an 230V-Lichtstrom rumzubasteln. Ansonsten handelt es sich bei diesem Projekt nur um Schwachstrom, der weder für Menschen noch für Tiere gefährlich ist. Auf der rechten Seite seht Ihr 6 Klemmen für die Abfrage der Eingangskontakte. Diese Kontakte werden alle gegen die 1. Klemme mit GND geschaltet. Auf der linken Seite seht Ihr noch die Klemmen für die 5V Stromversorgung, die dann über ein stabilisiertes Netzteil mit mindestens 500mA beschaltet werden. Ich habe auch noch zur Anzeige des jeweils aktiven Chips an den ChipSelect-Leitungen je eine LED angeschlossen, die mir dann anzeigt welcher Chip bzw. welche Bits gerade aktiv ist/sind. Gerade bei der Erzeugung des Steuerprogramms "OliLPT32" war das sehr hilfreich. Im unteren Bereich der Platine habe ich dann 2 Flachbandleiter eingelötet, die die Datenleitungen D0-D7, ChipSelect-Leitungen CS0-CS3, Masseleitung GND und die Eingangsleitungen E0-E4 über einen Sub-D-25pol-Stecker mit dem LPT-Druckerport des Rechners verbinden.

Meine Modifikationen zum ursprünglichen (oben stehenden) Schaltplan waren wie folgt:
1.) Den Pin 11 (GND) der 4 Stück 74LS374-Chips musste ich weg biegen bzw. durfte ich nicht anschließen, da sonst die Bitmuster nicht korrekt durchgeschaltet wurden bzw. Probleme mit dem "ChipSelect" auftraten. Dies könnte aber auch eine Eigenart der von mir verwendeten SN74LS374N vom Chiphersteller Motorola sein.
2.) Die LEDs am Pin 12 (ChipSelect) habe ich selbst reingebastelt, da mir das gerade bei der Programmierung der Software "OliLPT32" sehr geholfen hat. Hier konnte man dann sehen, welcher Chip gerade aktiv ist. Gerade bei der Fehlersuche war das eine große Hilfe.
3.) Die Klemmen am oberen Rand habe ich vor den entsprechenden Anzeige-LEDs abgegriffen. (Siehe blaue Drähte auf der Rückseite der Platine). Damit kann ich die einzelnen Bits direkt auf Relaiskarten (z. B. eben die "K8IO" von Pollin) rausführen und dann damit (ev. über Lastrelais 24V) irgendwelche Gerätschaften schalten.

Hier die Pinbelegung des Standard-LPT-Druckerports eines IBM-kompatiblen Rechners:
(Draufsicht auf die Schnittstelle am PC; Sub-D-25pol Steckverbinder mit Löchern/female)

Pin 2-9 repräsentieren die 8 Datenbits D0-D7 für die Ausgänge. Die Pins 1 und 14-17 repräsentieren die 4 ChipSelect-Leitungen CS0-CS3 (Achtung: Pin 1, 14 und 17 sind invertiert). Die Pins 10-13 und Pin 15 repräsentieren die 5 Eingangsleitungen E0-E4 (Achtung: Hier ist Pin 11 invertiert). Bei der Erstellung von Software ist es wichtig die invertierten Pins mit einer "NOT"-Verknüpfung zu negieren oder entsprechend "0=1" oder "1=0" zu setzen, damit diese Pins wie die anderen Pins funktionieren. Die "normalen" Pins werden beim Schaltvorgang auf logisch "1" von 0V auf 3-5V gesetzt. Dies wird als "High"-Signal interpretiert. Die invertierten Pins werden beim Schaltvorgang auf logisch "1" von 3-5V auf 0V, also auf "Low"-Signal", gesetzt. Dies muss in der Steuerungssoftware nur einfach entsprechend berücksichtigt werden.
 

Die Software-Bastelei:

 

Nachdem ich die Hardware aufgebaut und betriebsbereit hatte, habe ich mir ein Programm genannt "OliLPT32", zur Ansteuerung der Ausgänge und Anzeige der Eingangszustände, in PureBasic geschrieben. Die grundlegenden Funktionen sind das Ein-/Aus-Schalten der 32 Ausgänge per Mausklick und die die Anzeige der 5 Eingangszustände. Sicherlich kann man hier auch noch eine automatische Überwachung per Zeitsteuerung (Datum/Uhrzeit/Wochentag) im Stile einer Zeitschaltuhr realisieren, oder bei einer Zustandsveränderung von Eingangskontakten entsprechend Ausgangskontakte schalten lassen. Hier gibt es sicherlich einige interessante Einsatzgebiete und Modifikationsmöglichkeiten für die Multiplexerplatine und meine Software.

Falls Ihr die Vollversion oder eine speziell an Eure Anforderungen angepasste Version meines Programms benötigt, könnt Ihr mir einfach eine Email schicken. Auf Anforderung überlasse ich Euch auch gerne den Quellcode der Vollversion, der dann mit der "PureBasic-Demo-Version für Windows x86" gut auf die eigenen Anforderungen anzupassen ist.

Auf der PureBasic-Homepage (http://www.purebasic.de) findet Ihr auch eine kostenlose Demoversion für Linux, Mac OS X oder Amiga OS. Damit könnt Ihr meine Programme recht einfach von der i386-Windows-Welt auf die anderen Betriebssysteme portieren, falls Ihr die Anwendung(en) lieber in diesen Welten laufen lassen wollt.

Hier seht Ihr Snapshots meiner selbst erstellten Software OliLPT32:

Einmal in der klassischen Windows-Ansicht:

Und auch in der Windows-XP-Luna-Ansicht:

Meine Programme unterstützen die Windows-Design-Einstellungen.
Falls Ihr Euch auch so eine Platine basteln und meine Software mal ausprobieren wollt,
könnt Ihr Euch, unter folgendem Link, eine Demo-.EXE-Datei für Windows 98/XP/Vista/7 runterladen:
(Info: Die Programme wurden von mir unter Windows XP mit SP3 entwickelt und getestet)
 

Download der Demoversion von Schaltprogramm OliLPT32.EXE
(Diese Demoversion ist fest auf LPT1 eingestellt. Es können bis zu 16 Ausgänge geschaltet werden (ChipSelect von Chip 1 und 2; Chip 3 und 4 sind deaktiviert). Von den 5  Eingängen sind 2 Stück komplett funktionsfähig. Die Funktionen "Alle Bits EIN" und "Alle Bits AUS" sind deaktiviert.
Mit dieser Version könnt Ihr ausprobieren, ob Eure Multiplexer-Platine ordnungsgemäß funktioniert.
Falls Ihr die Vollversion meiner Software haben wollt, könnt Ihr mir einfach eine Email schicken.
Ich sende Euch dann den Quellcode, der mit der Demoversion von "PureBasic" bearbeitet werden kann.
ACHTUNG: Die "OliLPT32"-Software (Demoversion wie auch die Vollversion)
funktioniert nur mit nativen LPT-Schnittstellen
(LPT1-3 mit den Portadressen (normalerweise) Hex278, Hex378, Hex3BC.
Die entsprechende Portadresse kann im Quellcode eingestellt werden!)
USB-LPT-Adapter oder andere LPT-Umsetzer werden in der Regel nicht unterstützt,
wenn diese nicht durch eine eindeutige Portadresse angesteuert werden können!
)

Allgemeines:
Mit dieser Platine in Verbindung mit einer Relais-Schaltplatine und/oder Lastplatine und meiner
Software "OliLPT32" können verschiedenste Geräte über die Druckerschnittstelle geschaltet oder
Schaltzustände abgefragt werden. In Verbindung mit einer Fernsteuerungssoftware (z. B. TightVNC)
könnte man auch die Kontakte über einen anderen Rechner (z. B. über das Internet) "fernschalten/fernabfragen".

Hier einige Beispiele für die Nutzung der Kontakte in der o. g. Grundausführung:

32 digitale Ausgänge z. B. für
- Schalten der Gartenbewässerung
- Schalten von automatischen Rollläden (Rolladensteuerung)
- Schalten von Lichtern oder Lichterketten (auch Lauflichter)
- Schalten von Weichen und Signalanlagen an einer Modelleisenbahn
- Schalten von einzelnen LEDs
- Schalten einer LED-Matrix
- Schalten einer 3D-LED-Matrix (wie z. B. bei einem LED-Cube)
- uvm.
 
5 digitale Eingänge z. B. für
- Abfragen von Fensterkontakten
- Abfragen von Türkontakten
- Abfragen von Schaltzuständen über Rückmelderelais
- uvm.
 

Info: Die Snapshots können von der aktuellen (Demo)-Version abweichen, da das
Programm von mir permanent weiterentwickelt/optimiert wird.

Ich hoffe dass reicht Euch als kleine Einführung in die LPT-Port-Ansteuerung mit einem Multiplexer.

Ansonsten würde ich mich freuen, wenn dieses kleine Projekt Euer Interesse findet und Ihr mit mir
diesbezüglich Kontakt aufnehmt. Jede EMail wird selbstverständlich schnellstens beantwortet!

Update 01.10.2013: Ein interessierter User hat meinen Lochraster-Prototypen übernommen und bei
sich, zusammen mit meiner Software "OliLPT32", zur direkten Steuerung von Komponenten seiner Modelleisenbahn  im Einsatz. 
Lieber H. Grübner, ich wünsche Ihnen viel Spaß und Erfolg für Ihr Projekt mit dieser Multiplexerplatine!

Ich denke dem Einsatz dieser kleinen Platine und meiner "OliLPT32"-Software
sind nur durch Eure Phantasie Grenzen gesetzt.
Man kann damit praktisch jedes elektrische oder elektronische Gerät,
über den Druckerport eines Rechner, EIN und AUS schalten.

(Der Nachbau der Platine und die Nutzung meiner Software geschieht auf eigene Gefahr.
Ich kann keine Verantwortung für beschädigte Rechner oder LPT-Schnittstellen übernehmen.
Ich bitte dafür um Euer Verständnis!)

Bei Interesse, Fragen, Wünsche, Anregungen, Lob oder Kritik könnt Ihr mir gerne eine

eMail senden an: Oliver.Schlenker@T-Online.de