- MQ6 gassføler
- Hvordan måler jeg PPM ved hjelp av MQ gassensorer?
- Nødvendige komponenter
- Skjematisk
- MQ-sensor med PIC-programmering
MQ-serien Gassfølere er svært vanlige typer sensorer som brukes i gassdetektorer for å oppdage eller måle visse typer gasser. Disse sensorene er mye brukt i alle gassrelaterte enheter, for eksempel fra enkle røykvarslere til industrielle luftkvalitetsmonitorer. Vi har allerede brukt disse MQ-gassensorene med Arduino til å måle noen skadelige gasser som ammoniakk. I denne artikkelen vil vi lære hvordan du bruker disse gassensorene med PIC Microcontrollers, for å måle PPM-verdien til gassen og vise den på en 16x2 LCD.
Som nevnt tidligere, er det forskjellige typer sensorer i MQ-serien tilgjengelig i markedet, og hver sensor kan måle forskjellige typer gasser som vist i tabellen nedenfor. Av hensyn til denne artikkelen vil vi bruke MQ6 gassføler med PIC som kan brukes til å oppdage tilstedeværelse og konsentrasjon av LPG-gass. Imidlertid, ved å bruke samme maskinvare og firmware, kan andre MQ-serie sensorer også brukes uten større endringer i koden og maskinvaredelen.
Sensor | Oppdager |
MQ-2 | Metan, butan, LPG, røyk |
MQ-3 | Alkohol, etanol, røyk |
MQ-4 | Metan, CNG Gas |
MQ-5 | Naturgass, LPG |
MQ-6 | LPG, butangass |
MQ-7 | Karbonmonoksid |
MQ-8 | Hydrogengass |
MQ-9 | Karbonmonoksid, brennbare gasser. |
MQ131 | Ozon |
MQ135 | Luftkvalitet (benzen, alkohol, røyk) |
MQ136 | Hydrogensulfidgass |
MQ137 | Ammoniakk |
MQ138 | Benzen, toluen, alkohol, aceton, propan, formaldehydgass, hydrogen |
MQ214 | Metan, naturgass |
MQ216 | Naturgass, Kullgass |
MQ303A | Alkohol, etanol, røyk |
MQ306A | LPG, butangass |
MQ307A | Karbonmonoksid |
MQ309A | Karbonmonoksid, brennbare gasser |
MG811 | Karbondioksid (CO2) |
AQ-104 | Luftkvalitet |
MQ6 gassføler
Bildet nedenfor viser MQ6 sensor pin diagram. Imidlertid er det venstre bildet en modulbasert MQ6-sensor for grensesnitt med mikrokontrollerenheten, pin-diagrammet til modulen vises også i det bildet.
Pin 1 er VCC, Pin 2 er GND, Pin 3 er Digital ut (Logisk lav når gass oppdages.) Og Pin 4 er den analoge utgangen. Gryten brukes til å justere følsomheten. Det er ikke RL. RL-motstanden er den rette motstanden til DOUT LED.
Hver sensor i MQ-serien har et varmeelement og en følemotstand. Avhengig av konsentrasjonen av gassen, blir følemotstanden endret, og ved å oppdage den endrede motstanden kan gasskonsentrasjonen måles. For å måle gasskonsentrasjonen i PPM gir alle MQ-sensorer en logaritmisk graf som er veldig viktig. Grafen gir en oversikt over gasskonsentrasjonen med forholdet mellom RS og RO.
Hvordan måler jeg PPM ved hjelp av MQ gassensorer?
RS er sansemotstanden under nærvær av en bestemt gass, mens RO er sansemotstanden i ren luft uten spesiell gass. Den nedenstående logaritmiske grafen hentet fra databladet gir en oversikt over gasskonsentrasjonen med sensormotstanden til MQ6-sensoren. MQ6-sensoren brukes til å oppdage LPG-gasskonsentrasjon. Derfor vil MQ6-sensoren gi en spesiell motstand under ren luftforhold der LPG-gassen ikke er tilgjengelig. Motstanden vil også endres når LPG-gassen oppdages av MQ6-sensoren.
Så vi må plotte denne grafen i firmwaren vår, lik den vi gjorde i vårt Arduino Gas detector Project. Formelen er å ha 3 forskjellige datapunkter. De to første datapunktene er starten på LPG-kurven, i X- og Y-koordinater. Den tredje data er skråningen.
Så hvis vi velger den dypblå kurven som er LPG-kurven, er starten på kurven i X- og Y-koordinaten 200 og 2. Så det første datapunktet fra den logaritmiske skalaen er (log200, log2) som er (2,3, 0,30).
La oss gjøre det som, X1 og Y1 = (2.3, 0.30). Slutt på kurven er det andre datapunktet. Ved samme prosess som beskrevet ovenfor er X2 og Y2 (log 10000, log0.4). Dermed er X2 og Y2 = (4, -0,40). For å få kurvens helling, er formelen
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Grafen vi trenger kan gis som
LPG_Curve = {starter X og starter Y, stigning} LPG_Curve = {2.3, 0.30, -0.41}
For andre MQ-sensorer, få ovennevnte data fra databladet og det logaritmiske grafplottet. Verdien vil variere basert på sensor og målt gass. For denne spesielle modulen har den en digital pin som bare gir informasjon om gass som er tilstede eller ikke. For dette prosjektet brukes det også.
Nødvendige komponenter
Nødvendige komponenter for grensesnitt MQ-sensor med PIC-mikrokontroller er gitt nedenfor-
- 5V strømforsyning
- Brettbrett
- 4,7 k motstand
- LCD 16x2
- 1k motstand
- 20Mhz krystall
- 33pF kondensator - 2stk
- PIC16F877A mikrokontroller
- MQ-serie sensor
- Berg og andre tilkoblingskabler.
Skjematisk
Skjematisk for denne gassføleren med et PIC-prosjekt er ganske rett frem. Den analoge pinnen er koblet til RA0 og den digitale med RD5 for å måle den analoge spenningen fra gassensormodulen. Hvis du er helt ny på PIC, kan det være lurt å se på PIC ADC tutorial og PIC LCD tutorial for bedre å forstå dette prosjektet.
Kretsen er konstruert i et brødbrett. Når tilkoblingene var fullført, ser oppsettet mitt slik ut, vist nedenfor.
MQ-sensor med PIC-programmering
Hoveddelen av denne koden er hovedfunksjonen og andre tilknyttede perifere funksjoner. Komplett program finner du nederst på denne siden. De viktige kodebitene blir forklart som følger
Funksjonen nedenfor brukes for å få sensorens motstandsverdi i fri luft. Når den analoge kanalen 0 brukes, får den data fra den analoge kanalen 0. Dette er for kalibrering av MQ-gassføleren.
float SensorCalibration () { int count; // Denne funksjonen vil kalibrere sensoren i fri luft flottør val = 0; for (count = 0; count <50; count ++) {// ta flere prøver og beregne gjennomsnittsverdien val + = calcy_resistance (ADC_Read (0)); __forsink_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // delt på RO_CLEAN_AIR_FACTOR gir Ro-returvalen ; }
Nedenfor brukes funksjonen til å lese MQ-sensorens analoge verdier og gjennomsnittlig den for å beregne Rs-verdien
float read_MQ () { int count; flyte rs = 0; for (count = 0; count <5; count ++) {// ta flere målinger og gjennomsnitt det. rs + = beregne motstand (ADC_Read (0)); // rs endres i henhold til gasskonsentrasjon. __forsink_ms (50); } rs = rs / 5; returner rs; }
Funksjonen nedenfor brukes til å beregne motstanden fra spenningsdelermotstanden og lastmotstanden.
float calcut_resistance (int adc_channel) {// sensor og lastmotstand danner en spenningsdeler. så ved hjelp av analog verdi og retur av returverdi (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // vi finner sensormotstand. }
RL_VALUE er definert ved starten av koden som vist nedenfor
#define RL_VALUE (10) // definer lastmotstanden på brettet, i kilo-ohm
Endre denne verdien etter å ha sjekket lastmotstanden ombord. Det kan være annerledes i andre MQ-sensorkort. For å plotte tilgjengelige data i loggskalaen, brukes funksjonen nedenfor.
int gas_plot_log_scale (float rs_ro_ratio, float * curve) { return pow (10, (((log (rs_ro_ratio) -curve) / curve) + curve)); }
Kurven er LPG-kurven definert ovenfor av koden som tidligere er beregnet i vår artikkel ovenfor.
flyte MQ6_curve = {2.3,0.30, -0.41}; // Grafplott, endre dette for en bestemt sensor
Til slutt er hovedfunksjonen der vi måler den analoge verdien, beregner PPM og viser den på LCD-skjermen gitt nedenfor
ugyldig hoved () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Kalibrere…."); Ro = SensorCalibration (); // clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Ferdig!"); // clear_screen (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohms"); __forsink_ms (1500); gas_detect = 0; mens (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Gass er tilstede"); lcd_com (SECOND_LINE); lcd_puts ("Gass ppm ="); flyte rs = read_MQ (); flyteforhold = rs / Ro; lcd_print_number (gas_plot_log_scale (ratio, MQ6_curve)); __forsink_ms (1500); clear_screen (); } annet { lcd_com (FIRST_LINE); lcd_puts ("Gass ikke til stede"); } } }
Først måles sensorens RO i ren luft. Deretter leses den digitale pinnen for å sjekke om gassen er tilstede eller ikke. Hvis gassen er til stede, måles gassen ved å angi LPG-kurven.
Jeg har brukt en lighter for å sjekke om PPM-verdien endres når gassen oppdages. Disse sigarettennerne har LPG-gass i seg, som når den slippes i luften vil bli lest av sensoren vår, og PPM-verdien på LCD-skjermen endres som vist nedenfor.
Komplett arbeid finner du i videoen gitt nederst på denne siden. Hvis du har spørsmål, kan du legge dem igjen i kommentarfeltet, eller bruke forumene våre for andre tekniske spørsmål.