- Senzori de gaz din seria MQ
- Pregătirea hardware-ului:
- Abordare pentru măsurarea PPM de la senzorii de gaz MQ:
- Calculul valorii Ro la aer curat:
- Măsurați valoarea lui Rs:
- Raportarea raportului RS / Ro cu PPM:
- Program pentru a calcula PPM folosind senzorul MQ:
- Se afișează valoarea PPM pe hardware cu Arduino și MQ-137:
Încă din epoca industrială, noi, omenirea, ne-am dezvoltat rapid. Cu fiecare progres, ne poluăm și mediul și, în cele din urmă, îl degradăm. Acum încălzirea globală este o amenințare alarmantă și chiar și aerul pe care îl respirăm devine critic. Așadar, monitorizarea calității aerului a început să capete și ea importanță. Deci, în acest articol vom învăța cum să folosim orice senzor de gaz din seria MQ cu Arduino și să arătăm ieșirea în PPM (părți pe milion). PPM este, de asemenea, exprimat ca miligrame pe litru (mg / L). Acești senzori sunt disponibili în mod obișnuit și sunt, de asemenea, fiabili pentru măsurarea diferitelor tipuri de gaz prezentate mai jos
Senzori de gaz din seria MQ
- Dioxid de carbon (CO2): MG-811
- Monoxid de carbon (CO): MQ-9
- Compuși organici volatili totali (TVOC): CCS811
- Dioxid de carbon echivalent (eCO2): CCS811
- Oxid metalic (MOX): CCS811
- Amoniac: MQ-137
- Calitatea aerului: MQ-135
- GPL, alcool, fum: MQ2
Am folosit deja MQ2 pentru detectarea fumului și MQ-135 pentru proiectul de monitorizare a calității aerului. Aici voi folosi senzorul MQ-137 de la sainsmart pentru a măsura amoniacul în ppm. Cu senzorul în mână, am parcurs toate tutorialele disponibile și am constatat că nu există nicio documentație adecvată cu privire la modul de măsurare a gazului în ppm. Cele mai multe tutoriale fie se ocupă doar de valorile analogice, fie introduc anumite constante care nu sunt fiabile pentru măsurarea tuturor tipurilor de gaz. Așadar, după ce am jucat mult timp online, am găsit în sfârșit cum să folosesc acești senzori de gaz din seria MQ pentru a măsura ppm folosind Arduino. Vă explic lucrurile de jos fără biblioteci, astfel încât să puteți utiliza acest articol pentru orice senzor de gaz disponibil la dumneavoastră.
Pregătirea hardware-ului:
Senzorii de gaz MQ pot fi achiziționați fie ca modul, fie doar ca senzor. Dacă scopul dvs. este să măsurați doar ppm, atunci este mai bine să cumpărați senzorul singur, deoarece modulul este bun doar pentru utilizarea pinului digital. Deci, dacă ați cumpărat deja modulul, atunci trebuie să efectuați un mic hack care va fi discutat în continuare. Pentru moment, să presupunem că ați achiziționat senzorul. Pinout-ul și conexiunea senzorului sunt prezentate mai jos
După cum puteți vedea, trebuie doar să conectați un capăt al „H” la alimentare și celălalt capăt al „H” la masă. Apoi combinați atât A cât și ambele B. Conectați un set pentru a alimenta tensiunea și celălalt la pinul analogic. Rezistorul R L joacă un rol foarte important în funcționarea senzorului. Deci, notați valoarea pe care o utilizați, se recomandă o valoare de 47k.
Dacă ați achiziționat deja un modul, atunci ar trebui să vă urmăriți urmele PCB pentru a găsi valoarea R L pe placă. Grauonline a făcut deja acest lucru pentru noi, iar schema circuitului plăcii senzorului de gaz MQ este prezentată mai jos.
După cum puteți vedea, rezistorul R L (R2) este conectat între pinul Aout și masă, deci dacă aveți un modul, valoarea lui R L poate fi măsurată utilizând un multimetru în modul de rezistență între pinul Vout și pinul Vcc al modulul. În senzorul de gaz sainsmart MQ-137, valoarea RL a fost de 1K și a fost localizată aici, așa cum se arată în imaginea de mai jos.
Cu toate acestea, cererile de site - ul pe care le oferă o oală variabilă R L, care nu este adevărat, după cum puteți vedea în diagrama de circuit în mod clar, potul este folosit pentru a seta tensiunea variabilă pentru op-AMP și nu are nimic de- a face cu R L. Așadar, trebuie să lipim manual rezistorul SMD (1K) prezentat mai sus și trebuie să folosim propriul nostru rezistor pe pinul Ground și Vout, care va acționa ca RL. Cea mai bună valoare pentru RL va fi de 47K așa cum sugerează foaia tehnică, prin urmare vom folosi aceeași.
Abordare pentru măsurarea PPM de la senzorii de gaz MQ:
Acum, că știm valoarea lui R L, putem continua să măsurăm ppm de la acești senzori. La fel ca toți senzorii, locul de pornire este fișa sa tehnică. Foaia de date MQ-137 este prezentată aici, dar asigurați-vă că găsiți foaia de date corectă pentru senzorul dvs. În cadrul fișei tehnice avem nevoie de un singur grafic care va fi reprezentat grafic (Rs / Ro) VS PPM, acesta este cel de care avem nevoie pentru calculele noastre. Așa că gab și păstrați-l undeva la îndemână. Cel pentru senzorul meu este prezentat mai jos.
Se pare că senzorul MQ137 poate măsura NH3, C2H6O și chiar CO. Dar, aici mă interesează doar valorile NH3. Cu toate acestea, puteți utiliza aceeași metodă pentru a calcula ppm pentru orice senzor doriți. Acest grafic este singura sursă pentru noi de a găsi valoarea ppm și dacă am putea cumva să calculăm rația Rs / Ro (axa X) putem folosi acest grafic pentru a găsi valoarea ppm (axa Y). Pentru a găsi valoarea lui Rs / Ro, trebuie să găsim valoarea lui Rs și valoarea lui Ro. Unde Rs este rezistența senzorului la concentrația gazului și Ro este rezistența senzorului în domnul curat.
Da… acesta este planul să vedem cum putem scăpa de asta….
Calculul valorii Ro la aer curat:
Rețineți că în grafic valoarea Rs / Ro este constantă pentru aer (linia albastră groasă), așa că putem folosi acest lucru în avantajul nostru și spunem că atunci când senzorul funcționează în aer proaspăt, valoarea Rs / Ro va fi de 3,6. de mai jos
Rs / Ro = 3,6
Din foaia de date vom obține, de asemenea, o formulă pentru calcularea valorii lui Rs. Formula este prezentată mai jos. Dacă sunteți interesat să știți cum este derivată această formulă, puteți citi prin sistemele Jay Con, aș dori, de asemenea, să le cred că m-au ajutat să rezolv acest lucru.
În această formulă, valoarea lui Vc este tensiunea noastră de alimentare (+ 5V), iar valoarea lui R L este cea pe care am calculat-o deja (47K pentru senzorul meu). Dacă scriem un mic program Arduino, am putea găsi și valoarea lui V RL și, în final, vom calcula valoarea lui Rs. Am dat mai jos un program Arduino care citește tensiunea analogică (V RL) a senzorului și calculează valoarea lui R folosind această formulă și, în cele din urmă, îl afișează în monitorul serial. Programul este bine explicat prin secțiunea de comentarii, așa că omit explicația acestuia pentru a menține acest articol scurt.
/ * * Program de măsurare a valorii R0 pentru un RL cunoscut în condiții de aer proaspăt * Program de: B.Aswinth Raj * Website: www.circuitdigest.com * Data: 28-12-2017 * / // Acest program funcționează cel mai bine într-o cameră de aer proaspăt cu temperatură Temp: 20 ℃, Umiditate: 65%, concentrație de O2 21% și când valoarea Rl este de 47K #define RL 47 // Valoarea rezistorului RL este de 47K setare nulă o dată {Serial.begin (9600); // Inițializați COM serial pentru afișarea valorii} void loop () {float analog_value; plutitor VRL; plutitor Rs; pluteste Ro; for (int test_cycle = 1; test_cycle <= 500; test_cycle ++) // Citiți ieșirea analogică a senzorului de 200 de ori {analog_value = analog_value + analogRead (A0); // adăugați valorile pentru 200} valoare_analogică = valoare_analogică / 500,0; // Luați media VRL = analog_value * (5.0 / 1023.0);// Conversia valorii analogice la tensiune // RS = ((Vc / VRL) -1) * RL este formula pe care am obținut-o din foaia de date Rs = ((5.0 / VRL) -1) * RL; // RS / RO este 3,6 așa cum am obținut din graficul fișei tehnice Ro = Rs / 3,6; Serial.print ("Ro at fresh air ="); Serial.println (Ro); // Afișează întârziere calculată Ro (1000); // întârziere de 1s}
Notă: Valoarea Ro va varia, permite senzorului să se preîncălzească cel puțin 10 ore și apoi să utilizeze valoarea Ro.
Am concluzionat că valoarea Ro este de 30 KΩ pentru senzorul meu (când R L este de 47 kΩ). A ta ar putea varia ușor.
Măsurați valoarea lui Rs:
Acum, că știm valoarea lui Ro, putem calcula cu ușurință valoarea lui R folosind cele două formule de mai sus. Rețineți că valoarea Rs care a fost calculată anterior este pentru condiția de aer proaspăt și nu va fi aceeași atunci când amoniacul este prezent în aer. Calculul valorii Rs nu este o problemă importantă pe care o putem avea în vedere direct în programul final.
Raportarea raportului RS / Ro cu PPM:
Acum, că știm cum să măsurăm valoarea lui Rs și Ro, am putea găsi raportul său (Rs / Ro). Apoi putem folosi graficul (prezentat mai jos) pentru a ne raporta la valoarea corespunzătoare a PPM.
Deși linia NH3 (culoarea cyan) pare a fi liniară, de fapt nu este liniară. Aspectul se datorează faptului că scala este împărțită neuniform pentru aspect. Deci relația dintre Rs / Ro și PPM este de fapt logaritmică, care poate fi reprezentată prin ecuația de mai jos.
log (y) = m * log (x) + b unde, y = raport (Rs / Ro) x = PPM m = panta liniei b = punct de intersecție
Pentru a găsi valorile lui m și b trebuie să luăm în considerare două puncte (x1, y1) și (x2, y2) pe linia noastră de gaz. Aici lucrăm cu amoniac, astfel încât cele două puncte pe care le-am considerat sunt (40,1) și (100,0,8) așa cum se arată în imaginea de mai sus (marcate ca roșii) cu marcaj roșu.
m = / m = log (0,8 / 1) / log (100/40) m = -0,243
În mod similar pentru (b) să obținem valoarea punctului de mijloc (x, y) din graficul care este (70,0.75) așa cum se arată în imaginea de mai sus (marcată cu albastru)
b = log (y) - m * log (x) b = log (0.75) - (-0.243) * log (70) b = 0.323
Asta este acum că am calculat valoarea lui m și b putem echivala valoarea lui (Rs / Ro) cu PPM folosind formula de mai jos
PPM = 10 ^ {/ m}
Program pentru a calcula PPM folosind senzorul MQ:
Programul complet pentru calcularea PPM utilizând un senzor MQ este dat mai jos. Câteva linii importante sunt explicate mai jos.
Înainte de a continua programul, trebuie să introducem valorile rezistenței la sarcină (RL), panta (m), interceptarea (b) și valoarea rezistenței în aer proaspăt (Ro). Procedura pentru obținerea tuturor acestor valori a fost deja explicată, așa că hai să le alimentăm acum
#define RL 47 // Valoarea rezistorului RL este de 47K #define m -0.263 // Introduceți panta calculată #define b 0.42 // Introduceți interceptarea calculată #define Ro 30 // Introduceți valoarea Ro găsită
Apoi citiți căderea de tensiune pe senzor (VRL) și convertiți-o în tensiune (0V la 5V), deoarece citirea analogică va returna doar valori de la 0 la 1024.
VRL = analogRead (MQ_sensor) * (5.0 / 1023.0); // Măsurați căderea de tensiune și convertiți la 0-5V
Acum, că valoarea VRL este calculată, puteți utiliza formula discutată mai sus pentru a calcula valoarea Rs și, de asemenea, raportul (Rs / Ro)
raport = Rs / Ro; // găsiți raportul Rs / Ro
În cele din urmă, putem calcula PPM cu formula noastră logaritmică și îl putem afișa pe monitorul nostru serial, așa cum se arată mai jos
ppm dublu = pow (10, ((log10 (raport) -b) / m)); // utilizați formula pentru a calcula ppm Serial.print (ppm); // Afișați ppm
Se afișează valoarea PPM pe hardware cu Arduino și MQ-137:
Destul de multă teorie ne permite să construim un circuit simplu cu senzorul și LCD-ul pentru a afișa valoarea gazului în PPM. Aici senzorul pe care îl folosesc este MQ137 care măsoară amoniacul, schema circuitului pentru configurarea mea este prezentată mai jos.
Conectați senzorul și ecranul LCD așa cum se arată în schema de circuit și încărcați codul dat la sfârșitul programului. Trebuie să modificați valoarea Ro așa cum s-a explicat mai sus. De asemenea, efectuați modificările valorilor parametrilor dacă utilizați orice alt rezistor ca RL, altul decât 4.7K.
Lăsați setarea alimentată timp de cel puțin 2 ore înainte de a efectua citiri (se recomandă 48 de ore pentru valori mai precise). Acest timp se numește timpul de încălzire, timp în care senzorul se încălzește. După aceasta, ar trebui să puteți vedea valoarea PPM și tensiunea afișată pe ecranul LCD, așa cum se arată mai jos.
Acum, pentru a ne asigura că valorile sunt într-adevăr legate de prezența amoniacului, să plasăm acest set într-un recipient închis și să trimitem amoniac gaz în interiorul acestuia pentru a verifica dacă valorile cresc. Nu am un contor PPM adecvat cu mine să-l calibrez și ar fi grozav dacă cineva cu contor ar putea testa această setare și să mă anunțe.
Puteți viziona videoclipul de mai jos pentru a verifica modul în care citirile au variat în funcție de prezența amoniacului. Sper că ați înțeles conceptul și v-a plăcut să îl învățați. Dacă aveți nelămuriri, lăsați-le în secțiunea de comentarii sau pentru ajutor mai detaliat, folosiți forumul aici.