A11|06 Der PIR-Bewegungssensor
PIR Motion Sensor


Sensorwerte / Mix an Sensoren

Ein Bewegungsmelder mit PIR-Technologie (PIR = Passive InfraRed) erfasst die unsichtbare Wärmestrahlung von sich bewegenden Körpern. Genauer gesagt reagiert der Sensor auf Infrarotstrahlung, die Menschen und Tiere durch Körperwärme erzeugen. Genau dieser Wellenbereich wird vom Sensor erkannt und in digitale Signale umgewandelt. Er kann bei einer Vielzahl von Gelegenheiten eingesetzt werden, um die Bewegung des menschlichen Körpers zu erkennen. Auf eine Änderung der Sonneneinstrahlung reagiert der PIR Sensor nicht, sondern nur auf “Objekte”, die sich in den Messbereich rein oder rausbewegen. Übrigens werden vom Sensor selbst keine Strahlen ausgesendet, wie dies bei Aktiv-Infrarotsensoren der Fall ist. Aus diesem Grund wird er auch als Passiv-Infrarotsensor bezeichnet.

 

Spezifikationen
- Signalart: digital
- Spannung: 3,3V – 18V
- Pinabstand: 2,54mm
- Arbeitsstrom: 15µA
- Arbeitstemperatur: -20 bis 85 ℃
- Ausgabe-Verzögerungszeit (HIGH Level): Etwa 2,3 bis 3 Sekunden
- Erfassungswinkel: 100°
- Erkennungsentfernung: 3-4 Meter
- Pin-Grenzstrom: 100mA

Sie sind klein, stromsparend (15µA), preiswert, selbst auslösend und nutzen sich nicht ab. Aus diesem Grund werden sie häufig in Geräten oder Gebäudeeingängen eingesetzt. In Kombination mit einer Lichtquelle werden sie als automatische Beleuchtung eingesetzt.

Der Erfassungswinkel des PIR-Sensors beträgt 100°. Der maximale Messbereich beträgt 3m bis 4m. Über der Sensorfläche befindet sich eine halbkugelförmige Abdeckung (Fresnel-Linse), die Infrarotstrahlen durchlässt. Die Abdeckung beinhaltet mehrere Sammellinsen, die das Infrarot aus dem Messbereich auf die Sensorfläche bündelt.

Zusammen mit dem Infrarotsensor befindet sich auf dem Modul weitere unterstützende Schaltungen, Widerstände und Kondensatoren. Die Schaltung nimmt die Sensorwerte auf und verarbeitet es zu einem digitalen Ausgangsimpuls. Ist der Sensor aktiviert, wird ein digitales HIGH für ca. 5 Sekunden gesendet und schaltet danach auf LOW.

 

Der Aufbau

Verbinde dein Arduino mithilfe der Jumper Wire mit dem Modul:

 
 

Der minimal Sketch

Wenn sich niemand im Messbereich befindet, sendet der Sketch an den seriellen Monitor fortlaufend die Nachricht “Keiner da.“. Wird der Sensor aktiviert wird die Nachricht "Jemand ist im Messbereich!" gesendet. Beachte, dass der Sensor sehr langsam reagiert und dabei sich alle 5 Sekunden aktualisiert. Kopiere den unteren Sketch, füge ihn in die Arduino IDE ein und lade ihn auf das Arduino-Board rauf.

/********************************************************
A11|06 Der PIR-Bewegungssensor
Mr Robot UXSD / www.mrrobotuxsd.com
*********************************************************/

byte ledPin = 13;  //Pin-Nummer der LED
byte pirPin = 3;   //Pin-Nummer des Sensors
byte pirValue = 0; //Variable zum Speichern der Sensorwerte


void setup()
{ 
  //Initialisiere die Serielle Kommunikation mit 9600 Bits pro Sekunde:
  Serial.begin(9600);

  pinMode(ledPin, OUTPUT); //Den LED-Pin als OUTPUT deklarieren
  pinMode(pirPin,INPUT);   //Den PIR-Sensor als INPUT deklarieren
}


void loop()
{
  //lies den aktuellen Sensorwert
  pirValue = digitalRead(pirPin);

  //Schalte die LED ein oder aus, je nachdem welchen Wert pirValue hat
  digitalWrite(ledPin,pirValue);
  
  if(pirValue == HIGH) //wenn der Sensor aktiviert wird
  {
    Serial.println("Jemand ist im Messbereich!");
  }
  else if (pirValue == LOW) //wenn der Sensor nicht aktiviert wird
  {
    Serial.println("Keiner da.");
  }
  
  delay(500); //Verzögerung
}
 

Schalte den seriellen Monitor ein, indem du in der Arduino IDE in der Menüleiste auf Werkzeuge > Serieller Monitor gehst.

Du solltest nun die folgende Anzeige sehen:

 

Der Sketch im Detail

Der Sketch beginnt mit der Initialisierung von mehreren Variablen:
Der ledPin ist die Variable für die Pinbelegung der LED.
Der pirPin ist die Variable für die Pinbelegung des PIR-Bewegungssensors.
Der pirValue ist die Variable zum Speichern der Sensorwerte.

byte ledPin = 13;  //Pin-Nummer der LED
byte pirPin = 3;   //Pin-Nummer des Sensors
byte pirValue = 0; //Variable zum Speichern der Sensorwerte
 

Der void setup() ist relativ unspektakulär. Hier initialisieren wir die serielle Kommunikation und stellen den Sensor als INPUT ein.

void setup()
{ 
  //Initialisiere die Serielle Kommunikation mit 9600 Bits pro Sekunde:
  Serial.begin(9600);

  pinMode(ledPin, OUTPUT); //Den LED-Pin als OUTPUT deklarieren
  pinMode(pirPin,INPUT);   //Den PIR-Sensor als INPUT deklarieren
}
 

In der void loop() Schleife lesen wir den Sensorwert mit digitalRead(pirPin); ein und speichern ihn in der Variable pirValue. Das Ergebnis pirValue (HIGH oder LOW) wird in digitalWrite() für die LED benutzt, um sie ein- oder auszuschalten.

void loop()
{
  //lies den aktuellen Sensorwert
  pirValue = digitalRead(pirPin);

  //Schalte die LED ein oder aus, je nachdem welchen Wert pirValue hat
  digitalWrite(ledPin,pirValue);
  ...
}
 

Wenn der PIR-Sensor aktiviert wird, geht das Programm in die if-Abfrage. Hier wird die Nachricht “Jemand ist im Messbereich!“ an den seriellen Monitor gesendet. Ist der PIR-Sensor nicht aktiviert, wird in else if() fortlaufend die Nachricht “Keiner da.“ geschickt.

if(pirValue == HIGH) //wenn der Sensor aktiviert wird
{
  Serial.println("Jemand ist im Messbereich!");
}
else if (pirValue == LOW) //wenn der Sensor nicht aktiviert wird
{
  Serial.println("Keiner da.");
}
    
delay(500); //Verzögerung
 

Falls du die hier beschriebenen Elektronik-Module nicht hast kannst du sie in meiner Einkaufsliste finden. Warum ich selber hauptsächlich mit Modulen der Marke Keyestudio arbeite erläutere ich unter diesem Blog-Artikel.

In dieser Übersicht äußere ich Empfehlungen aller Art.

Hier kommst du wieder zur Übersicht aller Module.