|
|
De comparator in de AT89C2051De AT89C2051 zoals gebruikt in het 'Egel werkboek heeft naast digitale in en uitgangen ook een comparator ingebouwd (een comparator vergelijkt twee analoge ingangs spanningen en verandert zijn uitgang van laag naar hoog als het signaal op de + ingang groter wordt dan dat op de - ingang en vice-versa). De comparator zit aangesloten op pen P1.0 (+) en P1.1 (-). De uitgang zit intern doorverbonden met pen 6 van poort-3.We maken een schemerschakelaarDe comparator gaan we nu gebruiken om het omgevingslicht te meten en afhankelijk daarvan een lamp aan en uit te schakelen. We doen dit door op P1.1 (AIN1) een spanningsdeler aan te sluiten bestaande uit een LDR en een gewone weerstand, op P1.0 (AIN0) sluiten we een regelbare weerstand aan, hiermee stellen we het 'schemer' niveau in. Op P3.5 sluiten we vervolgens een solid-state relais aan via een weerstand, deze schakelt de lamp aan/uit. Tenslotte sluiten we een signalerings LED via een weerstand aan op P3.2.Het programma gebruikt een korte vertraging en P3.7 om een hysterese aan de schakeldrempel toe te voegen hiermee wordt voorkomen dat rond zonsop- en zonsondergang de lamp gaat knipperen. De LED gaat bij het opstarten even knipperen en werkt daarna tegengesteld aan de lamp. D.w.z. dat de LED aan is als de lamp uit is en andersom. Over de softwareDe software schakelt de lamp onmiddelijk in als het lichtniveau laag is. Zodra het licht wordt, wordt er een timer gestart die er voor zorgt dat de lamp na twee seconden uitgeschakeld wordt. Korte lichtveranderingen schakelen de lamp dan niet uit. |
b4schemer.frt | (ByteForth source) |
\ De schemerschakelaar neemt 133 bytes in beslag. 89C2051 TARGET \ Zet doel chip ASSEMBLER P3: .2 BIT-SFR LED \ Led uitgang P3: .5 BIT-SFR LAMP \ Solid state relaisuitgang P3: .6 BIT-SFR DONKER? \ Schemerschak. uitgang P3: .7 BIT-SFR HYSTERESE \ Wijzig schakelniveau WORK VARIABLE TIMER \ Afvaltijd bij zonsopgang : KNIPPER ( -- ) \ Toon opstarten 5 FOR \ Knipper 5 maal SET LED 200 MS CLEAR LED 200 MS NEXT ; : LAMP-AAN ( -- ) SET HYSTERESE \ Verhoog lichtgrens SET LED \ Led uit CLEAR LAMP \ Lamp aan CLEAR TIMER ; \ Reset afvaltimer : LAMP-UIT ( -- ) FROM TIMER 10 = IF \ 2 seconden voorbij? CLEAR HYSTERESE \ Verlaag donkergrens CLEAR LED \ Led aan SET LAMP \ Lamp uit ELSE INCR TIMER \ Stel afschakelen uit THEN ; : SCHEMERSCHAKELAAR ( -- ) SETUP KNIPPER CLEAR TIMER \ Start schemerschakelaar BEGIN DONKER? IF \ Wordt het donker? LAMP-AAN \ Ja, ... ELSE LAMP-UIT \ Nee, ... THEN 200 MS \ Wacht even AGAIN ; ' SCHEMERSCHAKELAAR RESET-VEC SET-VECTOR |