Wikipedia
PIR-Sensoren (Pyroelektrische Sensoren) beruhen auf der namensgebenden Pyroelektrizität. PIR-Sensoren reagieren nicht wie andere Temperatursensoren auf ein bestimmtes zeitlich konstantes Temperaturniveau, sondern nur auf die Veränderung der Temperatur.
PIR-Sensoren werden unter anderem bei Bewegungsmeldern eingesetzt um die ausgestrahlte Wärmestrahlung auf einige Meter Entfernung zu detektieren. Damit können verschiedene Aktionen ausgelöst werden, beispielsweise das Aktivieren einer Beleuchtung oder das Auslösen einer Alarmmeldung.

Technische Daten
Bezeichnung | HC-SR501 |
Reichweite | ~ 3-7m |
Erfassungswinkel | ~ 140° |
Betriebsspannung (Vcc) | 4.5-20V |
Ruhestrom | 65 µA |
Ausgangsspannung (Output) | 3,3V high / 0 V low |
Schaltzeit | 5 … 200 Sekunden |
Blockade-Zeit | 2,5 Sekunden |
Betriebstemperatur | -15 … 70° |
Abmessungen Platine | 32 x 24 mm |
Schrauben Lochabstand | 28 mm |
Lochdurchmesser | 2 mm |
Durchmesser Sensorlinse | 23 mm |

Funktion
Die Einstellung des PIR-Moduls erfolgt über zwei Potentiometer und einen Jumper (siehe Bild oben).
Potentiometer
- Potentiometer rechts („Hold Time“)
- Haltezeit des Signals nach dem Erkennen einer Wärmequelle
- Potentiometer links („Sensivity“)
- Empfindlichkeit und damit auch die Reichweite
Jumper
Ich lese immer wieder, dass „neuere“ Versionen des HC-SR501 keinen Jumper mehr haben. Was dann aber die „default“-Einstellung ist, habe ich nicht verstanden.
Die Modelle, die ich bisher gefunden hatte, haben einen Jumper für die Arbeitsweise:
- Trigger Methoden
- L = unrepeatable trigger (ein Impuls innerhalb der Dauer der Haltezeit)
- H = repeatable trigger (Impuls bei jeder erkannten Bewegung)
Ich habe unterschiedliche Erklärungen gefunden. Hier nun meine Erfahrung:
Beispieleinstellung:
- Haltezeit = 30 Sekunden
- Jumper = L
Das Modul setzt den Ausgang bei erkannter Bewegung auf high und hält dieses Signal für 30 Sekunden. Bei jeder neuen Bewegung starten die 30 Sekunden neu. Erst bei Ablauf von 30 Sekunden ohne Bewegung geht der Ausgang auf low.
- Haltezeit = 30 Sekunden
- Jumper = H
Das Modul setzt den Ausgang bei erkannter Bewegung auf high und hält das Signal 30 Sekunden. Unabhängig von erkannter Bewegung geht das Signal anschließend auf low. Wird neue Bewegung erkannt, beginnt die Prozedur erneut.
Meine Absicht ist es, jegliche Logik in Node-Red/ ioBroker abzubilden. Den Geräten lasse ich dabei wenig Spielraum. Die Haltezeit möchte ich also selber regeln und setze die Haltezeit am PIR-Sensor auf ein Minimum (rechtes Potentiometer ganz nach links drehen). Da das Minimum bei ca. 3-5 Sekunden liegt, kann ich fast jede Bewegung an das Smart-Home-System senden. Damit sich die Haltezeit nicht, wie oben beschrieben, verlängert, wähle ich die Jumperstellung „H“ (repeatable-Modus).
Betrieb mit 3.3V
Der Jumper-Pin auf der Platinen-Innenseite bietet die Möglichkeit der Stromversorgung mit 3,3V.
Meine Einstellungen
Da ich die Daten in Node-Red verarbeite und dort durch die Bewegung einen Timer starte, der bei weiteren Bewegungen zurück gesetzt wird, habe ich mich für folgende Einstellung entschieden:
- Haltezeit auf Minimum (ca. 3-5 Sekunden)
- Empfindlichkeit nach Bedarf
- repeatable-Modus
Die minimalste Haltezeit ist ca. 3-5 Sekunden. Nach dieser Zeit kann neue Bewegung erkannt und das Signal weitergereicht werden. In Node-Red habe ich einen Timer auf 120 Sekunden konfiguriert. Dieser kann somit bei jeder neuen Bewegung zurück gesetzt werden. Bei bestimmten Ereignissen möchte ich diesen Timer auch zur Laufzeit verändern (verlängern/ verkürzen), ich muss mich dabei nicht auf den „Timer“ im PIR-Sensor verlassen und kann das ganze Geschehen selber verändern.

Arduino Test-Code
int Status = 13; // Digital pin D7
int sensor = 14; // Digital pin D8
void setup() {
// put your setup code here, to run once:
Serial.begin(57600);
pinMode(sensor, INPUT); // declare sensor as input
pinMode(Status, OUTPUT); // declare LED as output
}
void loop() {
// put your main code here, to run repeatedly:
long state = digitalRead(sensor);
if(state == HIGH) {
digitalWrite (Status, HIGH);
Serial.println("Motion detected!");
delay(1000);
}
else {
digitalWrite (Status, LOW);
Serial.println("Motion absent!");
delay(1000);
}
}
2 Kommentare zu „Info: PIR Sensor HC-SR501“