Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Propeller 8 Kern Controller - C Programmierung

1 - PIR Bewegungsmelder

Abb. 1 - PIR Bewegungsmelder der Fa. Parallax

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.

Abbildung 2 - Arbeitsweise eine PIR

Schaltungsaufbau und Schaltungsskizze

Material
  • 1x  Prop-BoE oder Prop-AB
  • 1x  PIR Sensor
  • 1x  Widerstand 220 Ohm (rot-rot-braun)
  • 3x  Steckdraht
Aufgaben
  • Stelle den PWR-Schalter auf dem Board auf 0.
  • Baue die Schaltung nach Abbildung 3 auf.
Abbildung 3 - Schaltungsaufbau und Schaltskizze

2 - Status des PIR-Sensors überprüfen

Das folgende Programm überprüft permanent den Zustand des PIR und gibt den Ausgangsstatus an.

Aufgaben
  • Gib das Programm PIR_1.c in den SimpleIDE Editor ein und speichere es anschließend ab.
  • Starte das Programm.
  • Richte dein Board so aus, dass die Kunststoffkuppel des PIR Sensors seitlich von dir weg zeigt, du aber gerade noch etwas von der Kuppel sehen kannst.
  • Schalte das Board ein (PWR-Schalter auf 1).
  • Bewege dich nicht, bis im Terminal die Mitteilung Status = 0 erscheint. Der Sensor braucht ca. 45s, bis er seine Grundeinstellung gefunden hat.
  • Als nächstes bewege deine Hand vor der Kunststoffkuppel. Es sollte jetzt im Terminal die Mitteilung erscheinen: Status = 1.

Das Programm PIR_1.c

Programm PIR_1.c
Statusanzeige im Terminalfenster

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.

Abbildung 4 - PIR getriggert

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
  • Speichere das Programm PIR_1.c unter dem neuen Namen PIR_2.c über das Icon Save Project As... ab.
  • Gib die im Programm PIR_2.c markierten Zeilen neu in dein Programm ein und speichere es ab.
  • Wenn der Sensor bereit ist, trigger ihn mit einer schnellen Bewegung und verhalte dich danach bewegungslos. Die Mitteilung "Trigger = 1" erscheint im SimpleIDE Terminal.
  • Wiederhole die schnelle Bewegung alle paar Sekunden; der Wert von Trigger sollte jedesmal erhöht werden.

Das Programm PIR_2.c

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:

  • Füge der bestehenden Schaltung einen Piezo-Lautsprecher hinzu.
  • Lade dir WAV-Dateien in die microSD-Karte und spiele sie über einen Lautsprecher ab.
  • Füge in das Programm oberhalb der WHILE(1)-Schleife einen Pause-Befehl ein, der dir erlaubt, den Bewegungsalarm scharf zu schalten ohne das du selbst das Opfer wirst.
  • Verändere die Tonausgabe, wenn die Triggerzahl über einer vorgegebenen Anzahl liegt, die du selbst vorgibst.
  • Sobald du dein Programm ausgiebig getestet hast, speichere es mit Load EEPROM  & Run im Speicher des Controllers ab. Es steht dir dann auch nach Abschaltung der Energieversorgung beim erneuten Einschalten zur Verfügung.
  • Trenne das Board vom Computer und versorge es über einen Batteriesatz 4xAA.

Damit ist dein batteriebetriebener Alarmmelder fertig und kann als "Wachhund" an jedem beliebigen Ort eingesetzt werden.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf