- Senzory plynu řady MQ
- Příprava hardwaru:
- Přístup k měření PPM ze senzorů plynu MQ:
- Výpočet hodnoty Ro na čistém vzduchu:
- Změřte hodnotu Rs:
- Poměr Rs / Ro s PPM:
- Program pro výpočet PPM pomocí senzoru MQ:
- Zobrazení hodnoty PPM na hardwaru s Arduino a MQ-137:
Již od doby průmyslového věku jsme se lidstvo rychle rozvíjelo. S každým pokrokem také znečišťujeme naše životní prostředí a nakonec ho degradujeme. Nyní je globální oteplování alarmující hrozbou a dokonce i vzduch, který dýcháme, se stává kritickým. Monitorování kvality ovzduší tedy začalo nabývat na důležitosti. V tomto článku se tedy naučíme, jak používat jakýkoli plynový senzor řady MQ s Arduinem a zobrazovat výstup v PPM (části na milion). PPM se také vyjadřuje jako miligramy na litr (mg / l). Tyto senzory jsou běžně dostupné a jsou také spolehlivé pro měření různých druhů plynů uvedených níže
Senzory plynu řady MQ
- Oxid uhličitý (CO2): MG-811
- Oxid uhelnatý (CO): MQ-9
- Celkový obsah těkavých organických sloučenin (TVOC): CCS811
- Ekvivalentní oxid uhličitý (eCO2): CCS811
- Oxid kovu (MOX): CCS811
- Amoniak: MQ-137
- Kvalita ovzduší: MQ-135
- LPG, alkohol, kouř: MQ2
Již jsme použili MQ2 pro snímání kouře a MQ-135 pro projekt monitorování kvality ovzduší. Tady budu používat senzor MQ-137 od sainsmart k měření amoniaku v ppm. S čidlem v ruce jsem prošel všechny dostupné výukové programy a zjistil, že neexistuje žádná řádná dokumentace o tom, jak měřit plyn v ppm. Většina výukových programů se zabývá pouze analogovými hodnotami nebo zavádí některé konstanty, které nejsou spolehlivé pro měření všech typů plynů. Takže po dlouhém hraní online jsem konečně zjistil, jak používat tyto plynové senzory řady MQ k měření ppm pomocí Arduina. Vysvětluji věci zdola bez knihoven, takže tento článek můžete použít pro jakýkoli plynový senzor, který máte k dispozici.
Příprava hardwaru:
Senzory plynu MQ lze zakoupit buď jako modul, nebo jen jako senzor samotný. Pokud je vaším cílem měřit pouze ppm, je nejlepší koupit snímač sám, protože modul je vhodný pouze pro použití digitálního kolíku. Pokud jste si tedy modul již zakoupili, musíte provést malý hack, o kterém budeme dále hovořit. Prozatím předpokládejme, že jste zakoupili senzor. Pinout a připojení senzoru je uvedeno níže
Jak vidíte, stačí připojit jeden konec 'H' k napájení a druhý konec 'H' k zemi. Pak zkombinujte obě A a obě B. Připojte jednu sadu k napájecímu napětí a druhou k analogovému kolíku. Rezistor R L hraje velmi důležitou roli při fungování senzoru. Takže si poznamenejte, jakou hodnotu používáte, doporučuje se hodnota 47k.
Pokud jste si již zakoupili modul, pak byste měli sledovat své PCB stopy najít hodnotu svého R L na desce. Grauonline tuto práci pro nás již provedl a schéma zapojení desky senzoru plynu MQ je uvedeno níže.
Jak vidíte, odpor R L (R2) je připojen mezi pin Aout a zem, takže pokud máte modul, lze hodnotu R L měřit pomocí multimetru v režimu odporu přes pin Vout a Vcc modul. V mém plynovém senzoru sainsmart MQ-137 byla hodnota RL 1K a byla zde umístěna, jak je znázorněno na obrázku níže.
Nicméně tvrzení webové stránky, které poskytuje variabilní hrnec R L, která není pravda, jak můžete jasně vidět ve schématu, je bank se používá k nastavení proměnné napětí pro op-amp a nemá nic společného s R l. Takže musíme ručně pájet SMD rezistor (1K) zobrazený výše a musíme použít náš vlastní rezistor přes pin uzemnění a Vout, který bude fungovat jako RL. Nejlepší hodnota pro RL bude 47 kB, jak navrhuje datový list, proto budeme používat to samé.
Přístup k měření PPM ze senzorů plynu MQ:
Nyní, když víme, že hodnota R L umožňuje postupovat, jak skutečně měřit ppm z těchto senzorů. Stejně jako všechny senzory je výchozím bodem jeho datový list. Zde je uveden datový list MQ-137, ale ujistěte se, že najdete správný datový list pro váš senzor. V datovém listu potřebujeme pouze jeden graf, který bude vynesen proti (Rs / Ro) VS PPM, to je ten, který potřebujeme pro naše výpočty. Takže si to připravte a mějte to po ruce. Ten pro můj senzor je zobrazen níže.
Ukázalo se, že senzor MQ137 může měřit NH3, C2H6O a dokonce i CO. Ale tady mě zajímají pouze hodnoty NH3. Stejnou metodu však můžete použít k výpočtu ppm pro jakýkoli snímač, který se vám líbí. Tento graf je pro nás jediným zdrojem pro zjištění hodnoty ppm a pokud bychom mohli nějak vypočítat poměr Rs / Ro (osa X), můžeme pomocí tohoto grafu najít hodnotu ppm (osa Y). Chcete-li najít hodnotu Rs / Ro, musíme najít hodnotu Rs a hodnotu Ro. Kde Rs je odpor senzoru při koncentraci plynu a Ro je odpor senzoru v čistém siru.
Ano… to je plán, uvidíme, jak se z toho můžeme dostat…
Výpočet hodnoty Ro na čistém vzduchu:
Všimněte si, že v grafu je hodnota Rs / Ro pro vzduch konstantní (silná modrá čára), takže ji můžeme využít ve svůj prospěch a říci, že když snímač pracuje na čerstvém vzduchu, hodnota Rs / Ro bude 3,6 viz obrázek níže
Rs / Ro = 3,6
Z datového listu také získáme vzorec pro výpočet hodnoty Rs. Vzorec je uveden níže. Pokud vás zajímá, jak je tento vzorec odvozen, můžete si je přečíst v systémech Jay Con, rád bych jim také připočítal pomoc při řešení tohoto problému.
V tomto vzorci je hodnota Vc naše napájecí napětí (+ 5 V) a hodnota R L je ta, kterou jsme již vypočítali (47 K pro můj senzor). Pokud napíšeme malý program Arduino, mohli bychom také najít hodnotu V RL a nakonec vypočítat hodnotu Rs. Níže jsem dal program Arduino, který čte analogové napětí (V RL) snímače a vypočítává hodnotu R pomocí tohoto vzorce a nakonec jej zobrazuje na sériovém monitoru. Program je dobře vysvětlen v sekci komentářů, takže zde přeskakuji jeho vysvětlení, aby byl tento článek krátký.
/ * * Program pro měření hodnoty R0 pro známou RL na čerstvém vzduchu * Program: B.Aswinth Raj * Web: www.circuitdigest.com * Datum: 28-12-2017 * / // Tento program funguje nejlépe na čerstvém vzduchu v místnosti s teplotou Teplota: 20 ° C, Vlhkost: 65%, koncentrace O2 21% a když je hodnota Rl 47K #define RL 47 // Hodnota rezistoru RL je 47K neplatné nastavení () // Běží pouze jednou {Serial.begin (9600); // Inicializace sériového COM pro zobrazení hodnoty} void loop () {float analog_value; float VRL; float Rs; float Ro; for (int test_cycle = 1; test_cycle <= 500; test_cycle ++) // Přečíst analogový výstup senzoru 200krát {analog_value = analog_value + analogRead (A0); // přidat hodnoty pro 200} analog_value = analog_value / 500.0; // Vezměte průměrnou hodnotu VRL = analog_value * (5,0 / 1023,0);// Převod analogové hodnoty na napětí // RS = ((Vc / VRL) -1) * RL jsou vzorce, které jsme získali z datového listu Rs = ((5.0 / VRL) -1) * RL; // RS / RO je 3,6, jak jsme získali z grafu datového listu Ro = Rs / 3.6; Serial.print ("Ro na čerstvém vzduchu ="); Serial.println (Ro); // Zobrazit vypočítané zpoždění Ro (1000); // zpoždění 1 s}
Poznámka: Hodnota Ro se bude lišit, nechte čidlo předehřát alespoň na 10 hodin a poté použijte hodnotu Ro.
Došel jsem k závěru, že hodnota Ro je 30 KΩ pro můj senzor (když R L je 47 kΩ). Vaše se může mírně lišit.
Změřte hodnotu Rs:
Nyní, když známe hodnotu Ro, můžeme snadno vypočítat hodnotu R pomocí výše uvedených dvou vzorců. Všimněte si, že hodnota R, která byla vypočítána dříve, je pro čerstvý vzduch a nebude stejná, pokud je ve vzduchu přítomen amoniak. Výpočet hodnoty R není velký problém, o který se můžeme přímo postarat v konečném programu.
Poměr Rs / Ro s PPM:
Nyní, když víme, jak měřit hodnotu Rs a Ro, bychom byli schopni najít její poměr (Rs / Ro). Potom můžeme použít graf (zobrazený níže) k odpovídající hodnotě PPM.
Přestože se čára NH3 (azurová barva) jeví jako lineární, ve skutečnosti není lineární. Vzhled je způsoben tím, že měřítko je pro vzhled jednotně rozděleno. Takže vztah mezi Rs / Ro a PPM je ve skutečnosti logaritmický, což lze vyjádřit následující rovnicí.
log (y) = m * log (x) + b kde, y = poměr (Rs / Ro) x = PPM m = sklon přímky b = průsečík
Abychom našli hodnoty mab, musíme vzít v úvahu dva body (x1, y1) a (x2, y2) na našem plynovodu. Zde pracujeme s amoniakem, takže dva body, které jsem zvažoval, jsou (40,1) a (100,0,8), jak je znázorněno na obrázku výše (označené červeně) s červeným označením.
m = / m = log (0,8 / 1) / log (100/40) m = -0,243
Podobně pro (b) dostaneme hodnotu středu (x, y) z grafu, který je (70,0,75), jak je znázorněno na obrázku výše (označeno modře)
b = log (y) - m * log (x) b = log (0,75) - (-0,243) * log (70) b = 0,323
To je vše, když jsme vypočítali hodnotu mab, můžeme hodnotu (Rs / Ro) přirovnat k PPM pomocí níže uvedeného vzorce
PPM = 10 ^ {/ m}
Program pro výpočet PPM pomocí senzoru MQ:
Kompletní program pro výpočet ppm za použití snímače MQ je uveden níže. Níže je vysvětleno několik důležitých řádků.
Před pokračováním v programu musíme zadat hodnoty zátěžového odporu (RL), sklonu (m), Intercept (b) a hodnoty odporu na čerstvém vzduchu (Ro). Postup získání všech těchto hodnot již byl vysvětlen, takže je pojďme nyní doplnit
#define RL 47 // Hodnota rezistoru RL je 47K #define m -0,263 // Zadejte vypočítaný sklon #define b 0,42 // Zadejte vypočítaný průsečík #define Ro 30 // Zadejte nalezenou hodnotu Ro
Poté načtěte pokles napětí na snímači (VRL) a převeďte jej na napětí (0 V až 5 V), protože analogové čtení vrátí pouze hodnoty od 0 do 1024.
VRL = analogRead (MQ_sensor) * (5,0 / 1023,0); // Změřte pokles napětí a převeďte na 0-5V
Nyní, když se vypočítá hodnota VRL, můžete použít vzorec diskutovaný výše k výpočtu hodnoty R a také poměru (Rs / Ro)
poměr = Rs / Ro; // najít poměr Rs / Ro
Nakonec můžeme vypočítat PPM pomocí našeho logaritmického vzorce a zobrazit jej na našem sériovém monitoru, jak je znázorněno níže
dvojitý ppm = prášek (10, ((logio (poměr) -b) / m)); // použijte vzorec pro výpočet ppm Serial.print (ppm); // Zobrazení ppm
Zobrazení hodnoty PPM na hardwaru s Arduino a MQ-137:
Dost teorie, pojďme sestavit jednoduchý obvod se senzorem a LCD pro zobrazení hodnoty plynu v PPM. Zde je snímač, který používám, MQ137, který měří amoniak, schéma zapojení pro mé nastavení je uvedeno níže.
Připojte svůj snímač a LCD, jak je znázorněno v obvodovém diagramu, a nahrajte kód uvedený na konci programu. Musíte upravit hodnotu Ro, jak je vysvětleno výše. Změny hodnot parametrů také proveďte, pokud používáte jakýkoli jiný rezistor jako RL jiný než 4,7 kB.
Nechte nastavení zapnuté alespoň 2 hodiny, než začnete odečítat hodnoty (pro přesnější hodnoty se doporučuje 48 hodin). Tato doba se nazývá doba ohřevu, během níž se senzor zahřívá. Poté byste měli vidět hodnotu PPM a napětí zobrazené na obrazovce LCD, jak je uvedeno níže.
Nyní, abychom se ujistili, že hodnoty skutečně souvisejí s přítomností amoniaku, umístěme toto nastavení do uzavřené nádoby a pošleme do ní plynný amoniak, abychom zkontrolovali, zda se hodnoty zvyšují. Nemám u sebe řádný měřič PPM, který by mě kalibroval a bylo by skvělé, kdyby někdo s měřičem mohl toto nastavení vyzkoušet a dejte mi vědět.
Můžete sledovat video níže a zkontrolovat, jak se hodnoty lišily na základě přítomnosti amoniaku. Doufám, že jste koncept pochopili a rádi jste se ho učili. Máte-li jakékoli pochybnosti, nechte je v sekci komentářů nebo pro podrobnější nápovědu použijte fórum zde.