Ik heb momenteel een eenvoudige schakeling gemaakt om via de printerpoort 8 relais aan te sturen via een ULN2803. Werkt op zich prima, maar toch ook weer niet altijd...
Het probleem is dat bij het opstarten (of herstarten) van de pc, of wanneer de printerkabel losgemaakt wordt, de outputs van de poort een paar keer van waarde wijzigen, waardoor de (in dit geval) aangesloten lampen een aantal flikkeren. Dat wil ik niet, aangezien het uiteindelijk de bedoeling is om de lichten van onze terraria hiermee aan te sturen.
Een beetje onderzoek leert me dat de Strobe-lijn van de printerpoort hoog is van zodra de pc aan staat, en ook zo blijft staan tot ik ze manueel laag zet. Dit lijkt me dus al bruikbaar om ervoor te zorgen dat de relais enkel aangestuurd worden als ik eerst de strobe lijn laag gezet heb. Zolang de strobe hoog is, moet alle input genegeerd worden. Dit zou volgens mij eenvoudig kunnen
door aan de strobe een inverter te hangen, en de uitgang daarvan samen met een datalijn aan de ingang van een AND-gate te hangen. De uitgang is dan enkel hoog als ik de strobe laag gezet heb en de datalijn hoog is.
Volgende probleem, waar ik geen oplossing voor weet, is dat de relais hun stand zouden moeten "onthouden" bij een reboot of wanneer de printerkabel gelost wordt. In het geval van een reboot zou de strobe hoog worden, waardoor de uitgang van de AND poort laag zou worden. In het geval van het loskoppelen van de kabel, wordt alles laag, wat dus ook tot verkeerde uitgangen zou leiden.
Lange uitleg voor een relatief eenvoudig probleem
Samengevat: ik wil dat de relais kunnen aangestuurd worden via de printerpoort, maar ze moeten hun stand "onthouden" ook al wordt de pc herstart, of de kabel losgemaakt. Iemand een idee om mij in de goeie richting te sturen? Hartelijk dank!
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Je zou een buffer kunnen gebruiken die zijn stand onthoudt - een 74HCT574 bv. Je kan er dan, met behulp van wat logica, voor zorgen dat hij enkel bij een welbepaalde toestand geklokt wordt.
Om die toestand te behouden, moet de voedingsspanning uiteraard stabiel zijn. Maar vermits je relais aanstuurt, kan je van hun voedingsspanning aftakken.
Iets als dit kan de klokpuls voor de buffer leveren:
Werking:
In rust is de ingang hoog - daar kan je bv. de STROBE voor gebruiken.
C1 wordt redelijk snel opgeladen via R2 en D2, zodat de uitgang van N1 laag is.
Daardoor is de uitgang van N2 hoog, en die van N3 laag.
Als de data van de buffer moet gewijzigd worden:
8 data-bits klaarzetten.
Ingang laag maken.
R2 kan geen stroom meer leveren, en R3 zal C1 langzaam ontladen.
Na verloop van tijd klapt N1 om. Diens uitgang wordt hoog.
Omdat de ingang laag is, blijft de uitgang van N2 hoog.
Ingang terug hoog maken.
Nu zijn --voor korte tijd-- beide ingangen van N2 hoog.
Diens uitgang wordt laag, N3 inverteert dit en de buffer krijgt zijn klokpuls.
Kortstondige neergaande pulsen op de ingang hebben geen invloed.
@Roland: ik ben het eens met je visie, maar men moet ergens beginnen...
Roland van Leusden
It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Dat wil ik niet, aangezien het uiteindelijk de bedoeling is om de lichten van onze terraria hiermee aan te sturen.
Is het slim om daar een hele pc voor te laten draaien 24/7 ?
Misschien handiger om je te verdiepen in een uC (PIC/AVR/ARM/8051), dat verbruikt veel minder stroom en dan is je probleem van het onthouden ook gelijk opgelost.
Op 15 oktober 2009 13:28:53 schreef Roland van Leusden:
Is het slim om daar een hele pc voor te laten draaien 24/7 ?
Je hebt natuurlijk wel gelijk, maar het betreft hier een oude industriële pc... dus trage processor, geen bewegende delen, harde schijf is eigenlijk een CompactFlash kaart, ... dus een veel lager verbruik dan een gewone pc.
Op 15 oktober 2009 13:01:36 schreef pros:
Je zou een buffer kunnen gebruiken die zijn stand onthoudt - een 74HCT574 bv. Je kan er dan, met behulp van wat logica, voor zorgen dat hij enkel bij een welbepaalde toestand geklokt wordt.
Om die toestand te behouden, moet de voedingsspanning uiteraard stabiel zijn. Maar vermits je relais aanstuurt, kan je van hun voedingsspanning aftakken.
Bedankt voor de tip! Ik ga je idee eens grondig bekijken en trachten er iets van te begrijpen
Ik kom ongetwijfeld terug met meer vragen!
[Bericht gewijzigd door Henry S. op (43%)]
henri62
1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
Ik zou om de stand te onthouden bi-stabile relais gebruiken.
Je moet dan wel 16 outputs maken/hebben.
Dit kan dan bijvoorbeeld door een extra control lijn te gebruiken die de data afwisselend kan sturen naar de ene kant van het relais of de andere kant van het relais. De strobe gebruik je dan als puls om de relais daadwerkelijk om te zetten.
Een oplossing kan zijn om 2 een ULN met enable te gebruiken.
De ene ENABLE = control AND strobe en de andere
ENABLE = !control AND strobe.
(Ik ga even uit van een bistalbiel relais met common + en twee massa aansluitingen)
Even goed op de logische niveaus letten dat alles werkt.
En nog low power ook: verbruikt niks als er niet wijzigd.
O ja : Die bi-stabiele relais heb je ook in een DIL achtige uitvoering.
Op 15 oktober 2009 18:41:51 schreef henri62:
Ik zou om de stand te onthouden bi-stabile relais gebruiken.
Je moet dan wel 16 outputs maken/hebben.
Dat zou ook een oplossing kunnen zijn, maar ik heb nu de 8 gewone relais reeds, en ik zoek dus liever een oplossing hiervoor. Toch bedankt, als het me niet lukt bekijk ik dit zeker opnieuw!
Even tussendoor: hoe betrouwbaar is de (java) circuit simulator op http://www.falstad.com/circuit/ ? Ik heb het schema van Pros hier eens in getekend, maar het lijkt niet te werken.
[Bericht gewijzigd door Henry S. op (19%)]
Met welke programmeertaal stuur je het aan? Je zou een eenvoudig pascal (of als je wil een delphi of visual basic programma) kunnen schrijven. Dan is het probleem ook opgelost lijkt mij?
Wat ik wel raar vind, is dat je aan de ene kant zegt de pc aan te laten staan, maar aan de andere kant flikkeren de lampen als je de pc uit zet?
Groetjes,
Foekie
De bedoeling is inderdaad dat het via Visual Basic wordt aangestuurd, maar dat is niet het probleem. In ideale omstandigheden zal die pc altijd aan staan. Maar een pc (in dit geval met Windows 95) moet je nu eenmaal af en toe eens herstarten, en daar wringt het schoentje. Stel dat ik een aantal lampen aangezet heb, en ik herstart die pc (of koppel de printerkabel los), dan zullen de lampen uit gaan tot wanneer mijn VB programma opnieuw gestart is. En dat is net wat ik wil voorkomen...
[Bericht gewijzigd door Henry S. op (31%)]
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Er zit een vies trekje aan bovenstaand schema: als je de PC uitschakelt, is de kans groot dat de ingang van het schema omlaag getrokken wordt. Bij het inschakelen gaat die dan omhoog (zeker als je de STROBE gebruikt), en wordt er willekeurige data ingeklokt.
Gelukkig is er nog een poort over, die als inverter kan gebruikt worden:
Nu moet de ingang in rust laag zijn, en dien je hem een tijdlang hoog te maken, en dan terug laag om nieuwe data in te klokken.
Wat die simulator betreft: "lijkt niet te werken" zegt weinig...
Wat die simulator betreft: "lijkt niet te werken" zegt weinig...
Sorry! Wanneer de ingang hoog is, wordt de condensator inderdaad opgeladen, en is de uitgang van N3 laag. Maar als ik dan de ingang laag maak, verandert er niets. De condensator ontlaadt niet en dus blijft de uitgang van N3 laag.
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Mogelijke oorzaken:
1) De simulator niet (goed) overweg met analoge signalen.
2) Je wacht niet lang genoeg.
3) Ik heb wat overdreven met die 100k/100µF combinatie. Neem voor C1 1µF als test.
Je tweede schema werkt wel in de simulator! Ik ga het even verder bekijken, enorm bedankt voor de moeite! Indien je interesse hebt, hier is de code die je in die simulator kan "importeren":
$ 1 5.0E-6 47.65948060424672 64 5.0 50
L 96 240 64 240 0 0 false 5.0 0.0
R 368 48 368 16 0 0 40.0 5.0 0.0 0.0 0.5
r 384 80 384 128 0 10000.0
d 384 160 304 160 1 0.805904783
d 384 176 384 224 1 0.805904783
r 304 224 384 224 0 1000.0
c 384 304 384 368 0 9.999999999999999E-5 4.553253208311236
151 448 240 544 240 0 2 0.0
151 560 272 592 272 0 2 5.0
151 640 272 672 272 0 2 0.0
g 384 384 384 416 0
w 304 160 304 224 0
w 304 272 304 288 0
w 368 80 384 80 0
w 384 128 384 176 0
w 384 224 448 224 0
w 544 240 544 256 0
w 544 256 560 256 0
M 688 272 736 272 0 2.5
w 624 256 640 256 0
w 624 288 640 288 0
w 592 272 624 272 0
w 672 272 688 272 0
w 384 384 384 368 0
w 368 48 368 80 0
w 304 288 304 448 0
w 304 448 560 448 0
w 560 448 560 288 0
w 448 256 384 256 0
w 384 224 384 256 0
w 384 256 384 304 0
w 624 272 624 256 0
w 624 272 624 288 0
151 208 240 272 240 0 2 5.0
r 144 256 144 336 0 10000.0
w 144 256 144 240 0
w 144 240 144 224 0
w 144 224 208 224 0
w 144 256 208 256 0
w 144 240 96 240 0
w 304 272 304 240 0
w 304 240 272 240 0
w 304 240 304 224 0
Op 15 oktober 2009 20:04:20 schreef pros:
3) Ik heb wat overdreven met die 100k/100µF combinatie. Neem voor C1 1µF als test.
Ik heb besloten om het ding gewoon eens te maken, de simulatie van je tweede schema doet in elk geval wat het moet doen, dus dat is veelbelovend! Voor de zekerheid: neem ik voor C1 100µF of 1µF? Ik kan ze natuurlijk ook gewoon alletwee bestellen en eens proberen wat het geeft...
[Bericht gewijzigd door Henry S. op (15%)]
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Hoe groter C1, hoe kleiner de kans dat er ongewenste dingen gebeuren bij het in- of uitschakelen van de PC, of bij het afkoppelen/aansluiten van de parport-connector.
1µF is alvast te klein. Die waarde was enkel bedoeld om de simulator te testen.
Als er enkel af-en-toe de status een lampje moet veranderen, kan je best de 100µF aanhouden.
Geef de 74HCT132 en de 74HCT574 wel een stabiele 5V-voeding.
Pull-up weerstandjes aan de ingangen van de '574 zouden ook niet misstaan. Die zijn in SIL-vorm te koop, wat het gebruik vergemakkelijkt.
Ok, bedankt voor de tips nog! Misschien dat ik best nog een stabiel 5V-voedingkje maak, want de adapter die ik tot hiertoe gebruikte voor de sturing van de relais is een huis-tuin en keuken adapter die toevallig wel 5V levert, maar ik vermoed dat dit niet stabiel genoeg zal zijn, of valt dat normaal gezien wel mee?
Even wat huisregels voor bmaster voordat het hele topic ge-edit moet worden: http://www.circuitsonline.net/forum/faq#topickicks
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
De 74HCT-reeks kan gevoed worden met spanningen tussen 4.5V en 5.5V
Als je zeker bent dat de spanning van je adapter die grenzen niet te buiten gaat, kan je beide IC's voeden via een spoeltje van 100µH en hun spanning bufferen met een elco van 470µF. Die combinatie zal snelle spanningsvariaties --ten gevolge van het in- of uitschakelen van een relais-- voldoende onderdrukken.
De gebruikelijke ontkoppel-condensatoren van 100n over de voedingspinnen van beide IC's blijven een noodzaak, ook als je een afzonderlijke voeding voorziet.
Het werkt! (Niet dat ik aan uw schema twijfelde, eerder aan mijn soldeer-kunde
). Ik heb het dus gebouwd met 100µF/100K combinatie, en heb ook ineens een afzonderlijke voeding gemaakt. In het begin dacht ik dat het allemaal niet deed wat het moet doen, maar het was een timing probleem: het strobe-signaal moet bijna 10 seconden hoog zijn alvorens het terug laag mag worden. Blijkbaar mag die condensator dus inderdaad een pak kleiner zijn. In mijn geval maakt het echter niet veel uit omdat het toch maar moet dienen om 's morgens een lamp aan te doen en 's avonds weer uit. Nogmaals dank voor het fijne schema!!
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
het strobe-signaal moet bijna 10 seconden hoog zijn alvorens het terug laag mag worden
Da's wel iets meer dan ik in gedachten had. Als het sneller moet, kan je beter R3 een maatje kleiner nemen. Een weerstand is nu eenmaal goedkoper dan een elco.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
eehhhh. makes sense. 100kohm * 100µF = 10^5 * 100 * 10^-6 = 10s.
Om overnieuw te bouwen is 10µF de goedkoopste oplossing, maar als je de 100uF al hebt, is inderdaad een 10k weerstand goedkoper.