- MQ6 osjetnik plina
- Kako izmjeriti PPM pomoću senzora za plin MQ?
- Potrebne komponente
- Shematski
- MQ senzor s PIC programiranjem
Senzori za plin serije MQ vrlo su česte vrste senzora koji se koriste u detektorima plina za otkrivanje ili mjerenje određenih vrsta plinova. Ti se senzori široko koriste u svim uređajima povezanim s plinom, poput jednostavnih detektora dima do industrijskih monitora kakvoće zraka. Već smo koristili ove MQ senzore za plin s Arduinom za mjerenje nekih štetnih plinova poput amonijaka. U ovom ćemo članku naučiti kako koristiti ove senzore za plin s PIC mikrokontrolerima, za mjerenje PPM vrijednosti plina i prikaz na LCD zaslonu 16x2.
Kao što je ranije spomenuto, na tržištu su dostupne različite vrste senzora MQ serije i svaki senzor može mjeriti različite vrste plinova kao što je prikazano u donjoj tablici. Za potrebe ovog članka koristit ćemo plinski senzor MQ6 s PIC-om koji se može koristiti za otkrivanje prisutnosti i koncentracije UNP plina. Međutim, korištenjem istog hardvera i firmvera, drugi senzori serije MQ također se mogu koristiti bez većih izmjena u kodu i hardverskom dijelu.
| Senzor | Otkriva |
| MQ-2 | Metan, butan, UNP, dim |
| MQ-3 | Alkohol, etanol, dim |
| MQ-4 | Metan, CNG plin |
| MQ-5 | Prirodni plin, UNP |
| MQ-6 | UNP, plin butan |
| MQ-7 | Ugljični monoksid |
| MQ-8 | Vodikov plin |
| MQ-9 | Ugljični monoksid, zapaljivi plinovi. |
| MQ131 | Ozon |
| MQ135 | Kvaliteta zraka (benzen, alkohol, dim) |
| MQ136 | Vodikov sulfid plin |
| MQ137 | Amonijak |
| MQ138 | Benzen, toluen, alkohol, aceton, propan, plin formaldehida, vodik |
| MQ214 | Metan, Prirodni plin |
| MQ216 | Prirodni plin, ugljeni plin |
| MQ303A | Alkohol, etanol, dim |
| MQ306A | UNP, plin butan |
| MQ307A | Ugljični monoksid |
| MQ309A | Ugljični monoksid, zapaljivi plinovi |
| MG811 | Ugljični dioksid (CO2) |
| AQ-104 | Kvaliteta zraka |
MQ6 osjetnik plina
Donja slika prikazuje dijagram pinova senzora MQ6. Međutim, lijeva slika je MQ6 senzor zasnovan na modulu za povezivanje s jedinicom mikrokontrolera, pin dijagram modula također je prikazan na toj slici.

Pin 1 je VCC, pin 2 je GND, pin 3 je digitalni izlaz (logika je niska kad se detektira plin.), A Pin 4 je analogni izlaz. Lonac se koristi za podešavanje osjetljivosti. Nije RL. RL otpor je pravi otpor DOUT LED-a.

Svaki senzor serije MQ ima grijaći element i otpor osjetnika. Ovisno o koncentraciji plina, mijenja se otpor osjetnika i otkrivanjem promjenjivog otpora može se izmjeriti koncentracija plina. Za mjerenje koncentracije plina u PPM svi MQ senzori daju logaritamski graf koji je vrlo važan. Grafikon daje pregled koncentracije plina s omjerom RS i RO.
Kako izmjeriti PPM pomoću senzora za plin MQ?
RS je osjetni otpor tijekom prisutnosti određenog plina, dok je RO osjetni otpor u čistom zraku bez određenog plina. Logaritamski graf u nastavku preuzet iz podatkovne tablice daje pregled koncentracije plina s osjetnim otporom MQ6 senzora. MQ6 senzor koristi se za otkrivanje koncentracije UNP plina. Stoga će senzor MQ6 pružiti određeni otpor tijekom stanja čistog zraka tamo gdje LPG plin nije dostupan. Također, otpor će se promijeniti kad god senzor MQ6 detektira LPG plin.

Dakle, ovaj grafikon moramo ucrtati u naš firmware slično onome što smo radili u našem projektu Arduino Gas detector. Formula treba imati 3 različite točke podataka. Prve dvije podatkovne točke su početak LPG krivulje, u X i Y koordinatama. Treći podatak je nagib.
Dakle, ako odaberemo tamnoplavu krivulju koja je LPG krivulja, početak krivulje u X i Y koordinati je 200 i 2. Dakle, prva podatkovna točka s logaritamske ljestvice je (log200, log2) što je (2,3, 0,30).
Napravimo kao, X1 i Y1 = (2,3, 0,30). Završetak krivulje je druga podatkovna točka. Istim gore opisanim postupkom, X2 i Y2 su (log 10000, log0.4). Dakle, X2 i Y2 = (4, -0,40). Da bi se dobio nagib krivulje, formula je
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Graf koji nam treba može se dati kao
LPG_Curve = = početak X i početak Y, nagib} LPG_Curve = {2.3, 0.30, -0.41}
Za ostale MQ senzore, gore navedene podatke preuzmite iz podatkovne tablice i Logaritamskog grafikona. Vrijednost će se razlikovati ovisno o izmjerenom senzoru i plinu. Za ovaj određeni modul ima digitalni pin koji pruža samo informacije o prisutnom plinu ili ne. Za ovaj se projekt također koristi.
Potrebne komponente
Potrebne komponente za povezivanje MQ senzora s PIC mikrokontrolerom dane su u nastavku -
- Napajanje od 5V
- Breadboard
- Otpor 4.7k
- LCD 16x2
- 1k otpornik
- Kristal od 20 MHz
- 33pF kondenzator - 2kom
- PIC16F877A mikrokontroler
- Senzor MQ serije
- Berg i druge priključne žice.
Shematski

Shema za ovaj plinski senzor s projektom PIC prilično je jednostavna. Analogni pin povezan je s RA0, a digitalni s RD5 za mjerenje analognog napona koji pruža modul osjetnika plina. Ako ste potpuno novi u PIC-u, možda ćete htjeti pogledati PIC ADC tutorial i PIC LCD tutorial kako biste bolje razumjeli ovaj projekt.
Krug je konstruiran u ploči za ploču. Jednom kada su veze dovršene, moje postavljanje izgleda ovako, prikazano u nastavku.

MQ senzor s PIC programiranjem
Glavni dio ovog koda glavna je funkcija i ostale pridružene periferne funkcije. Kompletni program nalazi se na dnu ove stranice, važni isječci koda objašnjeni su kako slijedi
Sljedeća se funkcija koristi za dobivanje vrijednosti otpora senzora u slobodnom zraku. Kako se koristi analogni kanal 0, on dobiva podatke s analognog kanala 0. To je za kalibriranje senzora plina MQ.
float SensorCalibration () { int count; // Ova će funkcija kalibrirati senzor u slobodnom plutajućem zraku val = 0; for (count = 0; count <50; count ++) {// uzeti više uzoraka i izračunati prosječnu vrijednost val + = izračunati_otpor (ADC_Read (0)); __zakasniti_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // podijeljeno sa RO_CLEAN_AIR_FACTOR daje povratni val Ro ; }
Ispod Funkcija koristi se za čitanje analognih vrijednosti MQ senzora i prosječno izračunavanje vrijednosti Rs
plutajuće read_MQ () { int count; plutaju rs = 0; for (count = 0; count <5; count ++) {// uzmite više očitavanja i prosječno ga izračunajte. rs + = izračunaj_otpor (ADC_Read (0)); // rs se mijenja ovisno o koncentraciji plina. __zakašnjenje_ms (50); } rs = rs / 5; povratak rs; }
Sljedeća funkcija koristi se za izračunavanje otpora otpora otpornika razdjelnika napona i otpora opterećenja.
float izračunati_otpor (int adc_channel) {// senzor i otpor opterećenja čine razdjelnik napona. pa koristeći analognu vrijednost i povrat vrijednosti učitavanja (((plutajući) RL_VALUE * (1023-adc_channel) / adc_channel)); // naći ćemo otpornik senzora. }
RL_VALUE definiran je na početku koda kao što je prikazano dolje
#define RL_VALUE (10) // definirajte otpor opterećenja na ploči, u kilo-ohima
Promijenite ovu vrijednost nakon provjere otpora opterećenja na brodu. Može se razlikovati na drugim pločama MQ senzora. Za ucrtavanje dostupnih podataka u mjerilo dnevnika koristi se donja funkcija.
int gas_plot_log_scale (float rs_ro_ratio, float * krivulja) { return pow (10, (((log (rs_ro_ratio)-curve) / krivulja) + krivulja)); }
Krivulja je LPG krivulja definirana u gornjem dijelu koda koji je prethodno izračunat u našem članku iznad.
plutajuća MQ6_krivulja = {2,3,0,30, -0,41}; // Grafički prikaz, promijenite ovo za određeni senzor
Konačno, glavna funkcija unutar koje mjerimo analognu vrijednost, izračunavamo PPM i prikazujemo ga na LCD-u data je u nastavku
void main () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Kalibriranje…."); Ro = Kalibracija senzora (); // clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Gotovo!"); // clear_screen (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K oma"); __zakašnjenje_ms (1500); otkrivanje plina = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Plin je prisutan"); lcd_com (SECOND_LINE); lcd_puts ("Ppm ppm ="); plutaju rs = read_MQ (); omjer plovka = rs / Ro; lcd_print_number (gas_plot_log_scale (omjer, MQ6_krivina)); __zakašnjenje_ms (1500); clear_screen (); } ostalo { lcd_com (FIRST_LINE); lcd_puts ("Plina nema"); } } }
Prvo se RO mjeri na čistom zraku. Zatim se očitava digitalni pin kako bi se provjerilo postoji li plin ili ne. Ako je plin prisutan, plin se mjeri prema predviđenoj krivulji UNP-a.
Upotrijebio sam upaljač da provjerim mijenja li se vrijednost PPM kad se otkrije plin. U ovim upaljačima za cigare nalazi se LPG plin, koji će se nakon ispuštanja u zrak očitavati od strane našeg senzora, a vrijednost PPM-a na LCD-u mijenja se kao što je prikazano u nastavku.

Kompletni rad možete pronaći u videozapisu dnom ove stranice. Ako imate pitanja, ostavite ih u odjeljku za komentare ili upotrijebite naše forume za druga tehnička pitanja.
