Arduino Lektion 39: PIR Bewegungsmelder HC-SR505

Der Bewegungsmelder HC-SR505 ist baugleich mit dem HC-SR501 welchen ich bereits im Tutorial Arduino, Lektion 15: Pyroelektrischer Infrarot Motion Sensor (PIR) beschrieben habe. Nun möchte ich jedoch den „kleinen Bruder“ mir vorknöpfen.

PIR Sensor HC - SR505
PIR Sensor HC – SR505

Gleichzeitig werde ich die beiden PIR Sensoren miteinander vergleichen.

PIR Sensoren im Vergleich
PIR Sensoren im Vergleich

Die beiden Shields unterscheiden sich nur von den Abmaßen und der Leistung (wow) jedoch kann man den HC SR501 in der Empfindlichkeit und der Dauer des Signals einstellen.

Technische Daten

HC – SR501 HC – SR505
Betriebsspannung 4,5V bis 20V 4,5V bis 20V
Ruhestromaufnahme < 50µA < 60µA
Abmaße 32mm x 24mm 10mm x 23mm
Linsendurchmesser 23mm 10mm
Umgebungstemperatur -15°C bis + 70°C -20°C bis +80°C
Reichweite 3m bis 7m (Regelbar) 3m
Auslösedauer 5sek. bis 5min. (Regelbar) 8sek. +- 30%

Schaltplan

Da die beiden Sensoren über die gleichen PINs verfügen, kann man den gleichen Schaltplan (und damit auch den gleichen Quellcode) verwenden.

PIR Sensor am Arduino UNO
PIR Sensor am Arduino UNO

Quellcode

int buzzerPin = 2;  //Ausgangspin für den Buzzer
int inputPin = 10; // Eingangspin des PIR Sensors
int pirState = LOW; //Status des PIR Sensors

void setup() {
  pinMode(buzzerPin, OUTPUT); //Den Buzzer als Ausgang deklarieren
  pinMode(inputPin, INPUT);  //Den PIR Sensor als Eingang deklarieren
  Serial.begin(9600); //Serielle kommunikation mit 9600 Baud beginnen.
}

void loop(){
  int val = digitalRead(inputPin); //Das Eingangssignal lesen
  if (val == HIGH) { // Prüfen ob der Wert HIGH, also ob ein Signal anliegt
    //Wenn der gespeicherte Status == LOW ist, also wenn vorher kein Signal vorhanden war,
    //dann soll auf dem Seriellen Ausgang der Text ausgegeben werden und der PIR Status auf HIGH gesetzt werden.
    if (pirState == LOW) { 
      Serial.println("Bewegung erkannt!");
      pirState = HIGH;
    }
   //Wenn der gelesene Wert nicht HIGH ist, also es liegt KEIN Signal an.
  } else {
    //Wenn der PIR Status HIGH ist, also es lag ein Signal vorher an,
    //dann soll auf dem Seriellen Ausgang der Text ausgegeben werden und der PIR Status auf LOW gesetzt werden.
    if (pirState == HIGH){
      Serial.println("Bewegung beendet!");
      pirState = LOW;
    }
  }
  
  //Wenn der PIR Status auf HIGH ist dann soll ein Ton ausgegeben werden.
  //Hier könnte auch zusätzlich eine LED oder ähnliches mit angebracht werden.
  if(pirState == HIGH){
    tone(buzzerPin,850, 500);
  }
}

Fazit

Der kleine Bewegungssensor arbeitet auf 3m sehr zuverläßig. Die fest eingestellten 8sek. Signaldauer kann man ggf. im Skecht programatisch manipulieren daher sehe ich als einzigen Minuspunkt die geringere Reichweite gegeüber dem HC-SR501. Was einen deutlichen Pluspunkt bringt ist die geringe Größe was die verdeckte Montage deutlich einfacher gestaltet als beim HC-SR501.

 

3 Gedanken zu „Arduino Lektion 39: PIR Bewegungsmelder HC-SR505

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.