Die Anweseinheits- und Bewegungserkennung ist für Hausautomationsysteme durchaus interessant. Daher habe ich mich nach einem (für Arduino auswertbaren) PIR-Modul umgesehen. Bei eBay werden viele derartige Modulle sehr günstig angeboten (natürlich aus China). Die allermeisten Modelle scheinen geringfügige Variationen von derselben Art zu sein (HC-SR501).

Neulich kam meine Bestellung an.

PIR 1 k

 

Technische Daten laut Angebotsbeschreibung:

 Betriebsspannungsbereich 4,5 - 20V
 Ruhestrom <50µA
 Ausgang High 3,3V, Low 0V
 Triggereinstellung H (wiederholbar), L (nicht wiederholbar)
 Verzögerungszeit 5-200S
 Blockade-Zeit 2,5S
 Größe 32mm x 24mm
 Erfassungswinkel <100°
 Reichweite 3-4 m (seitlich), 5-8 m (vorn)
 Betriebstemperatur -15 bis 70 °C

 

Die Einschaltzeit und die Empfindlichkeit können über zwei Regler (Potis) eingestellt werden. Die Trigger-Vorwal wird mittels eines Jumpers vorgegeben. Position 'H' bedeutet, dass bei einer erneut erkannter Bewegung während der Einschaltzeit diese Zeit verlängert wird. Bei der Einstellung 'L' wird der Ausgang nach dem Ablauf der eingestellter Zeitspanne in jedem Fall ausgeschaltet. Die erneute Bewegung kann erst nach Ablauf der Blockadezeit erkannt werden.

Nach dem Einschalten des Sensors benötigt dieser ca. 1 Minute zur Initialisierung. Erst nach dieser Zeit werden die Bewegungen sicher erkannt.

Die Verwendung mit dem Arduino ist denkbar einfach. Außer Betriebspannung ist lediglich der Ausgang an einen beliebigen digitalen Arduino-Pin anzuschließen und dessen Zustand auszuwerden. Bei einer erkannten Bewegung setzt der Sensor die Ausgangsleitung auf HIGH.


Folgender Sketch soll das auf einfache Weise demonstrieren.

/* 
Testprogramm für Mini Bewegungsmelder.

Alexander Schulz 

Das Programm benutzt den PIR-Sensor zum Schalten des auf dem Arduino Board befindlichen LED (an PIN13).

Verdrahtung (UNO, Nano...)

    Sensor pin VCC pin an 5V
    Sensor pin out an Pin 2
    Sensor pin GND pin an GND
 
*/

int ledPin = 13;
int sensorPin = 2;
 
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(sensorPin, INPUT);
}
 
void loop() {
  digitalWrite(ledPin, digitalRead(sensorPin));
  delay(50);
}

 

Kommentare (0)

Cancel or