Info: PIR Sensor HC-SR501

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

BezeichnungHC-SR501
Reichweite~ 3-7m
Erfassungswinkel ~ 140°
Betriebsspannung (Vcc)4.5-20V
Ruhestrom65 µA
Ausgangsspannung (Output)3,3V high / 0 V low
Schaltzeit5 … 200 Sekunden
Blockade-Zeit2,5 Sekunden
Betriebstemperatur-15 … 70°
Abmessungen Platine32 x 24 mm
Schrauben Lochabstand28 mm
Lochdurchmesser2 mm
Durchmesser Sensorlinse23 mm
Daten zum HC-SR501

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.

Gehäuse im 3D-Druck

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

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

Erstelle deine Website mit WordPress.com
Jetzt starten
%d Bloggern gefällt das: