Ein Pyroelektrischer Sensor, auch PIR-Sensor (eng. "Pyroelectric Infrared Sensor" bzw. "Passive Infrared Sensor") ist ein Halbleitersensor, der zur Detektion von Temperaturänderungen dient. PIR-Sensoren beruhen auf der namensgebenden Pyroelektrizität, einer Eigenschaft einiger piezoelektrischer Halbleiterkristalle. Dabei führt eine Temperaturänderung ΔT zu einer messbaren Änderung der elektrischen Spannung.
Das Modul hat einen Stabilisator HT7133-1 (3,3V; 30mA Low Power LDO, SOT89) und eine
Schutzdiode (SMD-T4) zum Schutz vor falscher Polung.
Der Chip auf der Platine des Moduls ist nicht gekennzeichnet, aber durch einige Recherche scheint es der
EG4002A PIR Controller der chinesischen Firma EG Micro zu sein.
Die Anschlüsse sind auf der Platine mit "+" (=Vcc), "out" (=Data out) und
"-" (=GND) gekennzeichnet.
Das Modul hat standardmäßig eine Verzögerung von ~8 Sekunden, d.h. sobald eine Bewegung erkannt wurde,
bleibt das Modul für diese Zeit aktiv. Und erst, wenn nach dieser Zeit keine Bewegung wahrgenommen wird,
schaltet das Modul wieder in den LOW-Modus.
Anscheinend kann man aber einen der zentralen Kondensatoren (im Bild rot markiert) austauschen und damit diese
Verzögerungszeit ändern:
- 1nF ≙ 10s Verzögerung
- 100pF ≙ 1s Verzögerung
- 10pF ≙ 0,1s Verzögerung
Allerdings geht dies wohl zu Lasten der Start-Zeit des Moduls (dauert angeblich bis zu 10 Sekunden).
Es gibt auch einen Hinweis, dass der 150kΩ Widerstand (auf der Platine als "1BD" benannt) mit
einem höheren Widerstand ausgetauscht werden müsste, um höhere Verzögerungszeiten zu erreichen.
Beides habe ich aber noch nicht getestet!
In der Schaltung geht es darum, eine LED zum Leuchten zu bringen, sobald eine Bewegung erkannt wurde.
Außerdem wird eine Meldung über die serielle Konsole ausgegeben.
Durch die momentane Umgebungswärme (>28°C) ist das Modul kaum noch auf einen inaktiven Zustand zu bekommen.
Durch die Abschirmung des Moduls und der LED (auch diese strahlt IR-Licht aus) wurde das Verhalten wieder
hergestellt.
#define PIN_LED 2
#define PIN_SR505 10
#define BUFFER_TIME 1000
unsigned long lastMeasure = 0;
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_SR505, INPUT);
Serial.begin(9600);
}
void loop()
{
if ((millis() - lastMeasure) > BUFFER_TIME) {
lastMeasure += BUFFER_TIME;
if (digitalRead(PIN_SR505) == HIGH) {
Serial.println("Motion detected!");
digitalWrite(PIN_LED, HIGH);
} else {
Serial.println("No motion.");
digitalWrite(PIN_LED, LOW);
}
}
}
Pin/Funktion | Erklärung |
---|---|
Time ON delay adjust | Einstellung der Zeitverzögerung nach Auslösung durch Bewegungserkennung. Je höher dieser Wert eingestellt ist, desto länger bleibt am Datenausgang ein HIGH-Signal anliegen, wenn eine Bewegung durch den Sensor erkannt wurde. |
Sensitivity adjust | Einstellung der Reichweite: zwischen 3m bis 7m |
Jumper set |
Schalter zwischen Einzel- oder Mehrfach-Auslöser für die o.g. Zeitverzögerung.
Einzelauslöser: Die Verzögerung beginnt sofort nach dem ersten erkennen einer
Bewegung. Danach wird kein weiteres Signal mehr angenommen bis die nach der
Verzögerungszeit das Ausgangssignal wieder auf LOW gesetzt wurde. Mehrfachauslöser: Jedesmal, wenn Bewegung erkannt wird, wird die Verzögerungszeit wieder auf 0 gesetzt und beginnt von vorne. |
Pin: GND | Masse/Ground |
Pin: Out | Datenausgang |
Pin: Vcc | Spannungseingang: +5V bis +20V |
Thermistor socket (optional) | An diese Lötkontakte kann ein Thermistor angebracht werden, um bei höheren Umgebungstemperaturen eine Leistungssteigerung zu erreichen. Laut Datenblatt: "Temperature compensation (optional, factory reset): In the summer when the ambient temperature rises to 30°C to 32°C, the detection distance is slightly shorter, temperature compensation can be used for performance compensation." |
Photoresistor socket (optional) | An diese Lötkontakte kann ein LDR angebracht werden, um die Steuerung abhängig von der Lichteinstrahlung zu machen. Laut Datenblatt: "Photosensitive control (optional, not factory-set) can be set photosensitive control, day or light intensity without induction." |
Input voltage stabilizer | Stabilisiert die Spannung bei unterschiedlicher Eingangsspannung. |
Hinweis: Es gibt eine sogenannte "sensor blocking time", währenddessen der Sensor keine Bewegung erkennen kann. Diese Zeit beginnt direkt dem Abfallen Ausgangssignals auf LOW und dauert ca. 3 Sekunden.
(siehe oben)
Hinweis zu den beiden Bewegungsmodulen: Vielleicht lag es am Aufbau oder am Sketch, aber die Erkennung von Bewegung war für beide Module nicht besonders zuverlässig. Eine zu warme Umgebungstemperatur kann ebenfalls die Messungen stören!
MH-SR602 | Arduino Uno/Nano |
---|---|
[+] | VCC (hier: 5V des Arduino) |
[-] | GND (0V) |
OUT | digitaler Eingang (hier: D4) |
Hinweis: Zusätzlich sollten zur Sicherheit/Stabilität ein 100µF Elektrolykondensator zwischen [+] und [-]
des PIR-Moduls sowie ein 4,7kΩ-Widerstand zwischen OUT
und dem digitalen Eingang des Arduino
geschaltet werden.
Dieser einfache Sketch lässt eine LED aufleuchten, sobald der PIR-Sensor eine Bewegung erkennt und ein HIGH-Signal an seinen Ausgang sendet.
#define PIN_LED 5
#define PIN_PIR 4
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_PIR, INPUT);
}
void loop()
{
if (digitalRead(PIN_PIR) == 1) {
digitalWrite(PIN_LED, HIGH);
} else {
digitalWrite(PIN_LED, LOW);
}
delay(100);
}
zurück