- Senzor plynu MQ6
- Jak měřit PPM pomocí senzorů plynu MQ?
- Požadované komponenty
- Schematické
- Senzor MQ s programováním PIC
Senzory plynu řady MQ jsou velmi běžné typy senzorů používaných v detektorech plynu k detekci nebo měření určitých typů plynů. Tyto snímače jsou široce používány ve všech zařízeních souvisejících s plynem, jako jsou jednoduché kouřové detektory nebo monitory kvality průmyslového ovzduší. Tyto senzory plynů MQ jsme již u Arduina použili k měření některých škodlivých plynů, jako je amoniak. V tomto článku se naučíme, jak používat tyto senzory plynu s mikrokontroléry PIC, měřit hodnotu PPM plynu a zobrazovat ji na 16x2 LCD.
Jak již bylo zmíněno dříve, na trhu jsou k dispozici různé druhy senzorů řady MQ a každý senzor může měřit různé typy plynů, jak je uvedeno v tabulce níže. V rámci tohoto článku budeme používat plynový senzor MQ6 s PIC, který lze použít k detekci přítomnosti a koncentrace LPG plynu. Použitím stejného hardwaru a firmwaru však lze použít i další senzory řady MQ bez větších úprav v kódové a hardwarové části.
Senzor | Detekuje |
MQ-2 | Metan, butan, LPG, kouř |
MQ-3 | Alkohol, ethanol, kouř |
MQ-4 | Metan, plyn CNG |
MQ-5 | Zemní plyn, LPG |
MQ-6 | LPG, butanový plyn |
MQ-7 | Kysličník uhelnatý |
MQ-8 | Vodíkový plyn |
MQ-9 | Oxid uhelnatý, hořlavé plyny. |
MQ131 | Ozón |
MQ135 | Kvalita ovzduší (benzen, alkohol, kouř) |
MQ136 | Plynný sirovodík |
MQ137 | Amoniak |
MQ138 | Benzen, toluen, alkohol, aceton, propan, plynný formaldehyd, vodík |
MQ214 | Metan, zemní plyn |
MQ216 | Zemní plyn, uhelný plyn |
MQ303A | Alkohol, ethanol, kouř |
MQ306A | LPG, butanový plyn |
MQ307A | Kysličník uhelnatý |
MQ309A | Oxid uhelnatý, hořlavé plyny |
MG811 | Oxid uhličitý (CO2) |
AQ-104 | Kvalita vzduchu |
Senzor plynu MQ6
Na následujícím obrázku je schéma kolíků snímače MQ6. Levý obrázek je však senzor MQ6 na bázi modulu pro propojení s jednotkou mikrokontroléru, pinový diagram modulu je také zobrazen na tomto obrázku.
Pin 1 je VCC, Pin 2 je GND, Pin 3 je digitální výstup (logická nízká, když je detekován plyn.) A Pin 4 je analogový výstup. Hrnec slouží k nastavení citlivosti. Není to RL. RL rezistor je pravý rezistor LED DOUT.
Každý senzor řady MQ má topný článek a snímací odpor. V závislosti na koncentraci plynu se mění snímací odpor a detekcí měnícího se odporu lze měřit koncentraci plynu. Pro měření koncentrace plynu v PPM poskytují všechny senzory MQ logaritmický graf, který je velmi důležitý. Graf poskytuje přehled koncentrace plynu s poměrem RS a RO.
Jak měřit PPM pomocí senzorů plynu MQ?
RS je snímací odpor během přítomnosti konkrétního plynu, zatímco RO je snímací odpor v čistém vzduchu bez konkrétního plynu. Níže uvedený logaritmický graf převzatý z datového listu poskytuje přehled koncentrace plynu se snímacím odporem snímače MQ6. Senzor MQ6 se používá k detekci koncentrace plynu LPG. Proto snímač MQ6 poskytne zvláštní odpor během čistého stavu vzduchu, kde není k dispozici plyn LPG. Odpor se také změní, kdykoli je senzorem MQ6 detekován plyn LPG.
Musíme tedy tento graf vykreslit do našeho firmwaru podobně jako v našem projektu detektoru plynu Arduino. Vzorec má mít 3 různé datové body. První dva datové body jsou počátkem křivky LPG v souřadnicích X a Y. Třetím údajem je sklon.
Pokud tedy vybereme hlubokou modrou křivku, která je křivkou LPG, je začátek křivky v souřadnicích X a Y 200 a 2. Takže první datový bod z logaritmické stupnice je (log200, log2), což je (2,3, 0,30).
Udělejme to jako, X1 a Y1 = (2,3; 0,30). Konec křivky je druhý datový bod. Stejným postupem popsaným výše jsou X2 a Y2 (log 10 000, log 0,4). Tedy X2 a Y2 = (4, -0,40). Chcete-li získat sklon křivky, je vzorec
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Graf, který potřebujeme, lze uvést jako
LPG_Curve = {počáteční X a počáteční Y, sklon} LPG_Curve = {2,3, 0,30, -0,41}
U ostatních senzorů MQ získáte výše uvedená data z datového listu a grafu logaritmického grafu. Hodnota se bude lišit podle senzoru a měřeného plynu. Pro tento konkrétní modul má digitální kolík, který poskytuje pouze informace o přítomném či neexistujícím plynu. U tohoto projektu se také používá.
Požadované komponenty
Níže jsou uvedeny požadované komponenty pro propojení senzoru MQ s mikrokontrolérem PIC -
- 5V napájení
- Nepájivá deska
- 4,7k rezistor
- LCD 16x2
- 1k rezistor
- 20MHz krystal
- Kondenzátor 33pF - 2ks
- Mikrokontrolér PIC16F877A
- Senzor řady MQ
- Berg a další připojovací vodiče.
Schematické
Schéma tohoto plynového senzoru s projektem PIC je docela přímé. Analogový kolík je spojen s RA0 a digitální s RD5 pro měření analogového napětí dodávaného modulem senzoru plynu. Pokud jste v PIC úplně nový, možná budete chtít pro lepší pochopení tohoto projektu nahlédnout do PIC ADC tutoriálu a PIC LCD tutoriálu.
Obvod je zkonstruován v prkénku. Po dokončení připojení vypadá moje nastavení takto, viz níže.
Senzor MQ s programováním PIC
Hlavní částí tohoto kódu je hlavní funkce a další související periferní funkce. Kompletní program najdete ve spodní části této stránky, důležité fragmenty kódu jsou vysvětleny následovně
Níže uvedená funkce slouží k získání hodnoty odporu snímače ve volném vzduchu. Protože se používá analogový kanál 0, získává data z analogového kanálu 0. Slouží ke kalibraci senzoru plynu MQ.
float SensorCalibration () { int count; // Tato funkce provede kalibraci snímače ve volném vzduchu float val = 0; for (count = 0; count <50; count ++) {// odebrat více vzorků a vypočítat průměrnou hodnotu val + = vypočítat_odpor (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // děleno RO_CLEAN_AIR_FACTOR získá návratovou hodnotu Ro ; }
Níže se funkce používá ke čtení analogových hodnot snímače MQ a průměrování k výpočtu hodnoty Rs
float read_MQ () { int count; float rs = 0; for (count = 0; count <5; count ++) {// vezměte více čtení a zprůměrujte to. rs + = vypočítat_odpor (ADC_Read (0)); // rs se mění podle koncentrace plynu. __delay_ms (50); } rs = rs / 5; návrat rs; }
Níže uvedená funkce se používá k výpočtu odporu rezistoru děliče napětí a odporu zátěže.
float count_resistance (int adc_channel) {// senzor a zátěžový odpor tvoří dělič napětí. takže pomocí analogové hodnoty a návratové hodnoty (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // najdeme odpor senzoru. }
RL_VALUE je definována na začátku kódu, jak je znázorněno níže
#define RL_VALUE (10) // definujte zátěžový odpor na desce v kiloohmech
Po kontrole odporu zátěže na palubě tuto hodnotu změňte. U jiných desek senzorů MQ se to může lišit. K vykreslení dostupných dat do měřítka protokolu se používá níže uvedená funkce.
int gas_plot_log_scale (float rs_ro_ratio, float * křivka) { návrat pow (10, ((((log (rs_ro_ratio) -curve) / křivka) + křivka)); }
Křivka je křivka LPG definovaná výše v kódu, který byl dříve vypočítán v našem článku výše.
float MQ6_curve = {2.3,0.30, -0,41}; // Graph Plot, change this for particular sensor
Nakonec je níže uvedena hlavní funkce, ve které měříme analogovou hodnotu, počítáme PPM a zobrazujeme ji na LCD
void main () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Kalibrace…."); Ro = SensorCalibration (); // clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Hotovo!"); // clear_screen (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohms"); __delay_ms (1500); gas_detect = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Plyn je přítomen"); lcd_com (SECOND_LINE); lcd_puts ("Gas ppm ="); float rs = read_MQ (); plovoucí poměr = rs / Ro; lcd_print_number (gas_plot_log_scale (poměr, MQ6_curve)); __delay_ms (1500); clear_screen (); } else { lcd_com (FIRST_LINE); lcd_puts ("Gas not present"); } } }
Nejprve se RO senzoru měří v čistém vzduchu. Poté se načte digitální kolík, aby se zkontrolovalo, zda je plyn přítomen nebo ne. Pokud je plyn přítomen, měří se plyn pomocí poskytnuté křivky LPG.
Použil jsem zapalovač ke kontrole, zda se hodnota PPM mění, když je detekován plyn. Tyto zapalovače mají uvnitř LPG plyn, který po uvolnění do vzduchu bude čten naším senzorem a hodnota PPM na LCD se změní, jak je uvedeno níže.
Kompletní práci najdete ve videu ve spodní části této stránky. Máte-li jakékoli dotazy, nechte je v sekci komentářů nebo použijte naše fóra pro další technické dotazy.