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.
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)