- MQ-serien Gassfølere
- Klargjøre maskinvaren:
- Tilnærming til å måle PPM fra MQ gassensorer:
- Beregne verdien av Ro ved ren luft:
- Mål verdien på Rs:
- Relatert Rs / Ro-forhold med PPM:
- Program for å beregne PPM ved hjelp av MQ-sensor:
- Viser PPM-verdi på maskinvare med Arduino og MQ-137:
Helt fra industrialderens tid har vi menneskeheten utviklet seg raskt. Med hver fremgang forurenser vi også miljøet vårt og til slutt nedverdigende det. Nå er global oppvarming en alarmerende trussel, og til og med luften vi puster inn, blir kritisk. Så luftkvalitetsovervåking har også begynt å få betydning. Så i denne artikkelen vil vi lære hvordan du bruker en hvilken som helst MQ-serie gassføler med Arduino og viser produksjonen i PPM (deler per million). PPM uttrykkes også som milligram per liter (mg / L). Disse sensorene er ofte tilgjengelige og er også pålitelige for måling av forskjellige typer gass vist nedenfor
MQ-serien Gassfølere
- Karbondioksid (CO2): MG-811
- Karbonmonoksid (CO): MQ-9
- Totalt flyktige organiske forbindelser (TVOC): CCS811
- Tilsvarende karbondioksid (eCO2): CCS811
- Metalloksid (MOX): CCS811
- Ammoniakk: MQ-137
- Luftkvalitet: MQ-135
- LPG, alkohol, røyk: MQ2
Vi har allerede brukt MQ2 for røykmåling og MQ-135 for luftkvalitetsovervåkningsprosjekt. Her skal jeg bruke MQ-137-sensoren fra sainsmart for å måle ammoniakk i ppm. Med sensoren i hånden gikk jeg gjennom alle tilgjengelige opplæringsprogrammer og fant at det ikke er noen riktig dokumentasjon på hvordan man måler gassen i ppm. De fleste opplæringsprogrammer handler bare om analoge verdier eller introduserer noen konstanter som ikke er pålitelige for måling av alle typer gass. Så etter å ha tuslet rundt på nettet i lang tid fant jeg endelig hvordan jeg skulle bruke disse MQ-seriens gassensorer for å måle ppm ved hjelp av Arduino. Jeg forklarer ting fra bunnen uten noen biblioteker, slik at du kan bruke denne artikkelen til en hvilken som helst gassensor som er tilgjengelig hos deg.
Klargjøre maskinvaren:
MQ-gassensorene kan enten kjøpes som en modul eller bare som en sensor alene. Hvis formålet ditt er å bare måle ppm, er det best å kjøpe sensoren alene, siden modulen er bra for bare å bruke Digital pin. Så hvis du allerede har kjøpt modulen, må du utføre et lite hack som vil bli diskutert nærmere. For nå, la oss anta at du har kjøpt sensoren. Pinout og tilkobling av sensoren er vist nedenfor
Som du kan se, må du bare koble den ene enden av 'H' til forsyningen og den andre enden av 'H' til bakken. Kombiner deretter både A og begge B. Koble det ene settet til forsyningsspenningen og det andre til den analoge pinnen. Motstanden R L spiller en veldig viktig rolle for å få sensoren til å fungere. Så noter hvilken verdi du bruker, en verdi på 47k anbefales.
Hvis du allerede har kjøpt en modul, bør du spore PCB-sporene dine for å finne verdien av R L i tavlen. Grauonline har allerede gjort dette arbeidet for oss, og kretsskjemaet til MQ-gassensorkortet er gitt nedenfor.
Som du kan se, er motstanden R L (R2) koblet mellom Aout-pinnen og bakken, så hvis du har en modul, kan verdien på R L måles ved å bruke et multimeter i motstandsmodus over Vout-pin og Vcc-pin på modulen. I min sainsmart MQ-137 gassensor var verdien av RL 1K og lå her som vist på bildet nedenfor.
Men nettstedet hevder at det gir en variabel pott på R L som ikke er sant som du kan tydelig se i koblingsskjema, blir potten brukes til å angi variabel spenning for op-amp og har ingenting å gjøre med R L. Så vi må lodde SMD-motstanden (1K) manuelt ovenfor, og vi må bruke vår egen motstand over bakken og Vout-pinnen, som vil fungere som RL. Den beste verdien for RL vil være 47K som foreslått av databladet, derfor skal vi bruke det samme.
Tilnærming til å måle PPM fra MQ gassensorer:
Nå som vi vet at verdien av R L kan fortsette hvordan vi faktisk måler ppm fra disse sensorene. Som alle sensorer er stedet å starte dataarket. MQ-137-databladet er gitt her, men sørg for at du finner riktig datablad for sensoren din. Inne i databladet trenger vi bare en graf som vil bli tegnet opp mot (Rs / Ro) VS PPM, dette er den vi trenger for beregningene våre. Så gab det og hold det et sted praktisk. Den for sensoren min er vist nedenfor.
Det viser seg at MQ137-sensoren kan måle NH3, C2H6O og til og med CO. Men her er jeg bare interessert i verdiene til NH3. Du kan imidlertid bruke samme metode for å beregne ppm for en hvilken som helst sensor du liker. Denne grafen er den eneste kilden for oss å finne verdien av ppm, og hvis vi på en eller annen måte kunne beregne rasjonen av Rs / Ro (X-akse), kan vi bruke denne grafen til å finne verdien av ppm (Y-aksen). For å finne verdien av Rs / Ro må vi finne verdien av Rs og verdien av Ro. Hvor Rs er sensorens motstand ved gasskonsentrasjon og Ro er sensorens motstand i ren sir.
Yess… dette er planen, la oss se hvordan vi kan komme unna med dette….
Beregne verdien av Ro ved ren luft:
Merk at i grafen er verdien av Rs / Ro konstant for luft (tykk blå linje), så vi kan bruke dette til vår fordel og si at når sensoren jobber i frisk luft, vil verdien av Rs / Ro være 3,6, referer til bildet under
Rs / Ro = 3,6
Fra databladet får vi også ha en formel for å beregne verdien av Rs. Formelen er vist nedenfor. Hvis du er interessert i å vite hvordan denne formelen er avledet, kan du lese gjennom jay con-systemer. Jeg vil også kreditere dem for å hjelpe meg med å ordne dette.
I denne formelen er verdien på Vc vår forsyningsspenning (+ 5V), og verdien av R L er den vi allerede beregnet (47K for sensoren min). Hvis vi skriver et lite Arduino-program, kan vi også finne verdien av V RL og til slutt beregne verdien av Rs. Jeg har gitt et Arduino-program nedenfor som leser den analoge spenningen (V RL) til sensoren og beregner verdien av Rs ved hjelp av denne formelen og til slutt viser den i seriell skjerm. Programmet er godt forklart gjennom kommentarseksjonen, så jeg hopper over forklaringen her for å holde denne artikkelen kort.
/ * * Program for å måle verdien av R0 for en kjent RL ved frisk luftforhold * Program av: B.Aswinth Raj * Nettsted: www.circuitdigest.com * Datert: 28-12-2017 * / // Dette programmet fungerer best i et friskluftrom med temperatur Temp: 20 ℃, Fuktighet: 65%, O2-konsentrasjon 21% og når verdien av Rl er 47K #definer RL 47 // Verdien av motstand RL er 47K tom oppsett () // Kjører bare en gang {Serial.begin (9600); // Initialiser seriell COM for å vise verdien} void loop () {float analog_value; flyte VRL; flyte Rs; flyte Ro; for (int test_cycle = 1; test_cycle <= 500; test_cycle ++) // Les sensorens analoge utgang 200 ganger {analog_value = analog_value + analogRead (A0); // legg til verdiene for 200} analog_value = analog_value / 500.0; // Ta gjennomsnittlig VRL = analog_verdi * (5.0 / 1023.0);// Konverter analog verdi til spenning // RS = ((Vc / VRL) -1) * RL er formlene vi fikk fra databladet Rs = ((5.0 / VRL) -1) * RL; // RS / RO er 3,6 slik vi fikk fra grafen for databladet Ro = Rs / 3.6; Serial.print ("Ro at frisk luft ="); Serial.println (Ro); // Vis beregnet Ro-forsinkelse (1000); // forsinkelse på 1sek}
Merk: Verdien på Ro vil variere, la sensoren forvarme minst i 10 timer, og bruk deretter verdien på Ro.
Jeg konkluderte med at Ro-verdien var 30 KΩ for sensoren min (når R L er 47 kΩ). Din kan variere litt.
Mål verdien på Rs:
Nå som vi vet verdien av Ro, kan vi enkelt beregne verdien av Rs ved å bruke de ovennevnte to formlene. Merk at verdien av Rs som ble beregnet tidligere er for friskluftstilstand, og det vil ikke være den samme når ammoniakk er tilstede i luften. Å beregne verdien av R er ikke et stort problem som vi kan ta vare på i det endelige programmet.
Relatert Rs / Ro-forhold med PPM:
Nå som vi vet hvordan vi måler verdien av Rs og Ro, vil vi kunne finne forholdet (Rs / Ro). Deretter kan vi bruke diagrammet (vist nedenfor) for å forholde oss til den tilsvarende verdien av PPM.
Selv om NH3-linjen (cyanfarge) ser ut til å være lineær, er den faktisk ikke lineær. Utseendet er fordi skalaen er delt uniform for utseende. Så relasjonen mellom Rs / Ro og PPM er faktisk logaritmisk, som kan representeres av ligningen nedenfor.
logg (y) = m * logg (x) + b hvor, y = forhold (Rs / Ro) x = PPM m = skråning av linjen b = skjæringspunkt
For å finne verdiene til m og b, må vi vurdere to punkter (x1, y1) og (x2, y2) på bensinledningen vår. Her jobber vi med ammoniakk, så de to punktene jeg har vurdert er (40,1) og (100,0,8) som vist på bildet over (merket som rødt) med rød markering.
m = / m = logg (0,8 / 1) / logg (100/40) m = -0,243
Tilsvarende for (b), la oss få midtpunktverdien (x, y) fra grafen som er (70,0,75) som vist i bildet ovenfor (markert med blått)
b = logg (y) - m * logg (x) b = logg (0,75) - (-0,243) * logg (70) b = 0,323
Det er det nå som vi har beregnet verdien av m og b, vi kan likestille verdien av (Rs / Ro) til PPM ved hjelp av formelen nedenfor
PPM = 10 ^ {/ m}
Program for å beregne PPM ved hjelp av MQ-sensor:
Det komplette programmet for å beregne PPM ved hjelp av en MQ-sensor er gitt nedenfor. Få viktige linjer er forklart nedenfor.
Før vi fortsetter med programmet må vi mate inn verdiene for lastmotstand (RL), skråning (m), skjæringspunkt (b) og verdien av motstand i frisk luft (Ro). Fremgangsmåten for å oppnå alle disse verdiene er allerede forklart, så la oss bare mate dem inn nå
#define RL 47 // Verdien av motstanden RL er 47K #define m -0.263 // Angi beregnet Slope #define b 0.42 // Angi beregnet avskjæringspunkt #define Ro 30 // Angi funnet Ro-verdi
Deretter leser spenningsfallet over føleren (VRL) og omdanne det til Spenning (0V til 5V) siden de analoge avlesnings vil kun returnerer verdier 0-1024.
VRL = analogRead (MQ_sensor) * (5.0 / 1023.0); // Mål spenningsfallet og konverter til 0-5V
Nå som verdien av VRL beregnes, kan du bruke formelen diskutert ovenfor for å beregne verdien av Rs og også forholdet (Rs / Ro)
forholdet = Rs / Ro; // finn forholdet Rs / Ro
Til slutt kan vi beregne PPM med vår logaritmiske formel og vise den på vår serielle skjerm som vist nedenfor
dobbelt ppm = pow (10, ((log10 (forhold) -b) / m)); // bruk formel for å beregne ppm Serial.print (ppm); // Vis ppm
Viser PPM-verdi på maskinvare med Arduino og MQ-137:
Nok av all teorien, la oss bygge en enkel krets med sensoren og LCD-skjermen for å vise verdien av gass i PPM. Her er sensoren jeg bruker MQ137 som måler ammoniakk, kretsskjemaet for oppsettet mitt er vist nedenfor.
Koble til sensoren og LCD-skjermen som vist i kretsdiagrammet, og last opp koden gitt på slutten av programmet. Du må endre Ro-verdien som forklart ovenfor. Gjør også endringene i parameterverdier hvis du bruker en annen motstand som RL enn 4.7K.
La oppsettet være drevet i minst to timer før du tar noen målinger, (48 timer anbefales for mer nøyaktige verdier). Denne tiden kalles oppvarmingstiden, der sensoren varmes opp. Etter dette bør du kunne se verdien av PPM og spenningen som vises på LCD-skjermen som vist nedenfor.
Nå for å sikre at verdiene virkelig er relatert til tilstedeværelsen av ammoniakk, la oss plassere dette oppsettet i en lukket beholder og sende ammoniakkgass inn i den for å sjekke om verdiene øker. Jeg har ikke en skikkelig PPM-måler som kalibrerer den, og det ville være flott om noen med måler kunne teste dette oppsettet og gi meg beskjed.
Du kan se videoen nedenfor for å sjekke hvordan målingene varierte basert på tilstedeværelsen av ammoniakk. Håper du forsto konseptet og likte å lære det. Hvis du er i tvil, la dem være i kommentarseksjonen, eller bruk forumet her for mer detaljert hjelp.