- Senzor plina MQ6
- Kako izmeriti PPM s pomočjo senzorjev MQ Gas?
- Zahtevane komponente
- Shema
- Senzor MQ s programiranjem PIC
Plinski senzorji serije MQ so zelo pogosti tipi senzorjev, ki se uporabljajo v detektorjih plina za odkrivanje ali merjenje določenih vrst plinov. Ti senzorji se pogosto uporabljajo v vseh napravah, povezanih s plinom, na primer od preprostih detektorjev dima do industrijskih monitorjev kakovosti zraka. Te plinske senzorje MQ smo že uporabljali z Arduinom za merjenje nekaterih škodljivih plinov, kot je amoniak. V tem članku se bomo naučili, kako uporabljati te plinske senzorje z mikrokrmilniki PIC, izmeriti vrednost PPM plina in jo prikazati na LCD 16x2.
Kot smo že omenili, so na trgu na voljo različne vrste senzorjev serije MQ in vsak senzor lahko meri različne vrste plinov, kot je prikazano v spodnji tabeli. Za namene tega članka bomo uporabili senzor za plin MQ6 s PIC, ki ga lahko uporabimo za zaznavanje prisotnosti in koncentracije utekočinjenega naftnega plina. Vendar pa lahko z isto strojno in vdelano programsko opremo uporabljamo tudi druge senzorje serije MQ brez večjih sprememb kode in strojne opreme.
Senzor | Zazna |
MQ-2 | Metan, butan, utekočinjeni naftni plin, dim |
MQ-3 | Alkohol, etanol, dim |
MQ-4 | Metan, CNG plin |
MQ-5 | Zemeljski plin, UNP |
MQ-6 | UNP, plin butan |
MQ-7 | Ogljikov monoksid |
MQ-8 | Vodikov plin |
MQ-9 | Ogljikov monoksid, vnetljivi plini. |
MQ131 | Ozon |
MQ135 | Kakovost zraka (benzen, alkohol, dim) |
MQ136 | Plin vodikov sulfid |
MQ137 | Amoniak |
MQ138 | Benzen, toluen, alkohol, aceton, propan, plin formaldehida, vodik |
MQ214 | Metan, zemeljski plin |
MQ216 | Zemeljski plin, Premogov plin |
MQ303A | Alkohol, etanol, dim |
MQ306A | UNP, plin butan |
MQ307A | Ogljikov monoksid |
MQ309A | Ogljikov monoksid, vnetljivi plini |
MG811 | Ogljikov dioksid (CO2) |
AQ-104 | Kvaliteta zraka |
Senzor plina MQ6
Spodnja slika prikazuje shemo pinov senzorja MQ6. Vendar je leva slika modularni senzor MQ6 za povezavo z enoto mikrokrmilnika, na tej sliki je prikazan tudi pin-diagram modula.
Zatič 1 je VCC, zatič 2 je GND, zatič 3 je digitalni izhod (Logika nizka, ko je zaznan plin.) In Pin 4 je analogni izhod. Lonec se uporablja za nastavitev občutljivosti. Ni RL. Upor RL je pravi upor LED DOUT.
Vsako tipalo serije MQ ima grelni element in zaznavno upornost. Glede na koncentracijo plina se senzorski upor spremeni in z zaznavanjem spreminjajočega se upora lahko izmerimo koncentracijo plina. Za merjenje koncentracije plina v PPM imajo vsi senzorji MQ logaritemski graf, ki je zelo pomemben. Graf prikazuje pregled koncentracije plina z razmerjem RS in RO.
Kako izmeriti PPM s pomočjo senzorjev MQ Gas?
RS je čutna odpornost v prisotnosti določenega plina, medtem ko je RO čutna odpornost v čistem zraku brez določenega plina. Spodnji logaritemski graf, vzet iz podatkovnega lista, ponuja pregled koncentracije plina z občutno odpornostjo senzorja MQ6. Senzor MQ6 se uporablja za zaznavanje koncentracije utekočinjenega naftnega plina. Zato bo senzor MQ6 zagotavljal posebno odpornost v pogojih čistega zraka, kadar plin na utekočinjeni naftni plin ni na voljo. Prav tako se bo upor spremenil vsakič, ko senzor MQ6 zazna utekočinjeni naftni plin.
Torej moramo ta graf narisati v našo vdelano programsko opremo, podobno kot v našem projektu Arduino Gas detector. Formula ima tri različne podatkovne točke. Prvi dve podatkovni točki sta začetek krivulje LPG v koordinatah X in Y. Tretji podatek je naklon.
Torej, če izberemo temno modro krivuljo, ki je krivulja LPG, je začetek krivulje v koordinatah X in Y 200 in 2. Torej, prva podatkovna točka iz logaritemske lestvice je (log200, log2), ki je (2,3, 0,30).
Naredimo kot, X1 in Y1 = (2,3, 0,30). Konec krivulje je druga podatkovna točka. Po istem postopku, opisanem zgoraj, sta X2 in Y2 (log 10000, log0.4). Tako sta X2 in Y2 = (4, -0,40). Da dobimo naklon krivulje, je formula enaka
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Graf, ki ga potrebujemo, lahko podamo kot
LPG_Curve = {začetek X in začetek Y, naklon} LPG_Curve = {2.3, 0.30, -0.41}
Za druge senzorje MQ dobite zgornje podatke iz podatkovnega lista in grafa logaritmičnega grafa. Vrednost se bo razlikovala glede na izmerjeni senzor in plin. Za ta modul ima digitalni zatič, ki zagotavlja samo informacije o prisotnem plinu ali ne. Za ta projekt se tudi uporablja.
Zahtevane komponente
Potrebne komponente za povezovanje senzorja MQ z mikrokrmilnikom PIC so podane spodaj -
- 5V napajalnik
- Breadboard
- 4.7k upor
- LCD 16x2
- 1k upor
- Kristal 20 MHz
- 33pF kondenzator - 2pcs
- Mikrokrmilnik PIC16F877A
- Senzor serije MQ
- Berg in druge priključne žice.
Shema
Shema tega plinskega senzorja s projektom PIC je precej naravnost naprej. Analogni zatič je povezan z RA0, digitalni pa z RD5 za merjenje analogne napetosti, ki jo zagotavlja modul plinskega senzorja. Če ste popolnoma novi v PIC, boste morda želeli preučiti PIC ADC tutorial in PIC LCD tutorial, da boste bolje razumeli ta projekt.
Vezje je zgrajeno v tabli. Ko so povezave končane, je moja nastavitev videti takole, prikazano spodaj.
Senzor MQ s programiranjem PIC
Glavni del te kode je glavna funkcija in druge povezane zunanje funkcije. Celoten program najdete na dnu te strani, pomembni delčki kode so razloženi na naslednji način
Spodnja funkcija se uporablja za pridobivanje vrednosti upora senzorja v prostem zraku. Ker se uporablja analogni kanal 0, pridobiva podatke iz analognega kanala 0. To je za kalibracijo senzorja MQ Gas.
float SensorCalibration () { int count; // Ta funkcija bo kalibrirala senzor v prostem zračnem plovcu val = 0; for (count = 0; count <50; count ++) {// vzamemo več vzorcev in izračunamo povprečno vrednost val + = izračunamo_upor (ADC_Read (0)); __zakasnitev_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // deljeno z RO_CLEAN_AIR_FACTOR daje povratni val Ro ; }
Funkcija Spodaj se uporablja za branje analognih vrednosti senzorja MQ in povprečenje za izračun vrednosti Rs
float read_MQ () { int count; float rs = 0; for (count = 0; count <5; count ++) {// opravimo več odčitkov in jih povprečimo. rs + = izračunaj_upor (ADC_Read (0)); // rs se spreminja glede na koncentracijo plinov. __zakasnitev_ms (50); } rs = rs / 5; vrnitev rs; }
Spodnja funkcija se uporablja za izračun upora upora upora delilnika napetosti in odpornosti obremenitve.
float izračuna_upor (int adc_channel) {// senzor in obremenitveni upor tvori delilnik napetosti. torej z uporabo analogne vrednosti in vrnitve vrednosti obremenitve (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // našli bomo senzorski upor. }
RL_VALUE je definiran na začetku kode, kot je prikazano spodaj
#define RL_VALUE (10) // določimo odpornost proti obremenitvi na plošči, v kilo-ohmih
To vrednost spremenite po preverjanju odpornosti obremenitve na vozilu. Pri drugih ploščah senzorjev MQ je lahko drugačen. Za risanje razpoložljivih podatkov v lestvico dnevnika se uporablja spodnja funkcija.
int gas_plot_log_scale (float rs_ro_ratio, float * krivulja) { return pow (10, (((log (rs_ro_ratio)-curve) / krivulja) + krivulja)); }
Krivulja je krivulja utekočinjenega naftnega plina, opredeljena zgoraj v kodi, ki je bila predhodno izračunana v našem zgornjem članku.
float MQ6_ curve = {2.3,0.30, -0.41}; // Grafični načrt, spremenite to za določen senzor
Na koncu je glavna funkcija, znotraj katere merimo analogno vrednost, izračunamo PPM in jo prikažemo na LCD-prikazovalniku, podana spodaj
void main () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Umerjanje…."); Ro = SensorCalibration (); // clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Končano!"); // clear_screen (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K ohmov"); __zakasnitev_ms (1500); zaznavanje plina = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Plin je prisoten"); lcd_com (SECOND_LINE); lcd_puts ("ppm ppm ="); float rs = read_MQ (); razmerje plovbe = rs / Ro; lcd_print_number (gas_plot_log_scale (razmerje, MQ6_curve)); __zakasnitev_ms (1500); clear_screen (); } drugače { lcd_com (FIRST_LINE); lcd_puts ("Plina ni"); } } }
Najprej se izmeri RO senzorja v čistem zraku. Nato se prebere digitalni zatič, da se preveri, ali je plin prisoten ali ne. Če je plin prisoten, se plin meri s priloženo krivuljo utekočinjenega naftnega plina.
Z vžigalnikom sem preveril, ali se vrednost PPM spreminja ob zaznavanju plina. Ti vžigalniki za cigare imajo v sebi plin iz utekočinjenega naftnega plina, ki ga bo naš senzor odčital v zrak in vrednost PPM na LCD-zaslonu se spremeni, kot je prikazano spodaj.
Celotno delo najdete v videoposnetku na dnu te strani. Če imate kakršna koli vprašanja, jih pustite v oddelku za komentarje ali uporabite tehnična vprašanja na naših forumih.