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 32 mm x 24 mm 10 mm x 23 mm
Linsendurchmesser 23 mm 10 mm
Umgebungstemperatur -15 °C bis + 70 °C -20 °C bis +80 °C
Reichweite 3 m bis 7 m (Regelbar) 3 m
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 3 m sehr zuverlässig. Die fest eingestellten 8sek. Signaldauer kann man ggf. im Sketch programmatisch manipulieren, daher sehe ich als einzigen Minuspunkt die geringere Reichweite gegenü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 Kommentare

  1. Hallo Stefan,
    wäre es möglich mit dir direkt zu kommunizieren, ich benötige für ein spezielleres Projekt Unterstützung.
    Beste Grüße
    siggy

Kommentar hinterlassen

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