Start Elkretssimulator Karnaughdiagram Quine McCluskey


Rörelsesensor (PIR-sensor)

En Passiv Infraröd Sensor (PIR) mäter mängden infraröd strålning inom ett visst mätområde. Infraröd strålning är det vi brukar kalla värme. Alla levande kroppar utstrålar en viss mängd värme. Genom att identifiera närvaron av och mäta denna värme så kan vi på ett enkelt sätt bygga en sensor som t.ex. reagerar på att en levande varelse kliver in i ett rum.






Med ovan uppkoppling kan man enkelt testa sensorn. Man kan notera att sensorn reagerar på värme (t.ex. mänsklig närvaro) men man får en signal som blir hög och låg med ett intervall på kanske 10 sekunder.

#define PIR_INPUT 2
#define ALARM_OUT 13

void setup() 
{
  Serial.begin(9600);
  pinMode(PIR_INPUT, INPUT); 
  pinMode(ALARM_OUT, OUTPUT); 
}

void loop() 
{ 
  
  if(digitalRead(PIR_INPUT))
  {
    digitalWrite(ALARM_OUT, HIGH);
  }
  else
  {
    digitalWrite(ALARM_OUT, LOW);    
  }
    
  Serial.println(digitalRead(PIR_INPUT));
}

Vad man önskar sig - om man tänker sig en mer realistisk situation - är t.ex. en sensor som tänder en lampa eller startar en badrumsfläkt eller något annat och att den lyser eller snurrar en stund när den väl startat. Säg att man går in i ett badrum, då vill man att fläkten skall snurra 10 minuter efter att man lämnat rummet, för att vädra ut all fukt.

Vi kan åstadkomma detta på följande sätt. I exemplet nedan har jag dock använt 1 minut som fördröjning.

#define PIR_INPUT 2
#define ALARM_OUT 13

long int timerCount = 0;

void setup() 
{
  Serial.begin(9600);
  pinMode(PIR_INPUT, INPUT); 
  pinMode(ALARM_OUT, OUTPUT); 
}

void loop() 
{ 
  delay(100); // vänta 0.1 s
  timerCount++;
  // 1 min = 600 tiondelars sekund
  if(timerCount>600)
  {
    digitalWrite(ALARM_OUT, LOW);     
  }
  
  if(digitalRead(PIR_INPUT))
  {
    timerCount = 0;
    digitalWrite(ALARM_OUT, HIGH);
  }    
  Serial.println(digitalRead(PIR_INPUT));
}

Varje gång någon rör sig och sensorn reagerar så nollas timerCount och utsignalen blir hög. Den förblir sedan hög tills timerCount nått 600 tiondelars sekunder, vilket är en minut. Där blir signalen åter låg. Om sensorn aktiveras medans nedräkningen sker, så nollställs nedräkningen. Dvs det krävs 1 minut av frånvaro för att stänga av fläkten eller lampan eller vad det nu är.



Om du med en rörelsesensor vill slå av eller på ett relä som i sin tur styr en fläkt eller lampa, så titta här.