- MQ6 Gas Sensor
- Paano sukatin ang PPM gamit ang MQ Gas sensors?
- Mga kinakailangang sangkap
- Skematika
- MQ Sensor na may PIC Programming
Serye ng MQ Ang mga sensor ng gas ay karaniwang mga uri ng sensor na ginagamit sa Mga Detektor ng Gas upang makita o masukat ang ilang mga uri ng Gases. Ang mga sensor na ito ay malawakang ginagamit sa lahat ng mga aparatong nauugnay sa Gas tulad ng mula sa mga simpleng Detector ng Usok hanggang sa Mga Industrial Air Quality Monitor. Nagamit na namin ang mga MQ gas sensor na ito kasama ang Arduino upang masukat ang ilang mga mapanganib na gas tulad ng Ammonia. Sa artikulong ito, matututunan natin kung paano gamitin ang mga gas sensor na ito sa PIC Microcontrollers, upang masukat ang halaga ng PPM ng gas at ipakita ito sa isang 16x2 LCD.
Tulad ng nabanggit kanina, mayroong iba't ibang mga uri ng mga sensor ng serye ng MQ na magagamit sa merkado at ang bawat sensor ay maaaring masukat ng iba't ibang uri ng mga gas tulad ng ipinakita sa talahanayan sa ibaba. Para sa kapakanan ng artikulong ito, gagamitin namin ang MQ6 Gas sensor na may PIC na maaaring magamit upang makita ang pagkakaroon ng LPG gas at konsentrasyon. Gayunpaman, sa pamamagitan ng paggamit ng parehong hardware at firmware ng iba pang mga sensor ng serye ng MQ ay maaari ding magamit nang walang pangunahing pagbabago sa code at bahagi ng hardware.
Sensor | Nakikita |
MQ-2 | Methane, Butane, LPG, usok |
MQ-3 | Alkohol, Ethanol, usok |
MQ-4 | Methane, CNG Gas |
MQ-5 | Likas na gas, LPG |
MQ-6 | LPG, butane gas |
MQ-7 | Carbon Monoxide |
MQ-8 | Hydrogen Gas |
MQ-9 | Carbon Monoxide, nasusunog na mga gas. |
MQ131 | Ozone |
MQ135 | Kalidad sa Hangin (Benzene, Alkohol, usok) |
MQ136 | Hydrogen Sulfide gas |
MQ137 | Ammonia |
MQ138 | Benzene, Toluene, Alkohol, Acetone, Propane, Formaldehyde gas, Hydrogen |
MQ214 | Methane, Likas na gas |
MQ216 | Likas na gas, Coal gas |
MQ303A | Alkohol, Ethanol, usok |
MQ306A | LPG, butane gas |
MQ307A | Carbon Monoxide |
MQ309A | Carbon Monoxide, nasusunog na mga gas |
MG811 | Carbon Dioxide (CO2) |
AY-104 | Kalidad ng hangin |
MQ6 Gas Sensor
Ipinapakita ng imahe sa ibaba ang diagram ng pin ng sensor ng MQ6. Gayunpaman, ang kaliwang imahe ay isang batay sa module na MQ6 sensor para sa pakikipag-ugnay sa yunit ng microcontroller, ang diagram ng pin ng module ay ipinapakita din sa imaheng iyon.
Ang Pin 1 ay VCC, ang Pin 2 ay ang GND, ang Pin 3 ay ang Digital out (Mababa ang Logic kapag napansin ang gas.) At ang Pin 4 ang output ng Analog. Ginagamit ang palayok upang ayusin ang pagkasensitibo. Hindi ito RL. Ang RL risistor ay ang tamang risistor ng DOUT LED.
Ang bawat sensor ng serye ng MQ ay may elemento ng pag-init at paglaban sa sensing. Nakasalalay sa konsentrasyon ng gas, ang resistensya sa sensing ay nabago at sa pamamagitan ng pagtuklas ng pagbabago ng paglaban, masusukat ang konsentrasyon ng gas. Upang sukatin ang konsentrasyon ng gas sa PPM lahat ng mga sensor ng MQ ay nagbibigay ng isang logarithmic na grap na napakahalaga. Nagbibigay ang graph ng isang pangkalahatang-ideya ng konsentrasyon ng gas na may ratio ng RS at RO.
Paano sukatin ang PPM gamit ang MQ Gas sensors?
Ang RS ay ang paglaban ng pang-unawa sa pagkakaroon ng isang partikular na gas samantalang ang RO ay ang paglaban ng kahulugan sa malinis na hangin nang walang anumang partikular na gas. Ang graph ng logarithmic sa ibaba na kinuha mula sa datasheet ay nagbibigay ng isang pangkalahatang-ideya ng konsentrasyon ng gas na may paglaban sa pakiramdam ng MQ6 sensor. Ginagamit ang MQ6 sensor upang makita ang konsentrasyon ng gas ng LPG. Samakatuwid, ang sensor ng MQ6 ay magbibigay ng isang partikular na paglaban sa panahon ng malinis na kondisyon ng hangin kung saan hindi magagamit ang LPG gas. Gayundin, magbabago ang paglaban sa tuwing ang LPG gas ay napansin ng MQ6 sensor.
Kaya, kailangan naming i-plot ang grap na ito sa aming firmware na katulad sa ginawa namin sa aming Arduino Gas detector Project. Ang formula ay upang magkaroon ng 3 magkakaibang mga puntos ng data. Ang unang dalawang puntos ng data ay ang pagsisimula ng curve ng LPG, sa mga coordinate ng X at Y. Ang pangatlong data ay ang slope.
Kaya, Kung pipiliin namin ang malalim na asul na kurba na ang LPG curve, ang pagsisimula ng curve sa X at Y coordinate ay ang 200 at 2. Kaya, ang unang punto ng data mula sa scale ng logarithmic ay (log200, log2) na kung 2.3, 0.30).
Gawin natin ito bilang, X1 at Y1 = (2.3, 0.30). Ang pagtatapos ng curve ay ang pangalawang data point. Sa pamamagitan ng parehong proseso na inilarawan sa itaas, ang X2 at Y2 ay (mag-log 10000, log0.4). Kaya, X2 at Y2 = (4, -0.40). Upang makuha ang slope ng curve, ang formula ay
= (Y2-Y1) / (X2-X1) = (- 0.40 - 0.30) / (4 - 2.3) = (-0.70) / (1.7) = -0.41
Maaaring ibigay ang grap na kailangan namin bilang
LPG_Curve = {simula X at pagsisimula ng Y, slope} LPG_Curve = {2.3, 0.30, -0.41}
Para sa iba pang mga sensor ng MQ, kunin ang data sa itaas mula sa datasheet at sa plot ng grap ng Logarithmic. Mag-iiba ang halaga batay sa sinusukat na sensor at gas. Para sa partikular na modyul na ito, mayroon itong isang digital pin na nagbibigay lamang ng impormasyon tungkol sa kasalukuyang gas o hindi. Para sa proyektong ito, ginagamit din ito.
Mga kinakailangang sangkap
Ang mga kinakailangang sangkap para sa interfacing MQ sensor na may PIC microcontroller ay ibinibigay sa ibaba-
- 5V supply ng kuryente
- Breadboard
- 4.7k risistor
- LCD 16x2
- 1k risistor
- 20Mhz na kristal
- 33pF capacitor - 2pcs
- PIC16F877A microcontroller
- MQ series sensor
- Berg at iba pang mga wire sa hookup.
Skematika
Ang eskematiko para sa sensor ng Gas na may proyekto na PIC ay medyo tuwid. Ang Analog pin ay konektado sa RA0 at sa digital na may RD5 upang sukatin ang analog boltahe na ibinigay ng module ng Gas sensor. Kung ganap kang bago sa PIC, baka gusto mong tingnan ang tutorial ng PIC ADC at tutorial ng PIC LCD upang mas maunawaan ang proyektong ito.
Ang circuit ay itinayo sa isang breadboard. Kapag nakumpleto ang mga koneksyon, ganito ang aking set-up, ipinapakita sa ibaba.
MQ Sensor na may PIC Programming
Ang pangunahing bahagi ng code na ito ay ang pangunahing pag-andar at iba pang mga nauugnay na pag-andar ng paligid. Ang Kumpletong programa ay matatagpuan sa ilalim ng pahinang ito, ipinapaliwanag ang mga mahahalagang piraso ng code tulad ng sumusunod
Ang pagpapaandar sa ibaba ay ginagamit para sa pagkuha ng halaga ng paglaban ng sensor sa libreng hangin. Tulad ng ginagamit ng Analog channel 0, nakakakuha ito ng data mula sa analog channel 0. Ito ay para sa pag- calibrate ng MQ Gas sensor.
float SensorCalibration () { int count; // Ang function na ito ay i-calibrate ang sensor sa libreng air float val = 0; para sa (count = 0; count <50; count ++) {// kumuha ng maraming mga sample at kalkulahin ang average na halaga val + = calcul_resistance (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // hinati ng RO_CLEAN_AIR_FACTOR ay magbubunga ng Ro return val; }
Ginagamit ang Below Function upang basahin ang mga halagang analog ng MQ sensor at i-average ito upang makalkula ang halagang Rs
float read_MQ () { int count; float rs = 0; para sa (count = 0; count <5; count ++) {// tumagal ng maraming mga pagbasa at i-average ito. rs + = calcul_resistance (ADC_Read (0)); // rs nagbabago alinsunod sa konsentrasyon ng gas. __delay_ms (50); } rs = rs / 5; ibalik ang rs; }
Ang pagpapaandar sa ibaba ay ginagamit upang makalkula ang paglaban mula sa boltahe divider risistor at ang paglaban sa pag-load.
float calcul_resistance (int adc_channel) {// sensor at load resistor ay bumubuo ng isang divider ng boltahe. kaya gamit ang analog na halaga at pagbalik ng halaga ng pag-load (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // mahahanap namin ang resistor ng sensor. }
Ang RL_VALUE ay tinukoy sa simula ng code tulad ng ipinakita sa ibaba
# tukuyin ang RL_VALUE (10) // tukuyin ang paglaban sa pag-load sa board, sa kilo-ohms
Baguhin ang halagang ito pagkatapos suriin ang onboard resistensya. Maaari itong maging iba sa iba pang mga board ng sensor ng MQ. Upang mailagay ang magagamit na data sa antas ng pag-log, ginagamit ang pagpapaandar sa ibaba.
int gas_plot_log_scale (float rs_ro_ratio, float * curve) { return pow (10, (((log (rs_ro_ratio) -curve) / curve) + curve)); }
Ang curve ay ang curve ng LPG na tinukoy sa itaas ng code na dating kinakalkula sa aming artikulo sa itaas.
float MQ6_curve = {2.3,0.30, -0.41}; // Graph Plot, baguhin ito para sa partikular na sensor
Sa wakas, ang pangunahing pag-andar sa loob kung saan sinusukat namin ang halagang analog, kalkulahin ang PPM at ipakita ito sa LCD na ibinigay sa ibaba
void main () { system_init (); malinaw na screen(); lcd_com (FIRST_LINE); lcd_puts ("Pagkakalibrate…."); Ro = SensorCalibration (); //malinaw na screen(); lcd_com (FIRST_LINE); lcd_puts ("Tapos Na!"); //malinaw na screen(); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohms"); __delay_ms (1500); gas_detect = 0; habang (1) { kung (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Ang gas ay naroroon"); lcd_com (SECOND_LINE); lcd_puts ("Gas ppm ="); float rs = read_MQ (); float ratio = rs / Ro; lcd_print_number (gas_plot_log_scale (ratio, MQ6_curve)); __delay_ms (1500); malinaw na screen(); } iba pa { lcd_com (FIRST_LINE); lcd_puts ("Wala ang gas"); } } }
Una, ang RO ng sensor ay sinusukat sa malinis na hangin. Pagkatapos ay binasa ang digital pin upang suriin kung ang gas ay naroroon o wala. Kung ang gas ay naroroon, ang gas ay sinusukat ng ibinigay na curve ng LPG.
Gumamit ako ng isang mas magaan upang suriin kung ang halaga ng PPM ay nagbabago kapag nakita ang gas. Ang mga light light ng tabako ay mayroong LPG gas sa loob nila, na kapag inilabas sa hangin ay babasahin ng aming sensor at ang halaga ng PPM sa mga pagbabago sa LCD tulad ng ipinakita sa ibaba.
Ang kumpletong pagtatrabaho ay matatagpuan sa video na ibinigay sa ilalim ng pahinang ito. Kung mayroon kang anumang mga katanungan mangyaring iwanan ang mga ito sa seksyon ng komento, o gamitin ang aming mga forum para sa iba pang mga teknikal na katanungan.