- MQ6 gāzes sensors
- Kā izmērīt PPM, izmantojot MQ gāzes sensorus?
- Nepieciešamās sastāvdaļas
- Shematisks
- MQ sensors ar PIC programmēšanu
MQ sērijas gāzes sensori ir ļoti izplatīti sensoru veidi, kurus izmanto gāzes detektoros noteiktu veidu gāzu noteikšanai vai mērīšanai. Šie sensori tiek plaši izmantoti visās ar gāzi saistītajās ierīcēs, piemēram, no vienkāršiem dūmu detektoriem līdz rūpnieciskiem gaisa kvalitātes monitoriem. Mēs jau esam izmantojuši šos MQ gāzes sensorus kopā ar Arduino, lai izmērītu dažas kaitīgas gāzes, piemēram, amonjaku. Šajā rakstā mēs uzzināsim, kā izmantot šos gāzes sensorus ar PIC mikrokontrolleriem, lai izmērītu gāzes PPM vērtību un parādītu to uz 16x2 LCD.
Kā minēts iepriekš, tirgū ir pieejami dažādi MQ sērijas sensori, un katrs sensors var izmērīt dažāda veida gāzes, kā parādīts zemāk esošajā tabulā. Šī raksta labad mēs izmantosim MQ6 gāzes sensoru ar PIC, ko var izmantot sašķidrinātas naftas gāzes klātbūtnes un koncentrācijas noteikšanai. Tomēr, izmantojot to pašu aparatūru un programmaparatūru, citus MQ sērijas sensorus var izmantot arī bez būtiskām izmaiņām koda un aparatūras daļā.
Sensors | Atklāj |
MQ-2 | Metāns, butāns, sašķidrināta naftas gāze, dūmi |
MQ-3 | Alkohols, etanols, smēķēšana |
MQ-4 | Metāns, CNG gāze |
MQ-5 | Dabasgāze, sašķidrināta naftas gāze |
MQ-6 | LPG, butāna gāze |
MQ-7 | Oglekļa monoksīds |
MQ-8 | Ūdeņraža gāze |
MQ-9 | Oglekļa monoksīds, viegli uzliesmojošas gāzes. |
MQ131 | Ozons |
MQ135 | Gaisa kvalitāte (benzols, alkohols, dūmi) |
MQ136 | Ūdeņraža sulfīda gāze |
MQ137 | Amonjaks |
MQ138 | Benzols, toluols, spirts, acetons, propāns, formaldehīda gāze, ūdeņradis |
MQ214 | Metāns, dabasgāze |
MQ216 | Dabasgāze, Ogļu gāze |
MQ303A | Alkohols, etanols, smēķēšana |
MQ306A | LPG, butāna gāze |
MQ307A | Oglekļa monoksīds |
MQ309A | Oglekļa monoksīds, viegli uzliesmojošas gāzes |
MG811 | Oglekļa dioksīds (CO2) |
AQ-104 | Gaisa kvalitāte |
MQ6 gāzes sensors
Zemāk redzamajā attēlā parādīta MQ6 sensora tapu diagramma. Tomēr kreisais attēls ir moduļa bāzes MQ6 sensors, kas paredzēts saskarnei ar mikrokontrolleru bloku, šajā attēlā ir parādīta arī moduļa tapu diagramma.
1. kontakts ir VCC, 2. kontakts ir GND, 3. kontakts ir digitālā izeja (loģika zema, kad tiek konstatēta gāze.) Un 4. tapa ir analogā izeja. Katlu izmanto jutīguma pielāgošanai. Tas nav RL. RL rezistors ir pareizais DOUT LED rezistors.
Katram MQ sērijas sensoram ir sildelements un sensora pretestība. Atkarībā no gāzes koncentrācijas mainās sensora pretestība, un, nosakot mainīgo pretestību, var izmērīt gāzes koncentrāciju. Lai mērītu gāzes koncentrāciju PPM, visi MQ sensori nodrošina logaritmisko grafiku, kas ir ļoti svarīgi. Diagrammā ir sniegts pārskats par gāzes koncentrāciju ar RS un RO attiecību.
Kā izmērīt PPM, izmantojot MQ gāzes sensorus?
RS ir jutības pretestība konkrētas gāzes klātbūtnes laikā, savukārt RO ir jutības pretestība tīrā gaisā bez īpašas gāzes. Zemāk esošais logaritmiskais grafiks, kas ņemts no datu lapas, sniedz pārskatu par gāzes koncentrāciju ar MQ6 sensora jutības pretestību. MQ6 sensors tiek izmantots sašķidrinātas naftas gāzes koncentrācijas noteikšanai. Tādēļ MQ6 sensors nodrošinās īpašu pretestību tīra gaisa apstākļos, kad nav pieejama SNG gāze. Arī pretestība mainīsies ikreiz, kad MQ6 sensors nosaka sašķidrinātas naftas gāzi.
Tātad, šis grafiks mums jāpievieno programmaparatūrai līdzīgi tam, ko mēs darījām mūsu Arduino gāzes detektoru projektā. Formulai ir 3 dažādi datu punkti. Pirmie divi datu punkti ir LPG līknes sākums X un Y koordinātās. Trešie dati ir slīpums.
Tātad, ja mēs izvēlamies dziļi zilo līkni, kas ir LPG līkne, līknes sākums X un Y koordinātās ir 200 un 2. Tātad pirmais logaritmiskās skalas datu punkts ir (log200, log2), kas ir (2,3, 0,30).
Izveidosim to kā X1 un Y1 = (2,3, 0,30). Līknes beigas ir otrais datu punkts. Ar to pašu procesu, kas aprakstīts iepriekš, X2 un Y2 ir (log 10000, log0.4). Tādējādi X2 un Y2 = (4, -0,40). Lai iegūtu līknes slīpumu, formula ir
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Mums vajadzīgo grafiku var dot kā
LPG_Curve = {sākot X un sākot Y, slīpums} LPG_Curve = {2.3, 0.30, -0.41}
Attiecībā uz citiem MQ sensoriem iegūstiet iepriekš minētos datus no datu lapas un Logaritmiskā grafika diagrammas. Vērtība atšķirsies atkarībā no sensora un izmērītās gāzes. Šim konkrētajam modulim tam ir digitāla tapa, kas sniedz tikai informāciju par esošo gāzi vai nē. Šim projektam tas arī tiek izmantots.
Nepieciešamās sastāvdaļas
Nepieciešamās sastāvdaļas MQ sensora un PIC mikrokontrollera saskarnei ir norādītas zemāk-
- 5V barošanas avots
- Maizes dēlis
- 4.7k rezistors
- LCD 16x2
- 1k rezistors
- 20Mhz kristāls
- 33pF kondensators - 2gab
- PIC16F877A mikrokontrolleris
- MQ sērijas sensors
- Berg un citi savienojuma vadi.
Shematisks
Šī gāzes sensora shēma ar PIC projektu ir diezgan taisna. Analogā tapa ir savienota ar RA0, bet digitālā - ar RD5, lai mērītu analogo spriegumu, ko nodrošina gāzes sensora modulis. Ja PIC esat pilnīgi jauns, iespējams, vēlēsities izpētīt PIC ADC apmācību un PIC LCD apmācību, lai labāk izprastu šo projektu.
Kontūra ir izveidota maizes dēlī. Kad savienojumi ir pabeigti, mana iestatīšana izskatās šādi, kā parādīts zemāk.
MQ sensors ar PIC programmēšanu
Šī koda galvenā daļa ir galvenā funkcija un citas saistītās perifērijas funkcijas. Programma Complete ir atrodama šīs lapas apakšdaļā, svarīgie koda fragmenti ir izskaidroti šādi
Tālāk norādītā funkcija tiek izmantota sensora pretestības vērtības iegūšanai brīvā gaisā. Tā kā tiek izmantots analogais kanāls 0, tas iegūst datus no analogā kanāla 0. Tas paredzēts MQ gāzes sensora kalibrēšanai.
pludiņš SensorCalibration () { int skaits; // Šī funkcija kalibrēs sensoru brīvā gaisa pludiņā val = 0; for (skaits = 0; skaits <50; skaits ++) {// ņem vairākus paraugus un aprēķina vidējo vērtību val + = aprēķina pretestību (ADC_Read (0)); __kavēšanās_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // dalot ar RO_CLEAN_AIR_FACTOR, iegūst Ro atgriešanās val; }
Zem funkcijas tiek izmantota, lai nolasītu MQ sensora analogās vērtības un vidēji to aprēķinātu Rs vērtībai
pludiņš lasīt_MQ () { int skaits; pludiņš rs = 0; par (skaits = 0; skaits <5; skaits ++) {// ņem vairākus rādījumus un vidēji to. rs + = aprēķināt pretestību (ADC_Read (0)); // rs mainās atkarībā no gāzes koncentrācijas. __kavēšanās_ms (50); } rs = rs / 5; atgriezties rs; }
Zemāk esošo funkciju izmanto, lai aprēķinātu pretestību no sprieguma dalītāja rezistora un slodzes pretestību.
pludiņš aprēķina pretestību (int adc_channel) {// sensors un slodzes rezistors veido sprieguma dalītāju. tātad, izmantojot analogās vērtības un slodzes vērtības atdevi (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // atradīsim sensora rezistoru. }
RL_VALUE ir definēta koda sākumā, kā parādīts zemāk
#define RL_VALUE (10) // nosaka slodzes pretestību uz tāfeles kilogramos omu
Mainiet šo vērtību pēc borta slodzes pretestības pārbaudes. Tas var būt atšķirīgs citās MQ sensoru plāksnēs. Lai attēlotu pieejamos datus žurnāla skalā, tiek izmantota šī funkcija.
int gas_plot_log_scale (pludiņš rs_ro_ratio, pludiņš * līkne) { atgriezeniskā enerģija (10, (((log (rs_ro_ratio) -līkne) / līkne) + līkne)); }
Līkne ir iepriekš definētā LPG līkne, kas iepriekš tika aprēķināts mūsu rakstā iepriekš.
pludiņš MQ6_līkne = {2,3,0,30, -0,41}; // Grafika diagramma, mainiet to konkrētam sensoram
Visbeidzot, galvenā funkcija, kurā mēs izmērām analogo vērtību, aprēķinām PPM un parādām to LCD, ir sniegta zemāk
void main () { system_init (); notīrīt_ekrānu (); lcd_com (FIRST_LINE); lcd_puts ("Kalibrēšana…."); Ro = sensora kalibrēšana (); // notīrīt ekrānu (); lcd_com (FIRST_LINE); lcd_puts ("Gatavs!"); // notīrīt_ekrānu (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K omi"); __kavēšanās_ms (1500); gas_detect = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Gāze ir klāt"); lcd_com (SECOND_LINE); lcd_puts ("Gāzes ppm ="); pludiņš rs = lasīt_MQ (); pludiņa attiecība = rs / Ro; lcd_print_number (gas_plot_log_scale (attiecība, MQ6_curve)); __kavēšanās_ms (1500); notīrīt_ekrānu (); } cits { lcd_com (FIRST_LINE); lcd_puts ("Gāzes nav"); } } }
Pirmkārt, sensora RO mēra tīrā gaisā. Tad tiek nolasīta digitālā tapa, lai pārbaudītu, vai gāze ir vai nav. Ja ir gāze, gāzi mēra pēc norādītās sašķidrinātās naftas gāzes līknes.
Esmu izmantojis šķiltavu, lai pārbaudītu, vai PPM vērtība mainās, kad tiek konstatēta gāze. Šajos cigāru šķiltavās ir sašķidrināta naftas gāze, kuru, izlaižot gaisā, nolasīs mūsu sensors, un LCD LCD mainīsies PPM vērtība, kā parādīts zemāk.
Pilnīgu darbu var atrast video, kas sniegts šīs lapas apakšdaļā. Ja jums ir kādi jautājumi, lūdzu, atstājiet tos komentāru sadaļā vai izmantojiet mūsu forumus citiem tehniskiem jautājumiem.