Senzor plynů MQ-135

Senzor plynů MQ135 je vstupní modul pro Arduino. Tento modul obsahuje senzor MQ-135, který dokáže detekovat více skupin plynů ovlivňujících kvalitu ovzduší. Senzor reaguje nejvíce na amoniak (NH3), oxidy dusíku (NOx), benzen, kouř a oxid uhličitý (CO2). Aktivní prvek tohoto senzoru je tenká vrstva oxidu cíničitého (SnO2), jejíž odpor se mění s koncentrací zmíněných plynů. Napájecí napětí senzoru MQ-135 je 5V. Proudový odběr se pohybuje okolo 120 mA. Pokud budete tedy chtít používat i další moduly na stejném napájení Arduina, je nutné si dávat pozor na celkový proudový odběr a případně použít pro senzor MQ externí zdroj.

Pro úspěšné propojení senzoru plynů MQ-135 a Arduino desky stačí zapojit celkem 4 vodiče. Propojíme VCC s +5V Arduina, GND se zemí Arduina, D0 s pinem D2 a A0 s pinem A0. Pro analogový vstup je možné vybrat jiný analogový pin, ale je nutné tuto volbu provést také na začátku programu. 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.

Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu MQ135, návod, jak na to je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny a nastavení čísel propojovacích pinů. Po inicializaci senzoru z knihovny přejdeme do podprogramu setup, kde nastavíme rychlost komunikace po sériové lince s přerušovacím pinem. Ten je v tomto případě nastaven tak, že při detekci náběžné hrany (RISING) bude zavolán podprogram prerus. Nekonečná smyčka loop v prvním kroku načte koncentraci plynů do proměnné a poté načte čas od spuštění Arduina. Po načtení obou údajů je následně vytiskneme po sériové lince a po pauze nastavené délky se program opakuje. Zmíněný podprogram prerus v tomto případě obsahuje pouze vytištění informace o překročení nastavené hranice.

// MQ-135 senzor plynů

// připojení potřebné knihovny
#include "MQ135.h"
// nastavení propojovacích pinů
#define pinA A0
#define pinD 2
// inicializace senzoru z knihovny
MQ135 senzorMQ = MQ135(pinA);

void setup() {
  // inicializace komunikace po sériové lince
  // rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení přerušení na pin 2 (int0)
  // při nástupné hraně (log0->log1) se vykoná program prerus
  attachInterrupt(digitalPinToInterrupt(pinD), prerus, RISING);
}
void loop() {
  // načtení koncentrace plynů v ppm do proměnné
  float ppm = senzorMQ.getPPM();
  // načtení času od spuštění Arduina v sekundách
  long cas = millis()/1000;
  // vytištění naměřené koncentrace
  Serial.print("Koncentrace plynů: ");
  Serial.print(ppm);
  Serial.print(" ppm | cas od spusteni Arduina: ");
  Serial.print(cas/60); // výpočet minut - dělení 60
  Serial.print("m");
  Serial.print(cas%60); // výpočet vteřin - zbytek po dělení 60
  Serial.println("s.");
  
  // pauza před dalším měřením
  delay(3000);
}
void prerus() {
  // vypiš varovnou hlášku, pokud je aktivován digitální vstup
  Serial.println("Detekovano prekroceni hranice!");
}

Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem plynů MQ-135 dostaneme například tento výsledek:

Koncentrace plynů: 5.33 ppm.
Koncentrace plynů: 18.21 ppm.
Koncentrace plynů: 12.95 ppm.
Detekovano prekroceni hranice!
Koncentrace plynů: 2759.01 ppm.
Koncentrace plynů: 747.03 ppm.
Koncentrace plynů: 139.42 ppm.

Senzor plynů MQ135 je zajímavý rozšiřovací modul pro Arduino, který nám umožňuje měřit kvalitu ovzduší ve svém okolí. Hodí se tedy do projektů jako například domácí meteostanice, detektor větrání oken či bezpečnostní detektor kouře. Tento senzor není vhodný k detekci jednoho plynů či skupiny, ale pro mě je právě vhodná kombinace „ovzduší znečisťujících“ plynů, kdy mi stačí si stanovit pro mě alarmující hodnotu koncentrace v ppm a po jejím dosažení upozornit uživatele či třeba rovnou vyvětrat. Zde bych ještě rád zdůraznil několik informací. Zaprvé je nutné vždy senzor nechat řádně zahřát na pracovní teplotu, co znamená přibližně 5-10 minut, respektive do ustálení naměřené hodnoty. Zadruhé je s tím spojené upozornění ohledně umístění senzoru. Pracovní teplota kovového pouzdra senzoru je cca 40° C (lze udržet v ruce), ale je nutné si dát na toto pozor při uzavírání do krabiček apod. A třetí věc souvisí s předchozími – díky nutnosti předehřátí senzoru a poměrně vysokému proudovému odběru tento senzor není příliš vhodný do bateriově napájených zařízení.

 

Seznam použitých komponent:

https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

https://dratek.cz/arduino/1298-senzor-plynu-mq135-mq-135-pro-arduino-1462954247.html

Další podobné články