PIR rörelsedetektor med Arduino: Drivs på lägsta energiläge som konsumtion (4 / 5 steg)
Steg 4: Skiss: avstängning och avbryta baserade vakna (lägre energiförbrukning)
Om du vill spara/batteri förbrukning, skulle det vara fördelaktigt att sätta arduino i lägsta energiläge som konsumtion eller övervintra tills PIR-sensor detekterar rörelse. Vi kommer att uppnå detta med hjälp av maskinvaruavbrott och ner läget Power av arduino ombord ATMEGA328P mikrokontroller. Vi kommer dessutom inaktivera analog till digital omvandlare (ADC) eftersom vi inte behöver någon ADC.
"Power-down läget sparar register innehållet men fryser Oscillator, inaktivera alla othe r chip funktioner till nex t avbrott eller hårdvara Återställ."
I denna skiss, vi använder ingångsstift D2 eller Avbryt 0 som produktionen av PIR sensor är ansluten.
Eftersom PIR detektor själv har staten timer, behöver vi inte någon timer från arduino att hålla utgångsstiftet D13 på fast tid. OM tid kan fysiskt justeras med Tx potentiometer, som visas i föregående steg.
-Arduino på första power ON, blinkar LED på stift 13 för en minut, detta är bara för visuell indikering om uppvärmningsperiod krävs av PIR-sensor för att stabilisera till rumstemperatur.
för (int jag = 1; jag < = 120; i ++) {
digitalWrite (LedPin, hög);
Delay(100);
digitalWrite (LedPin, låg); Delay(100); }
-Arduino hålls i IDE tills D2 pin är låg.
I funktionen Hibernate();
Vi kommer att sätta alla stift för INPUT förutom stift 13 som vi har anslutit vår LED eller relä.
för (int jag = 0; jag < 20; i ++) {
om (jag! = 13)
pinMode (i, ingång);}
och ange arduino sova sätt till lägsta energiläge som konsumtion
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
och inaktivera ADCs
ADCSRA & = ~ (1 << 7);
och inaktivera brun ut detektor används för att kontrollera inspänning nivå
sleep_bod_disable();
Vi fäster avbrott 0 av stift 2 till identifiera förändring i läget för signal på pin 2
attachInterrupt (PIRsensorInterrupt, wakeUpNow, förändring);
äntligen anropas sova funktionen med hjälp av
sleep_mode();
-När PIR-sensor detekterar rörelse, utdata PIR-sensor-tillståndet ändras från låg till hög. Stigande kanten signalen plockas upp av avbrott 0, arduino vaknar från viloläge, avbryter inaktiveras tillfälligt och följaktligen stift D13 går hög.
När, som tiden gått, PIR utgång igen återgår till låg från hög, fallande kant signalen väcker en annan avbrott, att sätta arduino i viloläge igen.