- MQ-serie gassensoren
- Uw hardware voorbereiden:
- Aanpak om PPM te meten met MQ-gassensoren:
- De waarde van Ro bij schone lucht berekenen:
- Meet de waarde van Rs:
- Rs / Ro-verhouding relateren aan PPM:
- Programma om PPM te berekenen met behulp van MQ-sensor:
- PPM-waarde weergeven op hardware met Arduino en MQ-137:
Vanaf het industriële tijdperk hebben wij als mensheid ons snel ontwikkeld. Met elke vooruitgang vervuilen we ook ons milieu en verslechteren het uiteindelijk. Nu is de opwarming van de aarde een alarmerende bedreiging en zelfs de lucht die we inademen wordt kritiek. Het monitoren van de luchtkwaliteit begint dus ook aan belang te winnen. Dus in dit artikel zullen we leren hoe we elke MQ-serie gassensor met Arduino kunnen gebruiken en de output in PPM (parts per million) laten zien. PPM wordt ook uitgedrukt als milligram per liter (mg / L). Deze sensoren zijn algemeen verkrijgbaar en zijn ook betrouwbaar voor het meten van verschillende soorten gassen die hieronder worden weergegeven
MQ-serie gassensoren
- Kooldioxide (CO2): MG-811
- Koolmonoxide (CO): MQ-9
- Totaal vluchtige organische stoffen (TVOC's): CCS811
- Equivalent kooldioxide (eCO2): CCS811
- Metaaloxide (MOX): CCS811
- Ammoniak: MQ-137
- Luchtkwaliteit: MQ-135
- LPG, Alcohol, Rook: MQ2
We hebben MQ2 al gebruikt voor rookdetectie en MQ-135 voor het monitoringproject voor luchtkwaliteit. Hier ga ik de MQ-137 sensor van sainsmart gebruiken om ammoniak in ppm te meten. Met de sensor in de hand heb ik alle beschikbare tutorials doorgenomen en ontdekte dat er geen goede documentatie is over hoe het gas in ppm moet worden gemeten. De meeste tutorials behandelen ofwel alleen de analoge waarden of introduceren enkele constanten die niet betrouwbaar zijn voor het meten van alle soorten gas. Dus na lang online rondhangen, heb ik eindelijk ontdekt hoe ik deze MQ-serie gassensoren kan gebruiken om ppm te meten met Arduino. Ik leg dingen van onderaf uit zonder enige bibliotheken, zodat je dit artikel kunt gebruiken voor elke gassensor die bij je beschikbaar is.
Uw hardware voorbereiden:
De MQ-gassensoren kunnen als module worden gekocht of alleen als sensor. Als het uw doel is om alleen ppm te meten, kunt u de sensor het beste alleen kopen, aangezien de module alleen geschikt is voor het gebruik van de digitale pin. Dus als u de module al heeft aangeschaft, moet u een kleine hack uitvoeren die verder wordt besproken. Laten we er voorlopig van uitgaan dat u de sensor heeft gekocht. De pinout en aansluiting van de sensor wordt hieronder weergegeven
Zoals u kunt zien, hoeft u slechts het ene uiteinde van 'H' aan te sluiten op de voeding en het andere uiteinde van 'H' op aarde. Combineer dan beide A's en beide B's. Sluit de ene set aan op de voedingsspanning en de andere op uw analoge pin. De weerstand R L speelt een zeer belangrijke rol bij het laten werken van de sensor. Noteer dus welke waarde u gebruikt, een waarde van 47k wordt aanbevolen.
Als u al een module heeft gekocht, moet u uw PCB-sporen volgen om de waarde van uw R L op het bord te vinden. Grauonline heeft dit werk al voor ons gedaan en het schakelschema van de MQ-gassensorkaart wordt hieronder weergegeven.
Zoals je kunt zien, is de weerstand R L (R2) verbonden tussen de Aout-pin en de aarde, dus als je een module hebt, kan de waarde van R L worden gemeten door een multimeter in weerstandsmodus te gebruiken over Vout-pin en Vcc-pin van de module. In mijn sainsmart MQ-137 gassensor was de waarde van RL 1K en bevond zich hier zoals weergegeven in de onderstaande afbeelding.
Echter, de website beweert dat het voorziet in een variabele pot van R L dat is niet waar als je duidelijk kunt zien in het schema, de pot wordt gebruikt om de variabele spanning voor op-amp te stellen en heeft niets te maken met R L. We moeten de hierboven getoonde SMD-weerstand (1K) dus handmatig solderen en we moeten onze eigen weerstand over de grond- en Vout-pin gebruiken die als RL zal werken. De beste waarde voor RL is 47K, zoals voorgesteld door de datasheet, dus we gaan hetzelfde gebruiken.
Aanpak om PPM te meten met MQ-gassensoren:
Nu we de waarde van R L kennen, gaan we verder met het daadwerkelijk meten van ppm van deze sensoren. Zoals bij alle sensoren, is het gegevensblad de plaats om te beginnen. Het MQ-137-gegevensblad wordt hier gegeven, maar zorg ervoor dat u het juiste gegevensblad voor uw sensor vindt. Binnen het gegevensblad hebben we slechts één grafiek nodig die wordt uitgezet tegen (Rs / Ro) VS PPM, dit is degene die we nodig hebben voor onze berekeningen. Dus praat erover en bewaar het ergens bij de hand. Die voor mijn sensor wordt hieronder weergegeven.
Blijkt dat de MQ137-sensor NH3, C2H6O en zelfs CO kan meten. Maar hier ben ik alleen geïnteresseerd in de waarden van NH3. U kunt echter dezelfde methode gebruiken om ppm te berekenen voor elke gewenste sensor. Deze grafiek is voor ons de enige bron om de waarde van ppm te vinden en als we op de een of andere manier de verhouding van Rs / Ro (X-as) zouden kunnen berekenen, kunnen we deze grafiek gebruiken om de waarde van ppm (Y-as) te vinden. Om de waarde van Rs / Ro te vinden, moeten we de waarde van Rs en de waarde van Ro vinden. Waarbij Rs de sensorweerstand is bij gasconcentratie en Ro de sensorweerstand is in schoon meneer.
Ja… dit is het plan, laten we eens kijken hoe we hiermee weg kunnen komen…
De waarde van Ro bij schone lucht berekenen:
Merk op dat in de grafiek de waarde van Rs / Ro constant is voor lucht (dikke blauwe lijn), dus we kunnen dit in ons voordeel gebruiken en zeggen dat wanneer de sensor in frisse lucht werkt, de waarde van Rs / Ro 3,6 zal zijn, zie de afbeelding hieronder
Rs / Ro = 3,6
Uit het gegevensblad krijgen we ook een formule voor het berekenen van de waarde van Rs. De formule wordt hieronder weergegeven. Als je geïnteresseerd bent om te weten hoe deze formule is afgeleid, kun je jay con-systemen lezen, ik wil ze ook graag vermelden dat ze me hebben geholpen dit op te lossen.
In deze formule is de waarde van Vc onze voedingsspanning (+ 5V) en de waarde van R L is degene die we al hebben berekend (47K voor mijn sensor). Als we een klein Arduino-programma schrijven, kunnen we ook de waarde van V RL vinden en uiteindelijk de waarde van Rs berekenen. Ik heb hieronder een Arduino-programma gegeven dat de analoge spanning (V RL) van de sensor uitleest en de waarde van Rs berekent met behulp van deze formule en deze uiteindelijk weergeeft in de seriële monitor. Het programma wordt goed uitgelegd via het commentaargedeelte, dus ik sla de uitleg hier over om dit artikel kort te houden.
/ * * Programma om de waarde van R0 te meten voor een bekende RL bij frisse lucht * Programma door: B.Aswinth Raj * Website: www.circuitdigest.com * Datum: 28-12-2017 * / // Dit programma werkt het beste bij een frisse luchtkamer met temperatuur Temp: 20 ℃, Vochtigheid: 65%, O2-concentratie 21% en wanneer de waarde van Rl 47K is #define RL 47 // De waarde van weerstand RL is 47K void setup () // Werkt alleen eenmaal {Serial.begin (9600); // Initialiseer seriële COM voor het weergeven van de waarde} void loop () {float analog_value; zweven VRL; zweven Rs; drijven Ro; for (int test_cycle = 1; test_cycle <= 500; test_cycle ++) // Lees de analoge output van de sensor 200 keer {analog_value = analog_value + analogRead (A0); // voeg de waarden toe voor 200} analog_value = analog_value / 500.0; // Neem gemiddelde VRL = analog_value * (5.0 / 1023.0);// Converteer analoge waarde naar spanning // RS = ((Vc / VRL) -1) * RL zijn de formules die we hebben verkregen uit datasheet Rs = ((5.0 / VRL) -1) * RL; // RS / RO is 3,6 zoals we hebben verkregen uit de grafiek van gegevensblad Ro = Rs / 3.6; Serial.print ("Ro bij frisse lucht ="); Serial.println (Ro); // Berekende Ro-vertraging weergeven (1000); // vertraging van 1 sec}
Opmerking: De waarde van Ro zal variëren, laat de sensor minimaal 10 uur voorverwarmen en gebruik dan de waarde van Ro.
Ik concludeerde dat de waarde van Ro 30 KΩ is voor mijn sensor (als R L 47 kΩ is). De jouwe kan enigszins variëren.
Meet de waarde van Rs:
Nu we de waarde van Ro kennen, kunnen we de waarde van Rs gemakkelijk berekenen met behulp van de bovenstaande twee formules. Merk op dat de waarde van Rs die eerder werd berekend voor frisse lucht is en niet hetzelfde zal zijn wanneer ammoniak in de lucht aanwezig is. Het berekenen van de waarde van Rs is geen groot probleem waar we direct voor kunnen zorgen in het uiteindelijke programma.
Rs / Ro-verhouding relateren aan PPM:
Nu we weten hoe we de waarde van Rs en Ro moeten meten, kunnen we de verhouding (Rs / Ro) vinden. Vervolgens kunnen we de grafiek (hieronder weergegeven) gebruiken om te relateren aan de overeenkomstige waarde van PPM.
Hoewel de NH3-lijn (cyaankleur) lineair lijkt, is deze eigenlijk niet lineair. Het uiterlijk is omdat de schaal voor het uiterlijk ongelijkmatig is verdeeld. Dus de relatie tussen Rs / Ro en PPM is eigenlijk logaritmisch, wat kan worden weergegeven door de onderstaande vergelijking.
log (y) = m * log (x) + b waar, y = verhouding (Rs / Ro) x = PPM m = helling van de lijn b = snijpunt
Om de waarden van m en b te vinden, moeten we rekening houden met twee punten (x1, y1) en (x2, y2) op onze gasleiding. Hier werken we met ammoniak, dus de twee punten die ik heb overwogen zijn (40,1) en (100,0,8) zoals weergegeven in de afbeelding hierboven (gemarkeerd als rood) met rode markering.
m = / m = logboek (0,8 / 1) / logboek (100/40) m = -0,243
Evenzo voor (b) laten we de middelpuntwaarde (x, y) uit de grafiek halen die (70,0,75) is, zoals weergegeven in de bovenstaande afbeelding (blauw gemarkeerd)
b = logboek (y) - m * logboek (x) b = logboek (0,75) - (-0,243) * logboek (70) b = 0,323
Dat is het nu dat we de waarde van m en b hebben berekend, we kunnen de waarde van (Rs / Ro) gelijkstellen aan PPM met behulp van de onderstaande formule
PPM = 10 ^ {/ m}
Programma om PPM te berekenen met behulp van MQ-sensor:
Het volledige programma om PPM te berekenen met behulp van een MQ-sensor wordt hieronder gegeven. Enkele belangrijke regels worden hieronder uitgelegd.
Voordat we verder gaan met het programma, moeten we de waarden van belastingsweerstand (RL), helling (m), snijpunt (b) en de waarde van weerstand in frisse lucht (Ro) invoeren. De procedure om al deze waarden te verkrijgen is al uitgelegd, dus laten we ze nu gewoon invoeren
#define RL 47 // De waarde van weerstand RL is 47K #define m -0,263 // Voer berekende helling in #define b 0,42 // Voer berekend intercept in #define Ro 30 // Voer gevonden Ro-waarde in
Vervolgens leest de spanningsval over de sensor (VRL) en converteren naar spanning (0 V tot 5 V), aangezien de analoge read alleen waarden retourneren 0-1024.
VRL = analogRead (MQ_sensor) * (5.0 / 1023.0); // Meet de spanningsval en converteer naar 0-5V
Nu de waarde van VRL is berekend, kunt u de hierboven besproken formule gebruiken om de waarde van Rs te berekenen en ook de verhouding (Rs / Ro)
verhouding = Rs / Ro; // vind de verhouding Rs / Ro
Ten slotte kunnen we de PPM berekenen met onze logaritmische formule en deze weergeven op onze seriële monitor zoals hieronder weergegeven
dubbele ppm = pow (10, ((log10 (verhouding) -b) / m)); // gebruik formule om ppm Serial.print (ppm) te berekenen; // Toon ppm
PPM-waarde weergeven op hardware met Arduino en MQ-137:
Met voldoende theorie kunnen we een eenvoudig circuit bouwen met de sensor en het LCD-scherm om de waarde van gas in PPM weer te geven. Hier is de sensor die ik gebruik MQ137 die ammoniak meet, het schakelschema voor mijn opstelling wordt hieronder weergegeven.
Verbind uw sensor en uw LCD zoals weergegeven in het schakelschema en upload de code die aan het einde van het programma wordt gegeven. U moet de Ro-waarde wijzigen zoals hierboven uitgelegd. Breng ook de wijzigingen aan in parameterwaarden als u een andere weerstand gebruikt als RL anders dan 4.7K.
Laat uw set-up minimaal 2 uur onder spanning staan voordat u metingen uitvoert (48 uur wordt aanbevolen voor nauwkeurigere waarden). Deze tijd wordt de verwarmingstijd genoemd, waarin de sensor opwarmt. Hierna zou u de waarde van PPM en de spanning op uw LCD-scherm moeten kunnen zien, zoals hieronder weergegeven.
Laten we, om er zeker van te zijn dat de waarden echt verband houden met de aanwezigheid van ammoniak, deze opstelling in een gesloten container plaatsen en ammoniakgas erin sturen om te controleren of de waarden stijgen. Ik heb geen goede PPM-meter bij me om hem te kalibreren en het zou geweldig zijn als iemand met een meter deze opstelling zou kunnen testen en het me laten weten.
U kunt de onderstaande video bekijken om te zien hoe de metingen varieerden op basis van de aanwezigheid van ammoniak. Ik hoop dat je het concept hebt begrepen en het leuk vond om het te leren. Als je twijfels hebt, laat ze achter in het commentaargedeelte of gebruik het forum hier voor meer gedetailleerde hulp.