Infračervený senzor plamene

Senzor plamene je vstupní modul, s kterým můžeme detekovat oheň v okolí Arduina. Tento modul funguje jako infračervený detekční senzor, který detekuje plamen či podobné světlo o vlnové délce 760 nanometrů. Co se týká detekční vzdálenosti, tak ta je závislá na velikosti zdroje záření, ale může být až 80 centimetrů. Další výbornou vlastností je vysoká citlivost senzoru a snímací úhel 60 stupňů. Na modulu se společně s infračerveným senzorem nachází také operační zesilovač, který slouží jako komparátor. My tedy můžeme pomocí trimru nastavit detekční hladinu pro digitální výstup, ale pokud by nám tento výstup nestačil, můžeme pracovat přímo s analogovým napětím vyvedeným na pinu modulu. Velikost tohoto modulu je 32x14 mm a pro snadnou montáž je na plošném spoji umístěn montážní otvor.

Pro úspěšné propojení senzoru plamene s Arduinem stačí propojit celkem čtyři vodiče. Propojíme A0 s pinem A0, D0 s pinem D2, GND se zemí Arduina a VCC s 3,3 nebo 5 V Arduina. Pro analogový výstup je možné použít také ostatní analogové piny Arduina, ale pro digitální vstup je nutné vybrat pin, který slouží jako přerušovací. Seznam těchto pinů pro jednotlivé desky si můžete prohlédnout zde.

Ukázkový kód obsahuje na svém začátku nastavení čísel propojovacích pinů. V podprogramu setup nastavíme nejprve komunikaci po sériové lince, následně nastavíme oba vstupní piny jako vstup a v posledním kroku nastavíme pro digitální pin jeho přerušovací parametry. Mezi tyto parametry patří číslo pinu, název podprogramu volaného při detekci přerušení a typ detekce přerušení, kdy v tomto případě je to změna z logické jedničky na logickou nulu. V nekonečné smyčce loop načteme jako první napětí ze vstupu senzoru do proměnné a následně ho do druhé proměnné přepočteme z rozsahu analogového vstupu 0-1024 na rozsah 0-3. Tento přepočet slouží pro zjednodušení detekování plamene a pokud byste chtěli detekovat stále stejně velký plamen, můžete si vypsat přímo analogovou hodnotu a měřením zjistit, jaká hodnota odpovídá Vámi sledované vzdálenosti. V dalším kroku je přepočtená hodnota pomocí příkazu switch dekódována a podle aktuálního stavu vytiskneme po sériové lince příslušnou informaci o ohni před senzorem. Jako poslední krok v nekonečné smyčce uděláme pauzu 500 milisekund mezi měřeními. Podprogram prerus se aktivuje vždy při detekci plamene pomocí přerušení a v tomto případě vytiskneme jako příklad pouze hlášku o detekci ohně a opět vyčkáme půl vteřiny.

// Arduino senzor plamene

// nastavení čísel propojovacích pinů
#define analogPin A0
#define digitalPin 2

void setup() {
  // komunikace po sériové lince rychlostí 9600 baud
  Serial.begin(9600);
  // inicializace obou vstupů
  pinMode(analogPin, INPUT);
  pinMode(digitalPin, INPUT);
  // nastavení přerušení na digitální pin,
  // při klesající hraně (log1->log0) se vykoná program prerus 
  attachInterrupt(digitalPinToInterrupt(digitalPin), prerus, FALLING);
}
void loop() {
  // načtení napětí ze vstupu senzoru do proměnné
	int napetiSenzor = analogRead(analogPin);
  // přepočtení celého rozsahu 0-1024 na hodnoty 0-3
	int prepocet = map(napetiSenzor, 0, 1024, 0, 3);
  // nastavení stavu dle hodnoty přepočtené ze vstupu
  switch (prepocet) {
    case 0:
      Serial.println("Detekovan ohen ve vzdalenosti do 20 cm!");
      break;
    case 1:
      Serial.println("Detekovan ohen ve vzdalenosti od 20 do 80 cm!");
      break;
    case 2:
      Serial.println("Zadny ohen neni detekovan.");
      break;
  }
  // pauza mezi detekcemi
  delay(500);
}
void prerus() {
  // pokud je aktivován digitální vstup,
  // vypiš hlášku o detekci ohně
  Serial.println("Detekovan ohen!");
  delay(500);
}

Po nahrání programu do Arduino desky s připojeným senzorem plamene dostaneme například tento výsledek:

Zadny ohen neni detekovan.
Zadny ohen neni detekovan.
Detekovan ohen!
Detekovan ohen ve vzdalenosti do 20 cm!
Detekovan ohen!
Detekovan ohen ve vzdalenosti od 20 do 80 cm!
Zadny ohen neni detekovan.
Zadny ohen neni detekovan.

Senzor plamene je zajímavý malý modul, který nám umožňuje udělat z Arduina detektor ohně. Hodí se tedy jak pro případy detekování vzniku ohně v hořlavém prostředí, tak zároveň také pro případ detekce zániku ohně. V druhém případě můžeme tedy tento modul například umístit tak, aby snímal věčný plamen v ohřívači vody a při jeho zhasnutí můžeme zachránit členy domácnosti před unikajícím plynem. Rád bych ještě zmínil, že vzhledem k tomu, že senzor funguje na principu detekce světla o vlnové délce 760 nanometrů, můžeme tento modul zmást jiným zdrojem záření než je pouze oheň, tedy například ostrým světlem z LED svítilny.

 

Seznam použitých komponent:

http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html

http://dratek.cz/arduino/1520-senzor-plamene-infracerveny-detekcni-modul-1486113741.html

Další podobné články