- MQ6 gázérzékelő
- Hogyan mérhető a PPM az MQ gázérzékelőkkel?
- Szükséges alkatrészek
- Vázlatos
- MQ érzékelő PIC programozással
Az MQ sorozatú gázérzékelők nagyon általános típusú érzékelők, amelyeket a gázdetektorokban bizonyos típusú gázok érzékelésére vagy mérésére használnak. Ezeket az érzékelőket széles körben használják az összes gázzal kapcsolatos eszközben, például az egyszerű füstérzékelőktől az ipari levegőminőség-monitorokig. Ezeket az MQ gázérzékelőket már használtuk az Arduinóval néhány káros gáz, például az ammónia mérésére. Ebben a cikkben megtanuljuk, hogyan kell használni ezeket a gázérzékelőket PIC mikrovezérlőkkel, a gáz PPM értékének mérésére és 16x2 LCD-n való megjelenítésére.
Mint korábban említettük, különböző típusú MQ sorozatú érzékelők állnak rendelkezésre a piacon, és mindegyik érzékelő különböző típusú gázokat képes mérni, az alábbi táblázat szerint. A cikk kedvéért az MQ6 gázérzékelőt fogjuk használni PIC-vel, amely az LPG gáz jelenlétének és koncentrációjának kimutatására használható. Ugyanazon hardver és firmware használatával azonban más MQ sorozatú érzékelők is használhatók a kód és a hardver rész jelentős módosítása nélkül.
Érzékelő | Észleli |
MQ-2 | Metán, bután, PB-gáz, füst |
MQ-3 | Alkohol, etanol, füst |
MQ-4 | Metán, CNG-gáz |
MQ-5 | Földgáz, PB-gáz |
MQ-6 | LPG, butángáz |
MQ-7 | Szén-monoxid |
MQ-8 | Hidrogéngáz |
MQ-9 | Szén-monoxid, gyúlékony gázok. |
MQ131 | Ózon |
MQ135 | Levegőminőség (benzol, alkohol, füst) |
MQ136 | Hidrogén-szulfid gáz |
MQ137 | Ammónia |
MQ138 | Benzol, toluol, alkohol, aceton, propán, formaldehid gáz, hidrogén |
MQ214 | Metán, földgáz |
MQ216 | Földgáz, széngáz |
MQ303A | Alkohol, etanol, füst |
MQ306A | LPG, butángáz |
MQ307A | Szén-monoxid |
MQ309A | Szén-monoxid, gyúlékony gázok |
MG811 | Szén-dioxid (CO2) |
AQ-104 | Levegő minősége |
MQ6 gázérzékelő
Az alábbi képen látható az MQ6 érzékelő tűs diagramja. A bal oldali kép azonban modul alapú MQ6 érzékelő a mikrovezérlő egységgel való összeköttetéshez, a modul tűs rajza is látható ezen a képen.
Az 1. érintkező VCC, a 2. érintkező a GND, a 3. érintkező a digitális kimenet (logika alacsony, ha gáz észlelhető.) És a 4. érintkező az analóg kimenet. Az edényt az érzékenység beállítására használják. Ez nem RL. Az RL ellenállás a DOUT LED megfelelő ellenállása.
Minden MQ sorozatú érzékelő rendelkezik fűtőelemmel és érzékelési ellenállással. A gáz koncentrációjától függően az érzékelési ellenállás megváltozik, és a változó ellenállás detektálásával mérhető a gáz koncentrációja. A gázkoncentráció PPM-ben történő méréséhez az összes MQ szenzor logaritmikus grafikont ad, ami nagyon fontos. A grafikon áttekintést ad a gázkoncentrációról az RS és RO arányával.
Hogyan mérhető a PPM az MQ gázérzékelőkkel?
Az RS az érzékelési ellenállás egy adott gáz jelenlétében, míg az RO az érzékelési ellenállás a tiszta levegőben különösebb gáz nélkül. Az alábbi adatlapból vett logaritmikus grafikon áttekintést nyújt a gázkoncentrációról az MQ6 érzékelő érzékelési ellenállásával. Az MQ6 érzékelő az LPG gázkoncentráció kimutatására szolgál. Ezért az MQ6 érzékelő különös ellenállást biztosít a tiszta levegő alatt, amikor az LPG gáz nem érhető el. Ezenkívül az ellenállás akkor változik, amikor az MQ6 érzékelő észleli az LPG gázt.
Tehát ezt a grafikont be kell építenünk a firmware-be, hasonlóan ahhoz, amit az Arduino Gas Detector Projectben tettünk. A képlet 3 különböző adatpontot tartalmaz. Az első két adatpont az LPG görbe kezdete, X és Y koordinátákban. A harmadik adat a meredekség.
Tehát, ha kiválasztjuk a mélykék görbét, amely az LPG görbe, akkor a görbe kezdete X és Y koordinátában a 200 és a 2. Tehát a logaritmikus skála első adatpontja (log200, log2), amely (2,3, 0,30).
Készítsük el, X1 és Y1 = (2,3, 0,30). A görbe vége a második adatpont. A fent leírt eljárással X2 és Y2 (log 10000, log0,4). Így X2 és Y2 = (4, -0,40). A görbe meredekségének megszerzéséhez a képlet az
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
A szükséges grafikon megadható
LPG_görbe = {kezdő X és Y kezdő, meredekség} LPG_ görbe = {2.3, 0.30, -0.41}
Más MQ érzékelők esetében szerezze be a fenti adatokat az adatlapból és a Logarithmic gráf diagramból. Az érték a szenzor és a mért gáz függvényében eltér. Ehhez a modulhoz rendelkezik egy digitális tűvel, amely csak a jelen lévő gázról nyújt információt, vagy sem. Ehhez a projekthez szintén használják.
Szükséges alkatrészek
Az MQ érzékelő és a PIC mikrovezérlő összekapcsolásához szükséges alkatrészeket az alábbiakban adjuk meg:
- 5V tápegység
- Kenyérlemez
- 4.7k ellenállás
- LCD 16x2
- 1k ellenállás
- 20Mhz kristály
- 33pF kondenzátor - 2db
- PIC16F877A mikrovezérlő
- MQ sorozatú érzékelő
- Berg és egyéb összekötő vezetékek.
Vázlatos
Ennek a PIC-projekttel rendelkező gázérzékelő vázlata meglehetősen egyenes. Az analóg tű az RA0-hoz, a digitális pedig az RD5-höz van csatlakoztatva a gázérzékelő modul által biztosított analóg feszültség mérésére. Ha Ön még teljesen új a PIC-ben, akkor érdemes megismernie a PIC ADC oktatóanyagot és a PIC LCD oktatóanyagot a projekt jobb megértése érdekében.
Az áramkört kenyérlemezbe építik. Miután a kapcsolatok elkészültek, a beállításom így néz ki, az alábbiakban látható.
MQ érzékelő PIC programozással
A kód fő része a fő funkció és az egyéb kapcsolódó perifériás funkciók. A Complete program az oldal alján található, a fontos kódrészleteket a következőképpen magyarázzák
Az alábbi funkcióval az érzékelő ellenállásának értékét szabad levegőben lehet megkapni. Mivel a 0 analóg csatornát használják, az adatokat a 0 analóg csatornától kapja. Ez az MQ gázérzékelő kalibrálására szolgál.
float SensorCalibration () { int szám; // Ez a funkció kalibrálja az érzékelőt a szabad levegőben lebegő val = 0; for (count = 0; count <50; count ++) {// vegyen több mintát, és számítsa ki az átlagos val értéket = = ellenállás kiszámítása (ADC_Read (0)); __késleltesms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // elosztva RO_CLEAN_AIR_FACTOR-mal megkapja az Ro visszatérő val; }
A funkció alatt az MQ érzékelő analóg értékeinek leolvasására és az Rs érték kiszámításához átlagoljuk
float read_MQ () { int szám; úszó rs = 0; mert (count = 0; count <5; count ++) {// vegyen több olvasatot és átlagolja. rs + = ellenállás kiszámítása (ADC_Read (0)); // rs a gázkoncentrációnak megfelelően változik. __késleltetési_ms (50); } rs = rs / 5; visszatérő rs; }
Az alábbi függvény segítségével kiszámítható az ellenállás a feszültségosztó ellenállástól és a terhelési ellenállástól.
úszó kiszámítja az ellenállást (int adc_csatorna) {// az érzékelő és a terhelési ellenállás feszültségosztót alkot. tehát az analóg érték és a terhelési érték visszatérésével (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // találunk érzékelő ellenállást. }
Az RL_VALUE a kód kezdetén van megadva, az alábbiak szerint
#define RL_VALUE (10) // határozza meg a tábla terhelési ellenállását, kilo-ohmban
Változtassa meg ezt az értéket a fedélzeti terhelési ellenállás ellenőrzése után. Különböző lehet más MQ érzékelő táblákon. A rendelkezésre álló adatok naplóskálába való ábrázolásához az alábbi függvényt kell használni.
int gas_plot_log_scale (float rs_ro_ratio, float * görbe) { return pow (10, ((((log (rs_ro_ratio) -görbe) / görbe) + görbe)); }
A görbe a fenti cikkben korábban kiszámított kód fent meghatározott LPG görbéje.
úszó MQ6_görbe = {2,3,0,30, -0,41}; // Grafikon diagram, változtassa meg ezt az adott érzékelőhöz
Végül az alábbiakban bemutatjuk a fő funkciót, amelyen belül megmérjük az analóg értéket, kiszámítjuk a PPM-et és megjelenítjük az LCD-n
void main () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Kalibrálás…"); Ro = SensorCalibration (); // képernyő törlése (); lcd_com (FIRST_LINE); lcd_puts ("Kész!"); // képernyő törlése (); lcd_com (FIRST_LINE); lcd_print_szám (Ro); lcd_puts ("K Ohm"); __késleltetési_ms (1500); gas_detect = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Gáz van"); lcd_com (SECOND_LINE); lcd_puts ("Gáz ppm ="); float rs = olvasás_MQ (); úszó arány = rs / Ro; lcd_print_number (gáz_plot_log_scale (arány, MQ6_görbe)); __késleltetési_ms (1500); clear_screen (); } else { lcd_com (FIRST_LINE); lcd_puts ("Nincs gáz"); } } }
Először az érzékelő RO-ját tiszta levegőben mérik. Ezután leolvassák a digitális csapot, hogy ellenőrizzék, van-e a gáz. Ha van gáz, akkor a gázt a megadott LPG görbe alapján mérik.
Öngyújtót használtam annak ellenőrzésére, hogy változik- e a PPM értéke a gáz észlelésekor. Ezekben a szivargyújtókban LPG gáz van, amelyet a levegőbe engedve leolvas az érzékelőnk, és az LCD-n a PPM érték az alábbiak szerint változik.
A teljes munka megtalálható az oldal alján található videóban. Ha bármilyen kérdése van, kérjük, hagyja a megjegyzés rovatban, vagy más technikai kérdésekhez használja fórumunkat.