Arduino - MQ9 szenzor


Az Arduino fejlesztői környezetbe tökéletesen illeszkednek az egyes levegő koncentrátumát vizsgáló szenzorok. Amiről most szó lesz a továbbiakban az az MQ9-es modell, amely képes metán, PB és szén-monoxid (10ppm-től 1.000ppm-ig) és egyéb gyúlékony gázok (100ppm-től 10.000ppm-ig) mérésére. Működési elve, hogy egy belső ellenállás értéke annak függvényében változik, ahogy a levegő összetétele. Egy fütött elektróda érzékeli mindezt.

Egy otthoni, saját fejlesztésű IoT rendszerbe fogom illeszteni.

Bekötése:

  1. VCC (1.4...5V)
  2. GND
  3. Digitális kimenet
  4. Analóg kimenet
Amire figyelni kell:
  • A helyes polaritásra és feszültség tartományra
  • A felfűtési idő 24-48 óra (a gyártó szerint)
  • Ne remegtessük a szenzort
  • Kalibrálni kell
  • Hosszabb időszakra ne mérjen magas gáz koncentrátumot
A digitális kimenete magas állapotba kerül, amennyiben már veszélyes a gáz koncentrációja, ellenkező esetben alacsony. Én az analóg kimenetét használom fel, mert mérni akarom az összetétel értékét.

Az eszközt először is kalibrálni kell. Ezzel a kóddal megkapjuk az R0 értékét, amit később majd fel fogunk használni:

void setup() { 
 Serial.begin(9600); 
} 
void loop() { 
 float sensor_volt;  
 float RS_air; //  Rs in clean air 
 float R0;  // R0 in 1000 ppm LPG 
 float sensorValue; 
//Average   
   for(int x = 0 ; x < 100 ; x++) 
 { 
   sensorValue = sensorValue + analogRead(A0); 
 } 
 sensorValue = sensorValue/100.0; 
//-----------------------------------------------/ 
 sensor_volt = (sensorValue/1024)*5.0; 
 RS_air = (5.0-sensor_volt)/sensor_volt; // Depend on RL on yor module 
 R0 = RS_air/9.9; // According to MQ9 datasheet table 
 Serial.print("sensor_volt = "); 
 Serial.print(sensor_volt); 
 Serial.println("V");
 Serial.print("R0 = "); 
 Serial.println(R0); 
 delay(1000); 
}

Ha megkaptuk az R0 értékét, akkor be kell helyettesíteni ebbe a kódba:

void setup() { 
 Serial.begin(9600); 
} 
void loop() { 
 float sensor_volt; 
 float RS_gas; 
 float ratio; 
 float R0 = 0.48; 
 int sensorValue = analogRead(A0); 
 sensor_volt = ((float)sensorValue / 1024) * 5.0; 
RS_gas = (5.0 - sensor_volt) / sensor_volt; // Depend on RL on yor module 
 ratio = RS_gas / R0; // ratio = RS/R0 
//------------------------------------------------------------/ 
 Serial.print("sensor_volt = "); 
 Serial.println(sensor_volt); 
 Serial.print("RS_ratio = "); 
 Serial.println(RS_gas); 
 Serial.print("Rs/R0 = "); 
 Serial.println(ratio); 
 Serial.print("\n\n"); 
 delay(1000); 
}

Az alábbi grafikonról leolvashatók a PPM értékek a kapott RS / R0 hányadosával:

Megjegyzés: a CH4 = metán gáz.

Megjegyzések