Arduino erkennt Bewegung mittels PIR Bewegungsmelder

In diesem Tutorial möchte ich Ihnen zeigen, wie man einen Pir-Sensor, also einen passiven Infrarot Sensor (Bewegungsmelder) mit dem Arduino ansteuert und auf Bewegungen reagiert. Für dieses Tutorial habe ich mir einen HC-SR501 bei eBay besorgt. Dieser ist qualitativ recht hochwertig und bereits für 3 Euro zu bekommen.

PIR Sensor

Eigenschaften des HC-SR501

  • Empfindlichkeit einstellbar
  • Signal Low Zeit Einstellbar
  • Digitales TTL Ausgangssignal
  • Low Signal oder Wiederholendes Low Signal bei Bewegungserkennung
  • Arbeitstemperatur -20 – 80°C
  • Größe 32 x 24 x 18mm
  • Reichweite max. 7m

Der HC-SR501 verfügt über zwei Potis. Mit dem linken Poti lässt sich die Empfindlichkeit und mit dem rechten die Verzögerung einstellen. Das bedeutet, je höher die Verzögerung eingestellt ist um so länger dauert es bis der Sensor eine erneute Bewegung detektiert.

Passiver Infrarot Bewegungsmelder

Angesteuert wird der Sensor über gerade einmal einen Pin. Ansonsten müssen lediglich +5V und GND anliegen um den Sensor zur Arbeit zu bewegen.

Verbinden des Sensors mit dem Arduino

Wie bereits angedeutet gibt es hier nicht viel zu schreiben.
Es müssen lediglich +5V, GND und der mittlere Pin an einen digitalen Ausgang des Arduino angeschlossen werden. Das war es dann auch schon. In meinem Beispiel schließe ich den mittleren Pin des Sensors an den digitalen Pin 3 am Arduino an.

Passiver Infrarot Bewegungsmelder auf Steckbrett

 

Arduino Sketch

Dies ist eine ganz einfache Version des Sketches. Wird eine Bewegung erkannt dann leuchtet die LED an Pin13 des Arduino so lange bis keine Bewegung mehr detektiert wird.

static const int triggerPin = 3;   // Pin für PIR-Sensor
static const int ledPin     = 13;  // Digital Pin LED oder Summer
unsigned int val            = 0;   // Wert des triggerPin 
unsigned int pirState       = LOW; // Status des Bewegungsmelders beim start auf LOW (Keine Bewegung) 


void setup() {
  pinMode(triggerPin,INPUT);
  pinMode(ledPin,OUTPUT);
}


void loop() {
  val = digitalRead(triggerPin);
        
  if (val == HIGH) {
    if (pirState == LOW) {
      pirState = HIGH;
    }
  }
  else {
    if (pirState == HIGH) {
      pirState = LOW;
    } 
  }
  digitalWrite(ledPin, pirState);
}

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast.

4 Kommentare zu “Arduino erkennt Bewegung mittels PIR Bewegungsmelder

  1. Hallo,
    vielen Dank für das Tutorial!
    Warum werden 2x int Variabel verwendet, würde nicht eine boolean reichen?
    Schöne Grüße

  2. Hi,
    wie kann man HC-SR501 mit TLC5940NT bauen?
    z.B. für treppenbeleuchtung
    Vielen Dank im Voraus
    Beste Grüße

  3. Ich habe gestern versucht einen PIR an einem Arduino Uno zu testen, signal ist aber ständig High? Muss ich den interrupt dettachen?
    Lg, Claus