Ein PIR Sensor (passive infrared) reagiert in einem Erfassungskegel von ca. 180° auf eine sich ändernde Wärmestrahlung im infraroten Bereich, wie sie von Menschen und Tieren ausgesendet werden. Auf den infraroten Lichtanteil der Sonneneinstrahlung reagiert der Sensor nicht, da keine Änderungsgröße damit verbunden ist.
Der Sensor reagiert auf infrarote Lichteinstrahlung, misst keine Wärme und er selbst sendet keine Energie aus, ist, wie der Name schon sagt, passiv.
Unter der milchig weißen, für IR-Licht durchlässigen, Kunststoffkuppel, die wie ein fächerförmiges Gitter wirkt, befindet sich die Sensorfläche. Jede der einzelnen Sammellinsen sorgt dafür, dass das infrarote Licht auf verschiedene Zonen der Sensorfläche fällt; dazwischen gibt es Bereiche, die nicht von der Sammellinse erfasst werden.
Bewegt sich nun ein Körper an der Kunststoffkuppel vorbei, empfängt die Sensorfläche Infrarotstrahlung immer dann, wenn er sich vor einer der Sammellinsen bewegt; dies führt zu einer Signalfolge "warm - kalt - warm - kalt" und bedeutet für den Sensor, dass ein Objekt in seinem Erfassungsbereich ist; er gibt ein Signal HIGH an einen angeschlossenen Mikrocontroller ab.
Schaltungsaufbau und Schaltungsskizze
Material |
|
Aufgaben |
|
Das folgende Programm überprüft permanent den Zustand des PIR und gibt den Ausgangsstatus an.
Aufgaben |
|
Das Programm PIR_1.c
Wie arbeitet das Programm PIR_1.c?
Der eigentliche Programmcode befindet sich in der Endlosschleife WHILE(1)... Der Befehl
int status = input(5)
speichert den vom PIR festgestellten Wert (0, wenn keine Veränderung der IR-Strahlung und 1, wenn eine Veränderung der Infrarotstrahlung festgestellt wurde) über P5 im Speicher status ab.
Über einen üblichen print-Befehl wird eine entsprechende Meldung im Terminal ausgegeben. Das Formatierungszeichen %c steht für die Kontrollzeichen von HOME und CLREOL. HOME setzt den Cursor vor jeder Textausgabe im Terminalfenster nach oben links und CLREOL (clear end of line) löscht alle Zeichen in der Zeile.
Was du wissen solltest!
Was hat es eigentlich mit diesem rötlichen Leuchten im PIR auf sich?
Es kommt von zwei LEDs im PIR Sensor und zeigt an, dass der Sensor getriggert wurde. Üblicherweise geschieht dies bei jedem Einschalten bzw. Neustart des Programms und durch sich bewegende Körper, die infrarotes Licht abgeben. Der Sensor verbleibt in dem Trigger-Zustand für eine bestimmte Zeit und sendet ein HIGH Signal an den angeschlossenen Controller.
Versuch mal dies!
Vielleicht hast du ja inzwischen festgestellt, dass der Sensor bei einer schnellen Bewegung für mehrere Sekunden im getriggerten Zustand verharrt, obwohl sich zwischenzeitlich nichts mehr in seinem Umfeld bewegt. Im Programmbeispiel wird der Ausgang des Sensors alle 200ms abgefragt. Das ist häufiger als eigentlich notwendig, wenn der Sensor bereits getriggert ist und vielleicht nicht häufig genug, wenn du erwartest, dass das System sofort auf eine Bewegung reagiert. Es ist vielleicht ganz hilfreich einmal auszutesten, wie häufig der Sensor getriggert wurde. Der folgende Versuch soll das zeigen.
Aufgaben |
|
Das Programm PIR_2.c
Die Endlosschleife wird in diesem Programm schneller durchlaufen, da der Pausenwert in Zeile 17 des Programms von 200ms auf 5ms zurückgesetzt wurde.
Wurde der Sensor getriggert, dann sorgt eine Pause von 4000ms dafür, dass die Mitteilung nur einmal im Terminal erscheint, weil der Sensor genug Zeit zum Rücksetzen des Triggerzustandes von 1 auf 0 hat. Sollte dein Sensor mehr als eine Mitteilung im Terminal ausgeben, dann musst du versuchen diese Zeit entsprechend anzupassen.
Jetzt kommst du!
Hier sind ein paar Ideen, die alle irgendwie in Richtung Alarmanlage gehen:
Damit ist dein batteriebetriebener Alarmmelder fertig und kann als "Wachhund" an jedem beliebigen Ort eingesetzt werden.