- MQ-serie gassensorer
- Forberedelse af din hardware:
- Fremgangsmåde til måling af PPM fra MQ-gassensorer:
- Beregning af værdien af ro i ren luft:
- Mål værdien af R'er:
- Forholdet mellem Rs / Ro-forhold og PPM:
- Program til beregning af PPM ved hjælp af MQ-sensor:
- Viser PPM-værdi på hardware med Arduino og MQ-137:
Lige fra industriens tidsalder har vi menneskeheden udviklet os hurtigt. Under alle fremskridt forurener vi også vores miljø og nedbryder det til sidst. Nu er global opvarmning en alarmerende trussel, og selv luften, vi indånder, bliver kritisk. Så overvågning af luftkvaliteten er også begyndt at få betydning. Så i denne artikel lærer vi, hvordan man bruger en hvilken som helst MQ-serie gassensor med Arduino og viser output i PPM (dele pr. Million). PPM udtrykkes også som milligram pr. Liter (mg / l). Disse sensorer er almindeligt tilgængelige og er også pålidelige til måling af forskellige gastyper vist nedenfor
MQ-serie gassensorer
- Kuldioxid (CO2): MG-811
- Kulilte (CO): MQ-9
- Samlede flygtige organiske forbindelser (TVOC'er): CCS811
- Ækvivalent kuldioxid (eCO2): CCS811
- Metaloxid (MOX): CCS811
- Ammoniak: MQ-137
- Luftkvalitet: MQ-135
- LPG, alkohol, røg: MQ2
Vi har allerede brugt MQ2 til røgdetektering og MQ-135 til projekt til overvågning af luftkvalitet. Her skal jeg bruge MQ-137 sensoren fra sainsmart til at måle ammoniak i ppm. Med sensoren i hånden gennemgik jeg alle tilgængelige tutorials og fandt ud af, at der ikke er nogen korrekt dokumentation for, hvordan man måler gassen i ppm. De fleste selvstudier behandler enten kun de analoge værdier eller introducerer nogle konstanter, som ikke er pålidelige til måling af alle typer gas. Så efter at have rodet rundt i lang tid fandt jeg endelig, hvordan man bruger disse MQ-seriens gassensorer til at måle ppm ved hjælp af Arduino. Jeg forklarer ting fra bunden uden nogen biblioteker, så du kan bruge denne artikel til enhver gassensor, der er tilgængelig hos dig.
Forberedelse af din hardware:
MQ-gassensorerne kan enten købes som et modul eller bare som en sensor alene. Hvis dit formål kun er at måle ppm, er det bedst at købe sensoren alene, da modulet kun er egnet til brug af den digitale pin. Så hvis du allerede har købt modulet, skal du udføre et lille hack, som vil blive diskuteret yderligere. Lad os nu antage, at du har købt sensoren. Sensorens pinout og tilslutning er vist nedenfor
Som du kan se, skal du bare forbinde den ene ende af 'H' til forsyningen og den anden ende af 'H' til jorden. Kombiner derefter både A'er og begge B'er. Tilslut det ene sæt til forsyningsspænding og det andet til din analoge pin. Modstanden R L spiller en meget vigtig rolle for, at sensoren arbejde. Så noter hvilken værdi du bruger, en værdi på 47k anbefales.
Hvis du allerede har købt et modul, skal du spore dine PCB-spor for at finde værdien af din R L i tavlen. Grauonline har allerede udført dette arbejde for os, og kredsløbsdiagrammet for MQ-gassensorkortet er angivet nedenfor.
Som du kan se, er modstanden R L (R2) forbundet mellem Aout-stiften og jorden, så hvis du har et modul, kan værdien af R L måles ved hjælp af et multimeter i modstandstilstand over Vout-stift og Vcc-stift på modulet. I min sainsmart MQ-137 gassensor var værdien af RL 1K og lå her som vist på billedet nedenfor.
, Hjemmesiden fordringer, det giver en variabel gryde med R Men L, som ikke er sandt, som du tydeligt kan se i ledningsdiagram, bliver puljen bruges til at indstille den variable spænding for op-amp og har intet at gøre med R L. Så vi skal manuelt lodde SMD-modstanden (1K) vist ovenfor, og vi skal bruge vores egen modstand over jorden og Vout-stiften, som fungerer som RL. Den bedste værdi for RL er 47K som foreslået af databladet, derfor skal vi bruge det samme.
Fremgangsmåde til måling af PPM fra MQ-gassensorer:
Nu hvor vi ved, at værdien af R L kan fortsætte med, hvordan man faktisk måler ppm fra disse sensorer. Som alle sensorer er stedet at starte dets datablad. MQ-137-databladet er angivet her, men sørg for at finde det rigtige datablad til din sensor. Inde i databladet behøver vi kun en graf, der vil blive afbildet mod (Rs / Ro) VS PPM, det er den, vi har brug for til vores beregninger. Så gab det og hold det et sted praktisk. Den ene til min sensor er vist nedenfor.
Det viser sig, at MQ137-sensoren kan måle NH3, C2H6O og endda CO. Men her er jeg kun interesseret i værdierne for NH3. Du kan dog bruge den samme metode til at beregne ppm for enhver sensor, du kan lide. Denne graf er den eneste kilde, som vi kan finde værdien af ppm, og hvis vi på en eller anden måde kunne beregne rationen af Rs / Ro (X-akse), kan vi bruge denne graf til at finde værdien af ppm (Y-aksen). For at finde værdien af Rs / Ro er vi nødt til at finde værdien af Rs og værdien af Ro. Hvor Rs er sensorens modstand ved gaskoncentration, og Ro er sensorens modstand i ren sir.
Yess… dette er planen, lad os se, hvordan vi kan komme væk med dette….
Beregning af værdien af ro i ren luft:
Bemærk, at i grafen er værdien af Rs / Ro konstant for luft (tyk blå linje), så vi kan bruge dette til vores fordel og sige, at når sensoren arbejder i frisk luft, vil værdien af Rs / Ro være 3,6, se billedet under
Rs / Ro = 3,6
Fra databladet får vi også en formel til beregning af værdien af Rs. Formlen er vist nedenfor. Hvis du er interesseret i at vide, hvordan denne formel er afledt, kan du læse igennem jay con-systemer, jeg vil også gerne kreditere dem for at hjælpe mig med at ordne dette.
I denne formel værdien af Vc er vores forsyningsspænding (+ 5V) og værdien af R L er den ene, at vi allerede er beregnet (47K for min sensor). Hvis vi skriver et lille Arduino-program, kunne vi også finde værdien af V RL og endelig beregne værdien af Rs. Jeg har givet et Arduino-program nedenfor, der læser sensorens analoge spænding (V RL) og beregner værdien af R ved hjælp af denne formel og til sidst viser den i den serielle skærm. Programmet er godt forklaret gennem kommentarsektionen, så jeg springer over forklaringen her for at holde denne artikel kort.
/ * * Program til måling af værdien af R0 for en kendt RL ved frisk luft * Program af: B.Aswinth Raj * Websted: www.circuitdigest.com * Dateret: 28-12-2017 * / // Dette program fungerer bedst i et friskluftrum med temperatur Temp: 20 ℃, Fugtighed: 65%, O2-koncentration 21%, og når værdien af Rl er 47K #definer RL 47 // Værdien af modstand RL er 47K ugyldig opsætning () // Kører kun en gang {Serial.begin (9600); // Initialiser seriel COM til visning af værdien} void loop () {float analog_value; flyde VRL; flyde Rs; flyde Ro; for (int test_cycle = 1; test_cycle <= 500; test_cycle ++) // Læs sensorens analoge output 200 gange {analog_value = analog_value + analogRead (A0); // tilføj værdierne for 200} analog_værdi = analog_værdi / 500.0; // Tag gennemsnitlig VRL = analog_værdi * (5.0 / 1023.0);// Konverter analog værdi til spænding // RS = ((Vc / VRL) -1) * RL er de formler, vi har fået fra databladet Rs = ((5.0 / VRL) -1) * RL; // RS / RO er 3,6, som vi opnåede fra grafen i databladet Ro = Rs / 3.6; Serial.print ("Ro at frisk luft ="); Serial.println (Ro); // Vis beregnet Ro-forsinkelse (1000); // forsinkelse på 1sek}
Bemærk: Værdien af Ro vil variere, lad sensoren forvarme mindst i 10 timer og brug derefter værdien af Ro.
Jeg konkluderede, at værdien af Ro var 30 KΩ for min sensor (når R L er 47 kΩ). Din kan variere lidt.
Mål værdien af R'er:
Nu hvor vi kender værdien af Ro, kan vi nemt beregne værdien af R'er ved hjælp af ovenstående to formler. Bemærk, at værdien af R'er, der blev beregnet tidligere, er for friskluftstilstand, og det vil ikke være den samme, når ammoniak er til stede i luften. Beregning af værdien af R'er er ikke et stort problem, som vi direkte kan tage os af i det endelige program.
Forholdet mellem Rs / Ro-forhold og PPM:
Nu hvor vi ved, hvordan vi måler værdien af Rs og Ro, ville vi være i stand til at finde dets forhold (Rs / Ro). Derefter kan vi bruge diagrammet (vist nedenfor) til at relatere til den tilsvarende værdi af PPM.
Selvom NH3-linjen (cyanfarve) ser ud til at være lineær, er den faktisk ikke lineær. Udseendet skyldes, at skalaen er delt ensartet med hensyn til udseende. Så relationen mellem Rs / Ro og PPM er faktisk logaritmisk, som kan repræsenteres af nedenstående ligning.
log (y) = m * log (x) + b hvor, y = forhold (Rs / Ro) x = PPM m = hældning af linjen b = skæringspunkt
For at finde værdierne m og b skal vi overveje to punkter (x1, y1) og (x2, y2) på vores gasledning. Her arbejder vi med ammoniak, så de to punkter, jeg har overvejet, er (40,1) og (100,0,8) som vist på billedet ovenfor (markeret som rødt) med rød markering.
m = / m = log (0,8 / 1) / log (100/40) m = -0,243
Tilsvarende for (b) lad os få midtpunktværdien (x, y) fra grafen, som er (70,0,75) som vist i billedet ovenfor (markeret med blåt)
b = log (y) - m * log (x) b = log (0,75) - (-0,243) * log (70) b = 0,323
Det er det nu, hvor vi har beregnet værdien af m og b, vi kan ligne værdien af (Rs / Ro) til PPM ved hjælp af nedenstående formel
PPM = 10 ^ {/ m}
Program til beregning af PPM ved hjælp af MQ-sensor:
Det komplette program til beregning af PPM ved hjælp af en MQ-sensor er angivet nedenfor. Få vigtige linjer forklares nedenfor.
Før vi fortsætter med programmet, skal vi indføre værdierne for belastningsmodstand (RL), hældning (m), skæring (b) og værdien af modstand i frisk luft (Ro). Proceduren for at opnå alle disse værdier er allerede forklaret, så lad os bare give dem ind nu
#define RL 47 // Værdien af modstand RL er 47K #define m -0.263 // Indtast beregnet hældning #define b 0.42 // Indtast beregnet skæringspunkt #definer Ro 30 // Indtast fundet Ro-værdi
Så læse spændingsfaldet over sensoren (VRL) og konvertere det til Spænding (0V til 5V), da det analoge read vil kun returnere værdier fra 0 til 1024.
VRL = analogRead (MQ_sensor) * (5.0 / 1023.0); // Mål spændingsfaldet og konverter til 0-5V
Nu, hvor værdien af VRL beregnes, kan du bruge formlen diskuteret ovenfor til at beregne værdien af Rs og også forholdet (Rs / Ro)
forhold = Rs / Ro; // find ratio Rs / Ro
Endelig kan vi beregne PPM med vores logaritmiske formel og vise den på vores serielle skærm som vist nedenfor
dobbelt ppm = pow (10, ((log10 (forhold) -b) / m)); // brug formlen til at beregne ppm Serial.print (ppm); // Vis ppm
Viser PPM-værdi på hardware med Arduino og MQ-137:
Nok af al teorien, lad os bygge et simpelt kredsløb med sensoren og LCD'et for at vise værdien af gas i PPM. Her er sensoren, jeg bruger, MQ137, der måler ammoniak, kredsløbsdiagrammet til min opsætning er vist nedenfor.
Tilslut din sensor og din LCD som vist i kredsløbsdiagrammet, og upload den kode, der er angivet i slutningen af programmet. Du skal ændre Ro-værdien som forklaret ovenfor. Foretag også ændringer i parameterværdier, hvis du bruger en anden modstand som RL bortset fra 4,7K.
Lad din opsætning være tændt i mindst 2 timer, før du foretager aflæsninger (48 timer anbefales for mere nøjagtige værdier). Denne tid kaldes opvarmningstiden, hvor sensoren varmer op. Herefter skal du kunne se værdien af PPM og den spænding, der vises på din LCD-skærm som vist nedenfor.
Nu for at sikre, om værdierne virkelig er relateret til tilstedeværelsen af ammoniak, lad os placere denne opsætning inde i en lukket beholder og sende ammoniakgas inde i den for at kontrollere, om værdierne stiger. Jeg har ikke en ordentlig PPM-måler med mig kalibrere den, og det ville være godt, hvis nogen med måler kunne teste denne opsætning og fortælle mig.
Du kan se videoen nedenfor for at kontrollere, hvordan målingerne varierede baseret på tilstedeværelsen af ammoniak. Håber du forstod konceptet og nød at lære det. Hvis du er i tvivl, skal du lade dem være i kommentarsektionen eller for mere detaljeret hjælp, brug forumet her.