- MQ-seriens gassensorer
- Förbereda din hårdvara:
- Tillvägagångssätt för att mäta PPM från MQ-gassensorer:
- Beräkning av Ro-värdet i ren luft:
- Mät värdet på R:
- Relaterar Rs / Ro-förhållande med PPM:
- Program för att beräkna PPM med MQ-sensor:
- Visar PPM-värde på hårdvara med Arduino och MQ-137:
Redan från den industriella tidsåldern har vi mänskligheten utvecklats snabbt. Med varje framsteg förorenar vi också vår miljö och så småningom förnedrar den. Nu är den globala uppvärmningen ett alarmerande hot och även luften vi andas blir kritisk. Så luftkvalitetsövervakning har också börjat få betydelse. Så i den här artikeln kommer vi att lära oss hur man använder vilken gassensor som helst i MQ-serien med Arduino och visar produktionen i PPM (delar per miljon). PPM uttrycks också som milligram per liter (mg / L). Dessa sensorer är allmänt tillgängliga och är också pålitliga för att mäta olika typer av gas som visas nedan
MQ-seriens gassensorer
- Koldioxid (CO2): MG-811
- Kolmonoxid (CO): MQ-9
- Totala flyktiga organiska föreningar (TVOC): CCS811
- Motsvarande koldioxid (eCO2): CCS811
- Metalloxid (MOX): CCS811
- Ammoniak: MQ-137
- Luftkvalitet: MQ-135
- LPG, alkohol, rök: MQ2
Vi har redan använt MQ2 för rökavkänning och MQ-135 för projekt för övervakning av luftkvalitet. Här kommer jag att använda MQ-137-sensorn från sainsmart för att mäta ammoniak i ppm. Med sensorn i handen gick jag igenom alla tillgängliga handledning och fann att det inte finns någon korrekt dokumentation om hur man mäter gasen i ppm. De flesta handledning handlar antingen endast om de analoga värdena eller introducerar några konstanter som inte är tillförlitliga för mätning av alla typer av gas. Så efter att ha lurat online länge hittade jag äntligen hur man använder dessa MQ-seriens gassensorer för att mäta ppm med Arduino. Jag förklarar saker från botten utan några bibliotek så att du kan använda den här artikeln för alla gassensorer som finns tillgängliga för dig.
Förbereda din hårdvara:
MQ-gassensorerna kan antingen köpas som en modul eller bara som en sensor ensam. Om ditt syfte är att bara mäta ppm är det bäst att köpa sensorn ensam eftersom modulen är bra för att bara använda den digitala stiftet. Så om du redan har köpt modulen måste du utföra ett litet hack som kommer att diskuteras vidare. Låt oss för närvarande anta att du har köpt sensorn. Pinout och anslutning av sensorn visas nedan
Som du kan se måste du bara ansluta ena änden av 'H' till matningen och den andra änden av 'H' till marken. Kombinera sedan både A och båda B. Anslut en uppsättning för att mata spänningen och den andra till din analoga stift. Motståndet R L spelar en mycket viktig roll för att få sensorn att fungera. Så notera vilket värde du använder, ett värde på 47k rekommenderas.
Om du redan har köpt en modul bör du spåra dina PCB-spår för att hitta värdet på din R L i kortet. Grauonline har redan gjort detta för oss och kretsschemat för MQ-gassensorkortet ges nedan.
Som du kan se är motståndet R L (R2) anslutet mellan Aout-stiftet och marken, så om du har en modul kan värdet på R L mätas med hjälp av en multimeter i motståndsläge över Vout-stift och Vcc-stift på modulen. I min sainsmart MQ-137 gassensor var värdet på RL 1K och var beläget här som bilden visar nedan.
Men webbplatsen hävdar att det ger en variabel kruka med R L som inte är sant som du tydligt kan se i kopplingsschemat är potten används för att ange variabel spänning för op-förstärkare och har ingenting att göra med R L. Så vi måste manuellt lödda SMD-motståndet (1K) som visas ovan och vi måste använda vårt eget motstånd över marken och Vout-stiftet som fungerar som RL. Det bästa värdet för RL är 47K som föreslås av databladet, därför kommer vi att använda detsamma.
Tillvägagångssätt för att mäta PPM från MQ-gassensorer:
Nu när vi vet att värdet på R L kan fortsätta med hur man faktiskt mäter ppm från dessa sensorer. Som alla sensorer är platsen att börja dess datablad. MQ-137-databladet ges här men se till att du hittar rätt datablad för din sensor. Inne i databladet behöver vi bara ett diagram som kommer att plottas mot (Rs / Ro) VS PPM, det är det vi behöver för våra beräkningar. Så gab det och håll det någonstans till hands. Den för min sensor visas nedan.
Visar sig att MQ137-sensorn kan mäta NH3, C2H6O och till och med CO. Men här är jag bara intresserad av värdena för NH3. Du kan dock använda samma metod för att beräkna ppm för vilken sensor du vill. Den här grafen är den enda källan för oss att hitta värdet av ppm och om vi på något sätt kunde beräkna rationen av Rs / Ro (X-axel) kan vi använda denna graf för att hitta värdet av ppm (Y-axeln). För att hitta värdet på Rs / Ro måste vi hitta värdet på Rs och värdet på Ro. Där Rs är sensorns motstånd vid gaskoncentration och Ro är sensorns motstånd i ren herr.
Yess… det här är planen, låt oss se hur vi kan komma undan med detta….
Beräkning av Ro-värdet i ren luft:
Observera att i grafvärdet för Rs / Ro är konstant för luft (tjock blå linje) så att vi kan använda detta till vår fördel och säga att när sensorn arbetar i frisk luft kommer värdet av Rs / Ro att vara 3,6 hänvisa bilden Nedan
Rs / Ro = 3,6
Från databladet får vi också ha en formel för att beräkna värdet på Rs. Formeln visas nedan. Om du är intresserad av att veta hur denna formel är härledd kan du läsa igenom jay con-system, jag vill också berömma dem för att hjälpa mig att reda ut det här.
I denna formel är värdet på Vc vår matningsspänning (+ 5V) och värdet på R L är det som vi redan har beräknat (47K för min sensor). Om vi skriver ett litet Arduino-program kan vi också hitta värdet på V RL och slutligen beräkna värdet på Rs. Jag har gett ett Arduino-program nedan som läser sensorns analoga spänning (V RL) och beräknar värdet på R med den här formeln och slutligen visar den i seriell bildskärm. Programmet förklaras väl genom kommentarsektionen så jag hoppar över dess förklaring här för att hålla den här artikeln kort.
/ * * Program för att mäta värdet på R0 för en känd RL vid friskluft * Program av: B.Aswinth Raj * Webbplats: www.circuitdigest.com * Datum: 28-12-2017 * / // Detta program fungerar bäst i ett friskluftrum med temperatur Temp: 20 ℃, Luftfuktighet: 65%, O2-koncentration 21% och när värdet på Rl är 47K # definiera RL 47 // Värdet på motståndet RL är 47K ogiltig installation () // Körs en gång {Serial.begin (9600); // Initiera seriell COM för att visa värdet} void loop () {float analog_value; flyta VRL; flyta Rs; flyta Ro; för (int test_cykel = 1; test_cykel <= 500; test_cykel ++) // Läs sensorns analoga utgång 200 gånger {analog_value = analog_value + analogRead (A0); // lägg till värdena för 200} analog_value = analog_value / 500.0; // Ta genomsnittligt VRL = analog_värde * (5.0 / 1023.0);// Konvertera analogt värde till spänning // RS = ((Vc / VRL) -1) * RL är formlerna vi fick från datablad Rs = ((5.0 / VRL) -1) * RL; // RS / RO är 3,6 som vi fick från grafen i databladet Ro = Rs / 3.6; Serial.print ("Ro at frisk luft ="); Serial.println (Ro); // Visa beräknad Ro-fördröjning (1000); // fördröjning på 1sek}
Obs: Ro-värdet kommer att variera, låt sensorn förvärma åtminstone i 10 timmar och använd sedan Ro-värdet.
Jag drog slutsatsen att Ro är 30 KΩ för min sensor (när R L är 47 kΩ). Din kan variera något.
Mät värdet på R:
Nu när vi känner till värdet på Ro kan vi enkelt beräkna värdet på R med de två ovanstående formlerna. Observera att värdet på R som beräknats tidigare är för friskluft och det kommer inte att vara detsamma när ammoniak finns i luften. Att beräkna värdet på R är inte ett stort problem som vi direkt kan ta hand om i det slutliga programmet.
Relaterar Rs / Ro-förhållande med PPM:
Nu när vi vet hur man mäter värdet på Rs och Ro skulle vi kunna hitta dess förhållande (Rs / Ro). Sedan kan vi använda diagrammet (visas nedan) för att relatera till motsvarande värde på PPM.
Även om NH3-linjen (cyanfärg) verkar vara linjär är den faktiskt inte linjär. Utseendet beror på att skalan delas oenhetligt för utseende. Så relationen mellan Rs / Ro och PPM är faktiskt logaritmisk som kan representeras av nedanstående ekvation.
log (y) = m * log (x) + b där, y = förhållande (Rs / Ro) x = PPM m = linjens lutning b = skärningspunkt
För att hitta värdena m och b måste vi ta hänsyn till två punkter (x1, y1) och (x2, y2) på vår gasledning. Här arbetar vi med ammoniak så de två punkterna jag har beaktat är (40,1) och (100,0,8) som visas på bilden ovan (markerad som röd) med röd markering.
m = / m = log (0,8 / 1) / log (100/40) m = -0,243
På samma sätt för (b) ska vi få mittpunktvärdet (x, y) från diagrammet som är (70,0,75) som visas i bilden ovan (markerad i blått)
b = log (y) - m * log (x) b = log (0,75) - (-0,243) * log (70) b = 0,323
Det är det nu när vi har beräknat värdet på m och b kan vi jämföra värdet av (Rs / Ro) till PPM med formeln nedan
PPM = 10 ^ {/ m}
Program för att beräkna PPM med MQ-sensor:
Det fullständiga programmet för att beräkna PPM med hjälp av en MQ-sensor ges nedan. Några viktiga rader förklaras nedan.
Innan vi fortsätter med programmet måste vi mata in värdena för lastmotstånd (RL), lutning (m), avlyssning (b) och värdet av motstånd i frisk luft (Ro). Förfarandet för att erhålla alla dessa värden har redan förklarats så låt oss bara mata in dem nu
#define RL 47 // Värdet på motståndet RL är 47K #define m -0.263 // Ange beräknat lutning #define b 0.42 // Ange beräknad avlyssning #define Ro 30 // Ange hittat Ro-värde
Sedan läsa spänningsfallet över sensorn (VRL) och konvertera det till spänning (0 V till 5 V) sedan den analoga läsning kommer bara tillbaka värden 0-1024.
VRL = analogRead (MQ_sensor) * (5.0 / 1023.0); // Mät spänningsfallet och konvertera till 0-5V
Nu när VRL-värdet beräknas kan du använda formeln som diskuterats ovan för att beräkna värdet på Rs och även förhållandet (Rs / Ro)
förhållande = Rs / Ro; // hitta förhållande Rs / Ro
Slutligen kan vi beräkna PPM med vår logaritmiska formel och visa den på vår seriella bildskärm enligt nedan
dubbel ppm = pow (10, ((log10 (förhållande) -b) / m)); // använd formel för att beräkna ppm Serial.print (ppm); // Visa ppm
Visar PPM-värde på hårdvara med Arduino och MQ-137:
Tillräckligt med all teori låt oss bygga en enkel krets med sensorn och LCD-skärmen för att visa värdet på gas i PPM. Här är sensorn jag använder MQ137 som mäter ammoniak, kretsschemat för min inställning visas nedan.
Anslut din sensor och din LCD som visas i kretsschemat och ladda upp koden som ges i slutet av programmet. Du måste ändra Ro-värdet enligt förklaringen ovan. Gör också ändringarna i parametervärden om du använder något annat motstånd som RL än 4.7K.
Låt din installation vara påslagen i minst två timmar innan du gör några avläsningar (48 timmar rekommenderas för mer exakta värden). Denna tid kallas uppvärmningstiden, under vilken sensorn värms upp. Efter detta bör du kunna se värdet på PPM och spänningen som visas på LCD-skärmen enligt nedan.
Nu för att säkerställa om värdena verkligen är relaterade till närvaron av ammoniak, låt oss placera denna installation i en sluten behållare och skicka ammoniakgas inuti den för att kontrollera om värdena ökar. Jag har inte en ordentlig PPM-mätare med mig att kalibrera den och det skulle vara jättebra om någon med mätaren kunde testa denna inställning och meddela mig.
Du kan titta på videon nedan för att kontrollera hur avläsningarna varierade baserat på närvaron av ammoniak. Hoppas att du förstod konceptet och tyckte om att lära dig det. Om du är osäker, lämna dem i kommentarsektionen eller för mer detaljerad hjälp använd forumet här.