hallo
1 pegel = 5v
0 pegel = 0v
@ Bastlwastl
nein, es muss nur ein Pin geschalten werden um damit ein Relais zu steuern!
müsste halt noch wissen wieviel Volt bei einem geschalteten Pin anliegen, damit es auch mit dem Relais funktioniert!
hallo
1 pegel = 5v
0 pegel = 0v
Richtig, ME ist ein 16bit-OS. War ein Fehler von mir.
Blackbird
@FJK
Nicht umbedingt.
Bei manchen Steuerpins -> Basisadresse + 2 ist es andersherum
@Blackbird
Dass kann doch jedem passieren.
(Obwohl ich glaube dass es schon ein 32 Bit-OS ist. Es ist doch fast genau das Selbe wie Win98 und dass ist ein 32 Biter.)
@danionbike
Wenn du nur einen Pin ansteuern willst, dann les dir mal die Homepage von Anton Zechner durch.
Der hat auch ein tolles Beispiel für den LPT unter Windows 2000 / XP.
Seine Homepage findest du unter:
http://members.inode.at/anton.zechner/az/index.html
Nur für einen anzusteuernden Pin tue ich mir nur die Arbeit an und schreibe das gesamte Programm um, wenn es umbedingt sein muß.
(Nur für einen Pin bringt das Programm nicht viel, da es zum Durchchecken von Logik- und Mikrokontrollerschaltungen gedacht ist)
Wenn du mir aber genau sagst was du willst, dann schreibe ich dir ein kleines Programm.
Auch wenn es andere Meinungen gibt.
Ich würde die Datenpins maximal mit 1mA bis 1,5mA belasten obwohl sie mehr leisten können wie die Steuerpins.
Ich habe meine Schaltung nach dem Prinzip aufgebaut wie es die Scizze im Anhang zeigt.
Da du für die Versorgung des Relaise eine externe Versorgung benötigst, würde ich dir raten auch einen Optokoppler zu verwenden.
Ich würde ebenfalls alle Masseanschlüsse des LPT zusammenschließen um die Last gleichmäßig zu verteilen.
Wenn der 1. Transistor (T) schon ausreichend verstärkt und den Strom, den das Relaise benötigt abkann, dann hängst du das Relaise zwischen den Anschluss (1) und die Versorgung und den Anschluss (2) auf Masse.
Wenn du aber noch einen weiteren Transistor benötigst, dann hängst du den Anschluss (2) auf die Basis des weiteren Transistors.
Den Emitter des weiteren Transistors hängst du auf Masse und den Colektor des weiteren Transistors mit dem Anschluss (1) an das Relaise.
Das Relaise selber schließt du an die Versorgung an.
Wenn du Hilfe bei der Berechnung brauchst, sag einfach bescheit.
mfg Sepp (Bastlwastl's Bruder)
@danionbike
Ich hab das Programm heute mal schnell programiert.
(Hat ca. 2h gebraucht.)
Sag mir ob dir das reicht und ob du noch Wünsche hast.
Ich hab übrigens vergessen dich darauf hinzuweisen dass du bei einem Relaise umbedingt eine Freilaufdiode brauchst, da sich ansonsten die Transistoren schnell verabschieden.
Da ich nicht weis wie dein Wissensstand ist, schreib mir mal wenn du etwas nicht verstehst.
Ich hab dir zum Programm noch den gesamten Quellcode angehängt, damit du weist was ich gemacht habe.
Damit das Programm läuft mußt du die Exe, den Treiber und die Datei Einstellungen.dat in den selben Ordner kopieren.
Außerdem benötigst du Administratorrechte.
In der Datei Einstellungen.dat befinden sich die Einstellungen die beim Starten des Programms geladen werden.
Hey,
super, es funktioniert einwandfrei!
Die Abfragen in der Konsole sind auch gut so!
BESTEN DANK!!!!![]()
![]()
![]()
![]()
=D>
Freut mich dass es dir gefällt.
Ach ja, die letzten Beiträge waren von meinem Bruder Sepp.
mfg Bastlwastl
Hey,
ich habe da auch so einige probleme die LPT Schnittstelle zu programmieren. Deswegen poste ich hier mal ein Codesschnipsel in C von mir mit dem ich probiere die Schnittstelle anzusteuern. Laufen tut das Programm auf Win95 und wurde mit Bloodshed kompiliert. Das Programm soll einfach nur D0 bis D7 an und ausschalten, damit ich das mit meinem Voltmeter dann messen kann.
Wäre sehr nett wenn ihr mir sagen könnt ob da ein Fehler im Programm ist, ist nämlich mein erstes Programm mit dem ich den Druckerport ansteuern will.
Und? Wie siehts aus? So in etwa müsste das doch stimmen. Oder?Code:#include <stdio.h> #include <conio.h> #include <windows.h> int main(int i) { for(i=1;i<=10;i++) { _outp( 0x378, 0x07); /*D0 bis D1 soll auf high gehn*/ printf("D0...D7=1\n"); wait(40); /* Warte funktion hab ich woanders definiert*/ _outp( 0x378 ); /*D0 bis D1 soll auf low gehn*/ printf("D0...D7=0\n"); wait(40); } }
EDIT:
Hat wircklich keiner eine Idee warum ich am Druckerport nichts messen kann? Das haben hier doch einige schinmal gemacht, allerdings bin ich aus dem Thread nicht schlau geworden.
mfg crowdy
Lesezeichen