Vybraný požární senzor pro Arduino poskytuje digitální výstup OUT, tedy informaci sepnuto-nesepnuto. Tento senzor funguje na teplotním jevu při vzniku požáru, kdy se v místnosti začne zvyšovat teplota. Pokud tedy tento požární senzor umístíme na předpokládané ohnisko požáru, například na linku nad plynovým vařičem, můžeme poměrně spolehlivě detekovat zvýšenou teplotu při vzniku požáru.
Na modulu s požárním senzorem je jako hlavní prvek umístěné teplotní čidlo a společně s operačním zesilovačem a trimrem můžeme nastavit požadovanou teplotu, při jejímž překročení budeme detekovat požár. Pro testování je tedy možné využít svíčku nebo zapalovač, případně s nastavenou nízkou teplotou pouze ohřát teplotní senzor sevřením mezi prsty.
Tento modul s požárním senzorem má 3 propojovací piny. Propojení s Arduinem je jednoduché a uvedené na obrázku níže. Stačí tedy připojit Gnd na zem, OUT na libovolný digitální pin a +5V na 5V napájení Arduino desky. Signál OUT je v klidovém režimu roven Gnd a při překročení nastavené teploty se přepne do log1, tedy napětí rovnému přibližně +5V.
Ukázkový kód pro zapojení a vyzkoušení požárního senzoru obsahuje jako první inicializaci digitálního vstupu zvukového senzoru a proměnných, které slouží pro detekci překročení nastavené teploty, sepnutí Alarm módu, měření času od sepnutí a nastavení počtu milisekund pro uvedení do klidového režimu od narušení.
V podprogramu setup nejprve nastavíme komunikaci po sériové lince s rychlostí 9600 baud a poté nastavíme vstup z požárního senzoru jako digitální. V loop smyčce se nachází příkazy, které při každém průběhu načtou hodnotu digitálního vstupu do proměnné „teplo“ a poté kontrolují, jestli nebylo detekováno překročení nastavené teploty. Při detekci je pak do proměnné „casSepnuti“ uložen pomocí funkce „millis()“ aktuální čas od zapnutí Arduina při neaktivovaném Alarmu je vytištěna zpráva „Detekce pozaru!“. Po této zprávě se následně nastaví proměnná pro Alarm jako splněná a neopakuje se tedy při nové detekci tištění informace.
Při novém průběhu smyčkou loop je v případě klidového režimu zkontrolována doba mezi aktuálním časem a časem uloženým při posledním sepnutí. V případě, že rozdíl těchto časů je větší, než jsme si nastavili v proměnné „pauzaPoSepnuti“, a zároveň byl v předchozím případě spuštěn Alarm, dojde k vytištění zprávy o přepnutí do klidového režimu a je vynulována proměnná Alarm. Pro testovací režim jsem nastavil tuto prodlevu na 2 vteřiny, v praxi pak samozřejmě bude tato doba delší.
// Arduino požární senzor // číslo pinu připojeného senzoru const int senzor = 2; // proměnná pro detekci dosáhnutí // nastavené teploty int teplo = HIGH; // proměnná pro sepnutí Alarm modu boolean Alarm = false; // časová proměnná pro měřeni času sepnutí unsigned long casSepnuti; // časová proměnná pro nastavení počtu milisekund // pro uvedení do klidového stavu od narušeni int pauzaPoSepnuti = 2000; void setup () { // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); // inicializace digitálního vstupu pinMode (senzor, INPUT); } void loop () { // načtení hodnoty digitálního vstupu teplo = digitalRead (senzor); // při detekci dosažení nastavené hladiny teploty if (teplo == HIGH) { // uložení času sepnutí casSepnuti = millis(); // při první detekci vytiskne zprávu o detekci požáru // pro nové tisknutí musí proběhnout vrácení do klidového režimu if (!Alarm){ Serial.println("Detekce pozaru!"); Alarm = true; } } // při klidovém režimu udělej následující else { // pokud je rozdíl mezi časem sepnutí a aktuálním časem // vetší než nastavená pauzaPoSepnuti a zároveň byl sepnutý Alarm, // vytiskni informaci o klidovém režimu a nastav Alarm pro nové použití if( (millis()-casSepnuti) > pauzaPoSepnuti && Alarm){ Serial.println("Klidovy rezim."); Alarm = false; } } }
Po nahrání programu do Arduino desky si můžeme otevřít Sériový monitor a sledovat informace o detekci nastavené teploty při jejím překročení a následném klidu. Musíme však počítat s tím, že bude nutné umístit celý modul do vhodné vzdálenosti od zdroje tepla, abychom zamezili falešným spuštěním od nežádoucích zdrojů, například při normálním vaření.
Seznam použitých komponent:
http://dratek.cz/arduino/973-arduino-pozarni-senzor-1424115579.html
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
http://dratek.cz/arduino/844-arduino-nepajive-pole.html
http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1063-arduino-vodice-samec-samec-40-kusu.html