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
|