Detektor oxidu uhličitého CO2 MG811

Detektor oxidu uhličitého je vstupní modul pro Arduino. Tento detektor obsahuje senzor MG811, který slouží pro snímání hladiny CO2 ve svém okolí a na modulu je ještě doplněn několika součástkami pro správnou funkci. Pro nastavení detektoru jsou na modulu také 2 trimry, kdy ten blíže pinu VDD slouží pro případnou kalibraci výstupní hodnoty senzoru. Druhý z trimrů pak určuje detekční hranici, při které se rozsvítí modrá dioda na modulu a zároveň se aktivuje digitální výstup DOUT.
Senzor dokáže měřit koncentraci CO2 přibližně v rozsahu 0 až 10000 ppm (jedna částice z milionu). Pro jeho správnou funkci je ale nutné myslet na určitou dobu předehřevu senzoru. Po zakoupení je doporučeno nechat senzor „zahořet“ alespoň 24-48 hodin. Poté při každém dalším použití bychom měli nechat vždy senzor minimálně 15-20 minut zahřát, abychom dosáhli přijatelně přesných výsledků.
Pro napájení senzoru MG811 je doporučeno použít napětí 5-6 Voltů, přičemž proudový odběr se pohybuje při výhřevu okolo 120 miliampér.

Pro úspěšné propojení modulu MG811 a Arduino desky stačí zapojit celkem 3 vodiče. Propojíme VDD s 5V Arduina, AOUT s pinem A0 a GND se zemí Arduina. Pro pin AOUT musíme vybrat analogový pin, ale pokud chcete využít jiný z dostupných pinů, je nutné tuto volbu provést také na začátku programu.

Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu CO2Sensor, návod, jak na to, je uveden zde.
Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny společně s vytvořením objektu modulu z knihovny, u kterého zadáváme tři parametry. První parametr je propojovací pin pro analogový výstup senzoru, druhý parametr je inerční koeficient (pro MG811 je to 0.99) a třetí parametr je počet měření, které se provedou pro jedno čtení dat ze senzoru.
V podprogramu setup zahájíme komunikaci po sériové lince a poté provedeme kalibraci CO2 senzoru pomocí funkce z knihovny.
Na začátku nekonečné smyčky loop vždy načteme koncentraci ze senzoru do vytvořené proměnné a tuto informaci poté vytiskneme po sériové lince. Následně provedeme kontrolu, jestli nebyla překročena nastavená hranice 1000 ppm, při jejímž překročení vytiskneme ještě varovnou zprávu pro uživatele. A na konci smyčky loop se po krátké pauze program opakuje.

// Senzor CO2 MG811

// připojení potřebné knihovny
#include "CO2Sensor.h"
// vytvoření instance senzoru z knihovny,
// první parametr je propojovací pin (A0),
// druhý parametr je inerční koeficient (0.99),
// třetí parametr je počet měření při každém čtení (100)
CO2Sensor co2Sensor(A0, 0.99, 100);

void setup() {
  // inicializace komunikace po sériové lince
  Serial.begin(9600);
  // kalibrace CO2 senzoru
  co2Sensor.calibrate();
}

void loop() {
  // načtení CO2 koncentrace ze senzoru do proměnné
  int hodnota = co2Sensor.read();
  // vytištění informací po sériové lince
  Serial.print("Koncentrace CO2: ");
  Serial.print(hodnota);
  Serial.println(" ppm.");
  // pokud je hodnota vyšší než 1000,
  // vytiskneme ještě varování pro uživatele
  if (hodnota > 1000) {
    Serial.println("Prekrocena bezpecna koncentrace 1000 ppm, vyvetrej!");
  }
  // pauza před novým během smyčky
  delay(1000);
}

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

Koncentrace CO2: 396 ppm.
Koncentrace CO2: 402 ppm.
Koncentrace CO2: 400 ppm.
Koncentrace CO2: 404 ppm.

Detektor oxidu uhličitého MG811 je zajímavým senzorem, který dokáže měřit takzvanou kvalitu vzduchu v místnosti díky měření koncentrace CO2. Podle různých studií by měla běžná vyvětraná místnost dosahovat hodnoty okolo 300-400 ppm. Pokud se ale překročí hranice například 1000 ppm, tak může docházet k únavě či nesoustředění. A právě v těchto případech se může hodit zařízení právě s tímto senzorem, kdy si můžeme sami určit varovné hranice a také co se při jejich porušení stane – ať už si vytvoříme zvukovou či světelnou signalizaci, anebo můžeme například sami Arduinem vyvětrat pomocí otevření ventilace. Pro bastlíře pak může být asi největší nevýhodou nemožnost bateriového provozu kvůli nutnosti vyhřívání a také poměrně vysoká cena za modul.

Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/2988-detektor-oxidu-uhliciteho-co2-mg811-s-analogovym-vystupem.html

Další podobné články