Senzor hořlavých plynů MQ-2

Tento vybraný modul obsahuje senzor hořlavých plynů, který výrobce označuje jako MQ-2, a dále operační zesilovač pro zjednodušené používání s Arduino deskami. Zmíněný senzor MQ-2 podle výrobce umožňuje detekovat přítomnost hořlavých plynů, mezi které patří například zemní plyn (LPG), metan, butan, alkohol, propan či vodík. Tento senzor hořlavých plynů tedy můžeme umístit například do blízkosti plynového sporáku či ohřívače vody a mít kontrolu nad případnými úniky plynu, které mohou být velkým nebezpečím.

Pro komunikaci se senzorem hořlavých plynů můžeme využít analogového a digitálního výstupu. Přímo na desce modulu MQ-2 najdeme také nastavitelný trimr, díky kterému si můžeme podle našich potřeb nastavit hranici pro sepnutí digitálního vstupu. Pro zjištění této hranice tedy můžeme umístit zapojený modul s Arduinem do blízkosti plynového sporáku, změřit běžné hodnoty, které se objeví při normálním vaření a poté zkusit zhasnout plamen a pozorovat nárůst naměřených hodnot z analogového výstupu senzoru.

Námi vybraný modul se senzorem hořlavých plynů MQ-2 má celkem 4 propojovací piny. Připojíme VCC na napájecí napětí +5V, GND na zem, AOUT na A0 a DOUT na D2. Využít však můžeme samozřejmě i jiné datové piny.

Zde uvedený ukázkový kód obsahuje jako první inicializaci datových pinů a proměnnou pro čtení hodnoty napětí. V podprogramu setup nastavíme komunikaci po sériové lince s rychlostí 9600 baud, dále nastavíme oba piny jako vstupní a také zapojíme digitální vstup dOut na pinu 2 jako vstup pro přerušení s detekcí FALLING, tedy změny z log1 na log0. Mohli by jsme také využít detekci LOW, přičemž v případě překonání hranice by jsme dostali ve výpisu velký počet oznámení o překonání.

V loop smyčce se nachází příkazy, které nejprve do proměnné „analog“ nahrají příslušnou hodnotu napětí v rozsahu 0-1023, kdy 0 odpovídá Gnd a 1023 naopak +5V. Do výpisu informací na sériovou linku jsem také přidal příkaz map, který umožňuje přepočítat hodnoty z jednoho rozsahu na jiný, v tomto případě z analogové hodnoty (0-1023) na procenta, tedy 0-100%. Následuje ještě podprogram „prerus“, který pro názornost vytiskne po sériové lince zprávu o překonání nastavené hranice plynů v okolí v případě, že senzor je již připraven k provozu. Tato příprava je udávána alespoň po dobu 3 minut, tedy 180 000 milisekund. Tato hodnota je hlídána pomocí konstrukce if a využití funkce millis(), která vrací počet milisekund od připojení napájení do Arduino desky.

// Senzor hořlavých plynů

// čísla pinu připojeného digitálního
// a analogového vstupu
const int dOut = 2;
const int aOut = A0;

// proměnná pro čtení napětí analogového vstupu
int analog = 0;

void setup() {
  // komunikace přes sériovou linku rychlostí 9600 baud
  Serial.begin(9600);  
  // inicializace obou vstupů
  pinMode(dOut, INPUT);
  pinMode(aOut, INPUT);
  // nastavení přerušení na pin 2 (int0) 
  // při klesající hraně (log1->log0) se vykoná program prerus 
  attachInterrupt(0, prerus, FALLING);
}

void loop(){
  // načtení hodnoty analogového vstupu
  analog = analogRead(aOut);
  Serial.print("Analogova hodnota: ");
  Serial.print(analog);
  Serial.print(", v procentech: ");
  // přepočet hodnoty analogového vstupu z 1024
  // na 100 procent pomocí funkce map
  Serial.print(map(analog, 0, 1023, 0, 100));
  Serial.println("%");
  // vyčkej 1 s kvůli zbytečnému množství tisknutých znaků
  delay(1000);
}

void prerus(){
  // vypiš varovnou hlášku, pokud je aktivován digitální vstup
  // a senzor byl ústálen alespoň po dobu 180s = 3 minut
  if(millis()>180000){
    Serial.println("Prekonana hranice plynu v okoli!");
    delay(1000);
  }
}

Po nahrání programu do Arduino desky si můžeme otevřít Sériový monitor a sledovat výstupní hodnotu analogového výstupu modulu se senzorem hořlavých plynů. Po zahřátí senzoru po dobu alespoň zmíněných 3 minut můžeme vidět, že hodnoty se ustálí. A poté můžeme otestovat senzor například pomocí plynu ze sporáku či obyčejného zapalovače.

Jako výsledek dostaneme například tento výpis:

Analogova hodnota: 45, v procentech: 4%
Analogova hodnota: 194, v procentech: 18%
Analogova hodnota: 246, v procentech: 24%
Analogova hodnota: 402, v procentech: 39%
Prekonana hranice plynu v okoli!
Analogova hodnota: 506, v procentech: 49%

Jak jsem již zmínil na začátku článku, tento senzor hořlavých plynů MQ-2 může být poměrně jednoduše použit jako zabezpečení proti náhlému úniku plynu v domácnosti. Je však důležité počítat s tím, že senzor je nutné nechat stále zapnutý a před prvním měřením ho nechat alespoň po dobu 3 minut nahřát. 

Seznam použitých komponent:

http://dratek.cz/arduino/1074-arduino-senzor-horlavych-plynu-propanu-metanu-butanu-vodiku-1438013146.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

Další podobné články