|
|
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
|