Vorhandenes(?) neu erfinden? LPT-Port Steuerung

Im Unterforum Projekte im Selbstbau - Beschreibung: Selbstbau von Elektronik und Elektro

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 01 11 2024  09:27:53      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Projekte im Selbstbau        Projekte im Selbstbau : Selbstbau von Elektronik und Elektro

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Autor
Vorhandenes(?) neu erfinden? LPT-Port Steuerung

    







BID = 168870

rt1970

Gelegenheitsposter



Beiträge: 56
 

  


Hallo!

Habe folgendes Problem:

Ich möchte 8 Relais über den LPT-Port steuern.

Das wäre kein Problem.

Aber:

Diese Relais sollen auch per Schalter gesteuert werden!
Und: der Zustand des Schalters soll im Programm angezeigt werden.

Da fangen die Probleme an! Also Daten zwischenspeichern - umschalten auf Input und Abfrage des Schalters.

Hat jemand evtl. eine Schaltung parat???

Vielen Dank im voraus!

BID = 168999

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

 

  


Zitat :
Hat jemand evtl. eine Schaltung parat???


Nö, oder denkst du, jeder hat hier eine Schaltung, die du gerade haben willst?

---

Ein Ansatz: Der LPT-Port ist ja bidirektional. Du kannst also per AND-Gatter entweder per Port oder per Schalter die Relais schalten, in deinem Programm auf das Offset deines LPTs 3 Werte hochzählen und dann das Byte, das du dann bekommst, in deine 8 Relais-Zustände umrechnen. Du bräuchtest bloß eine geeignete Logik (Tristate), die abwechselnd die Zustände der Relais/Schalteran den Computer sendet und die Relais schaltet. (sollte Programmgesteuert sein). Mit welcher Sprache wolltest du dein Programm schreiben und kennst du dich mit Bytes & Co. aus?

Latches brauchst du auf jeden Fall. (Jedenfalls bin ich darauf gekommen, nachdem ich nicht so viel darüber nachgedacht hatte.)

Es gibt sicherlich andere Möglichkeiten.

Vielleicht fällt dir ja noch was ein.
Der Port hat 4 Steuerausgänge, 5 Steuereingänge und 8 bidirektionale Datenleitungen. Damit lässt sich schon einiges anfangen.


_________________

BID = 169123

rt1970

Gelegenheitsposter



Beiträge: 56

Warum so ruppig?

Hab doch nur gefragt!

Ok. Deine Idee ist mir schon klar.
Programmiert wird mit VB.

Mein Problem ist im Moment
1. einen Schaltkreis zu finden, der die 8-bit Daten für die Zeit der Abfrage der Zustände der Relais zwischenspeichert und
2. einen Schaltkreis zu finden, der 8 Tristate Ausgänge besitzt zum senden der Daten an den PC

DonComi: Danke für Deine Bemühungen!

BID = 169132

Her Masters Voice

Inventar


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 5308
Wohnort: irgendwo südlich von Berlin

guck dir mal den 74ls573 an, vielleicht macht der ja schon was du willst. 8-fach Latch mit Tri-State Ausgängen.



_________________
Tschüüüüüüüs

Her Masters Voice
aka
Frank

***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
***********************************

BID = 169815

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

[quote]Warum so ruppig?

Hab doch nur gefragt!
[quote]

War nicht so gemeint.

---

Ja, der 74xx573 dürfe das richtige sein.

Da du offensichtlich den bidirektionalen Weg nimmst, und ich das auch so gemacht hätte, musst du zur Steuerung dann dein Steuerbus benutzen.

Zum Beispiel: (Programm)
1. Senden der Werte für die Relais
2. Der Steuerausgang "1" geht auf HIGH und latcht somit die Daten (ist folglich am Clockeingang des Latches)
3. Der geht wieder auf LOW, die Daten sind gespeichert und schalten dann (über Transistoren) die Relais.
4. Jetzt setzt du einen anderen Steuerpin "2" auf HIGH und die Daten der Schalter / Relais werden an den Computer gesendet. Dazu liegen sie einfach an einem Tristate-Bustreiber an. (74xxx244). Diese Daten kommen zwar auch an die Dateneingänge des D-Latches, aber er speicher nicht, weil er am Takteingang auf LOW ist.

Diese ganze Prozedur wiederholen.


Wenn du mit VB schreibst, dürftest du Zeiteinbüßungen in Kauf nehmen. Denn es geht alles permanent. (Geht aber gut mit einem Timercontrol, dessen Intervall auf 10ms gesetzt ist)


Ich habe da auch mal ein Programm in VB geschrieben, mit dem man explizit jeden Pin setzen/löschen kann (für die Ausgänge) und jeden Eingang einlesen kann. (Auch permanent = Polling) Es ist aber leider auf eine von mir gebastelte Hardware abgestimmt und deswegen nicht pin-genau (also nicht in der richtigen Reihenfolge). Ich habe aber auch noch eine DLL geschrieben, die in der richtigen Reihenfolge ist. Beides unterstützt bidirektional.
Wenn du willst lade ich es mal hoch.
Ich mal auch noch mal einen ungefähren Schaltplan, damit du siehst, was ich meinte...




_________________

BID = 169824

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

So, ich habe mal gemalt. So oder ähnlich kann man das machen. Die Puffer mit Tristate gehören zum 244er.

Man kann es bestimmt auch noch anders machen, aber das ist eine Möglichkeit. Die beiden Steuerpins (14 und 16) sind jetzt so gewählt, du kannst aber auch Pin#1 oder Pin#17 nehmen.




_________________

BID = 170168

rt1970

Gelegenheitsposter



Beiträge: 56

Wow! Danke für die schnelle und umfangreiche Hilfe!

Der 573er hats gebracht!
Meine Schaltung sieht nun so aus:



Hoffe es kommt an...

Ansprechen kann ich die Relais prima in VB aber auslesen nicht. Muß ich nicht irgendein Bit setzen, um den Port zum lesen zu bewegen?



BID = 170253

Dracos-Carazza

Gesprächig



Beiträge: 185
Zur Homepage von Dracos-Carazza ICQ Status  

um vom lpt datenregister zu lesen, muss im status register (standart 890) das 5 bit gesetzt sein. in basic hieß das früher dann OUT (890),32

greetz Carazza

_________________
Es ist nicht deine Schuld, dass die Welt ist wie sie ist, es ist nur deine Schuld wenn sie so bleibt !



Wer seinen Trieb verleugnet, verleugnet das was ihm zum Menschen macht !

BID = 170259

rt1970

Gelegenheitsposter



Beiträge: 56

vielleicht sollte ich noch erwähnen, daß ich die INPOUT32.DLL benutze.

Dracos-Carazza: Ist hex 37a, richtig? Bringt auch nichts.

Kann den Port abfragen und der liefert mir den letzten Status den ich über out gegeben habe.

BID = 170313

Dracos-Carazza

Gesprächig



Beiträge: 185
Zur Homepage von Dracos-Carazza ICQ Status  

ja 37A ist richtig, ich habe jetzt die daten für den 74SN573 im kopf, aber wie gehts du da auf den port drauf ?? denn einfach nen hi signal auf den pin legen geht nicht, du muss ihn mit ground kurzschließen um ihn als eingang zu nutzen.
man setzt den port auf 255, wenn man nun das erste bit kurzschließt, und dann den status abfragt bekommt man asl ausgabe 255-2^0=254. so geht das beim datenregister des lpt, und nicht anders. zum kurzscließen hab ich immer ne transe genommen, nen treiber mit O.C. sollte aber auch funzen.

greetz Carazza

_________________
Es ist nicht deine Schuld, dass die Welt ist wie sie ist, es ist nur deine Schuld wenn sie so bleibt !



Wer seinen Trieb verleugnet, verleugnet das was ihm zum Menschen macht !

BID = 170322

rt1970

Gelegenheitsposter



Beiträge: 56

Der LPT muß erst auf 255 gesetzt werden??
Wozu dann Register 5 bei LPT-Adr+2?
Angeblich wird doch bei 1 der Ausgang hochohmig geschaltet und der Zustand gespeichert?
Ich versuchs mal.
Den 2. 573er für die Ansteuerung des LPT werd ich besser ersetzen.
Hast recht, brauch dafür kein Tri-State. OC wäre besser. Hast Du einen IC im Kopf, der 8 bit mit Open Collector und Chip Select?
Hab es grad getestet: den LPT-D0 über 100 Ohm nach Masse Bit 5 gesetzt und abgefragt:
Out &H37A, 32
Out &H378, 255
Text9.Text = Inp(&H378)
= 255 = Kein Erfolg!
Traue mich nicht, den Port direkt ohne R nach Masse zu schalten.

Achja, mein LPT1 ist auf ECP gestellt und läuft unter Windows XP.

[ Diese Nachricht wurde geändert von: rt1970 am  6 Mär 2005 15:51 ]

[ Diese Nachricht wurde geändert von: rt1970 am  6 Mär 2005 16:04 ]

BID = 170360

Dracos-Carazza

Gesprächig



Beiträge: 185
Zur Homepage von Dracos-Carazza ICQ Status  


Zitat :
Traue mich nicht, den Port direkt ohne R nach Masse zu schalten.


gerade DAS musst du aber machen, wenn du die status pins des LPT (akk etc) nimmst geht das auch über nen widerstand (glaube bis max 6k). beim daten register muss es aber direkt auf masse gehen. keine panik, der lpt nimmt keinen schaden, da der durch eine strombegrenzung gesichert ist. ich hatte meinen lpt damals glaub ich auf EPP 1.7 eingestellt, bin mir aber echt nicht sicher, eventuell einfach mal verschiedene einstellungen testen.

greetz Carazza

_________________
Es ist nicht deine Schuld, dass die Welt ist wie sie ist, es ist nur deine Schuld wenn sie so bleibt !



Wer seinen Trieb verleugnet, verleugnet das was ihm zum Menschen macht !

BID = 170450

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Es wird überhaupt nix funktionieren, wenn du im BIOS nicht EPC/EPX oder so ähnlich einstellst. Es müssen diese beiden sein, sonst ist der Port nicht bidirektional. Es muss auch kein 5. Bit gesetzt werden, dass ist so weit ich weiß nur Interrupt EIN/AUS.

Wie ich sagte, auf's Offset einfach mal 3-4 Werte draufzählen, vorher das Byte 255 senden und dann mal aus Freude am Leben einen Pin mit Masse verbinden. Wenn du deinen Port +3 permanent (z.B. mit Timer, interval=10) im mer ausfragt und das Byte immer in ein Labelcontrol schreibst, dann wirst du sehen, wie es sich verändert. Wenn du jetzt das Byte in 8 Bits zerlegts, kannst du ganz einfach jeden Relais/Schalter-Zustand auslesen.

Nachtrag: Bespiel
Private Sub tmr_Timer() 'Timerevent
lblBytevalue.Caption = Inp(888 + 3) 'Basisadresse +3 (oder auch 4,5,6)
End Sub

oder

Private Sub tmr_Timer()
lbldecimalvalue.Caption = cBits(Inp(offset + 3)) 'Binär anzeigen, benötigt Funktion cBits
End Sub

_________________


[ Diese Nachricht wurde geändert von: DonComi am  6 Mär 2005 20:26 ]

BID = 170474

Dracos-Carazza

Gesprächig



Beiträge: 185
Zur Homepage von Dracos-Carazza ICQ Status  

so ich hab nochmal die seitet raus gesucht mit der ich damals meine probleme gelöst habe.

http://www.beyondlogic.org/spp/parallel.htm

funktioniert bei mir ohne probleme.

greetz Carazza

_________________
Es ist nicht deine Schuld, dass die Welt ist wie sie ist, es ist nur deine Schuld wenn sie so bleibt !



Wer seinen Trieb verleugnet, verleugnet das was ihm zum Menschen macht !

BID = 178033

rt1970

Gelegenheitsposter



Beiträge: 56

Danke Euch allen!
Also: jetziger Stand:
Es funktioniert einwandfrei, wenn ich den Parallelport auf Bidirektional stelle.
Setze dann addr+2 Bit 5 und ich kann auslesen.
Aber wenn ich ECP oder EPP nehme kann ich keine Daten auslesen...
Werde jetzt noch mal den Interrupt ein/aus testen.
Liegt es evtl. an Windows XP?


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 23 Beiträge im Durchschnitt pro Tag       heute wurden bisher 3 Beiträge verfasst
© x sparkkelsputz        Besucher : 182265514   Heute : 1000    Gestern : 4409    Online : 405        1.11.2024    9:27
7 Besucher in den letzten 60 Sekunden        alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0476448535919