์๋ ํ์ธ์. ์ฝ ๋ ๋ฌ๋ง์ ๊ธ์ ์๋๋ค.
๊ณต๋ชจ์ ๊ณผ ๊ธฐ์ฌ ์ํ์ ์ง์ฅ์ ๋ค๋ก ์ ์ ์ฌ์ ๊ฐ ์๊ฒจ ์๊ฐ์ ๋ ๋๋ค.
์ค๋์ MQ ์๋ฆฌ์ฆ์์ ๊ณต๊ธฐ์ง ์ผ์๋ฅผ PPM์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ธ์ ์ฐ๊ฒ ์ต๋๋ค.
MQ ์๋ฆฌ์ฆ ์ผ์๋ฅผ ์ฌ์ฉํ ๋ PPM ๋ณํ์ด ์ค๋ช ์ด ์น์ ํ์ง ์์ ์์ ํ์ ๋ณดํ๊ฒ ์ต๋๋ค.
ํ๋ก์ ํธ์ ํ์ํ ๊ณต๊ธฐ์ง ์ผ์๋ฅผ ์์ ๋ก ์ ๋ฆฌํ๋ค ๋ณด๋ ์ด๋ ๊ฒ ๋ธ๋ก๊ทธ ๊ธ ์ฐ๋๋ฐ ๋์์ด ๋๋ค์.
MQ ์๋ฆฌ์ฆ๋ง๋ค ์ธก์ ํ ์ ์๋ ์ผ์๊ฐ์ด ๊ต์ฅํ ๋ง์ต๋๋ค.
MQ ์๋ฆฌ์ฆ ์ค ํ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด, ๋ค๋ฅธ ์๋ฆฌ์ฆ ๋ํ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธ์ ์ธ ํธ์ ๋๋ก ๋๋์ด์ ๊ธ์ ์ธ ์์ ์ธ๋ฐ,
1ํธ์ ์ผ์์ ์๋ฆฌ๊ฐ ๊ถ๊ธํ ๊ฒ์ด ์๋, ์๋์ด๋ ธ๋ก PPM ๋ณํ ๊ฒฐ๊ณผ๋ง ํ์ํ์ ๋ถ์ ์ํ ๊ธ์ ๋๋ค.
2ํธ์ ๋ฐ์ดํฐ์ํธ๋ฅผ ๋ณด๋ฉด์ ํ๋ก๋ฅผ ๋ณด๊ณ , ์๋ฆฌ๋ฅผ ํ์ธํฉ๋๋ค.
3ํธ์ Cํ์ผ์ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ฉด์ ํ์ด์ฌ์ผ๋ก PPM์ผ๋ก ๋ณํํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค.
github.com/miguel5612/MQSensorsLib
GitHub MQ ์๋ฆฌ์ฆ ์ฃผ์ ์ ๋๋ค.
๋ค์ด๋ฐ์์ ์์ถ์ ํ๊ณ ์๋์ด๋ ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์๋ฆฌ๊ฐ ๋ค ๊ฐ๊ธฐ ๋๋ฌธ์ MQ-2 ์์ ๋ฅผ ๋ณด๋ฉด์ ์ฝ๋ ์ฌ์ฉ๋ฒ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋ชจ๋ ์ฝ๋๋ฅผ ๋ณด์ง ์๊ณ , ์๋์ด๋ ธ๋ก ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ฒ ์ค์ํ ์ฝ๋๋ง ์ค๋ช ํ๊ฒ ์ต๋๋ค.
1. Calibration - ์นผ๋ฆฌ๋ธ๋ ์ด์
๋ค๋ฅธ ์ผ์์ ๋ค๋ฅด๊ฒ ๋๋ก ๊ณผ ๊ฐ์ ์นผ๋ฆฌ๋ธ๋ ์ด์ ๋จ๊ณ๊ฐ ์์ต๋๋ค.
MQ ์๋ฆฌ์ฆ์์ ๋งํ๋ ์นผ๋ฆฌ๋ธ๋ ์ด์ ์ ์ฒ์ ์ผ์์ ๊ฐ์ ์์ ์ ์กฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ํํ์ ์ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฝ๊ฒ ๋งํด์ ์ผ์๋ฅผ ์ฒ์ ์ธก์ ํ ๋, ๊ณต๊ธฐ๊ฐ ๊นจ๋ํ ๊ณณ์ ๊ธฐ์ค์ผ๋ก ๊ณต๊ธฐ์ง์ ์๋์ ์ผ๋ก ์ธก์ ํฉ๋๋ค.
์ผ์๋ก ๋ฐ๋ก ์ธก์ ํ๋ ๊ฒ์ด ์๋๋ผ 10๋ฒ ์ ๋ ๊นจ๋ํ ๊ณต๊ธฐ๋ฅผ ์ธก์ ํ๊ณ , ํ๊ท ์ ๋ด์ด R0์ ์์ ์ ๋ง์ถฅ๋๋ค.
์ฌ๊ธฐ์ RatioMQ2CleanAir๋ ์ผ์๋ง๋ค ์ ์ํ ๊ฐ์ด ์๋ก ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ ์ ์ํ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
MQ2๋ 9.83ppm์ ๊นจ๋ํ ๊ณต๊ธฐ๋ผ๊ณ ๊ฐ์ ์ ํ๊ณ ์์ํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ์๋ค์ด ์ฌ๋ฌ ์ํ์ฐฉ์ค๋ฅผ ๊ฑฐ์ณ ์ต์ ์ ๊ฐ์ ๋ธ ๊ฒ ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
2. PPM ์ถ๋ ฅ
์นผ๋ฆฌ๋ธ๋ ์ด์ ์ด ๋๋๋ฉด, ์๋์ด๋ ธ์์ MQ Lib์์ ์์์ ์ ํญ ๊ฐ์ด PPM๊ฐ์ผ๋ก ๋ณํ๋์ด ๋์ต๋๋ค.
๋ฐ๋ก ์์ ๋ฅผ ๋๋ ค๋ณด์๋ฉด ์์๊ฒ ์ง๋ง, PPM๊ฐ ๋ฟ๋ง ์๋๋ผ, ์ผ์์ ์ฌ์ฉ๋ ์ ์, ์ ํญ ๋ฑ์ด ๋ชจ๋ ์ถ๋ ฅ ๋ฉ๋๋ค.
3. a, b ์ ์ธ
๊ทธ๋ฆฌ๊ณ ์ค์ํ ๊ฒ์ด ์ด๋ค ๊ณต๊ธฐ๋ฅผ ์ธก์ ํ ๊ฒ์ธ์ง ์์๋ฅผ ์ ์ธํ๋ ๋ถ๋ถ์ ๋๋ค.
์ต๋ํ ์ฝ๊ฒ ์ค๋ช ํ๊ธฐ ์ํด ๋ฐ์ดํฐ ์ํธ๋ ๋ณด๊ณ ์ถ์ง ์์ง๋ง, Figure๋ ํ๋ ๋ณด๊ณ ๊ฐ์๋๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
MQ ์๋ฆฌ์ฆ ์ผ์๋ ์์ ๊ฐ์ ๋ฐ๋ผ, ์ง์ ํ๊ท์ ๊ธฐ์ธ๊ธฐ ์ ๋๊ฐ ํฌ๊ฒ ๋ฐ๋๊ธฐ ๋๋ฌธ์ a, b๋ฅผ ์ ๋๋ก ์ ์ธํด์ฃผ์ง ์์ผ๋ฉด, ์ด์ํ PPM ๊ฐ์ด ๋์ค๋ฉฐ ๊ฐ์ ์ฐจ์ด๊ฐ ๊ต์ฅํ ์ปค์ง๋๋ค.
ppm = a * ratio ^ b
ratio = rs / ro
ro = ์นผ๋ฆฌ๋ธ๋ ์ด์ ๋ ์ ํญ๊ฐ (๊ณ ์ ๊ฐ)
rs = ๊ณต๊ธฐ์ง์ด ์ธก์ ๋๋ ์ ํญ๊ฐ (๊ฐ๋ณ๊ฐ)
๋ง์ฝ H2์ PPM์ ์ํ๋ฉด ์๋์ฒ๋ผ a, b ๊ฐ์ ๋ฐ๊พธ๋ฉด ๋ฉ๋๋ค.
MQ2.setA(987.99);
MQ2.setB(-2.162);
์ฐธ๊ณ ๋ก Figure์ ๋ณด์ด๋ RL์ MQ ์ผ์์ ๋ถ์ด ์๋ ๊ฐ๋ณ ์ ํญ์ ๋๋ค. ์ผ์์ ์๋ฏผ ์ ๋๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
/*
MQUnifiedsensor Library - reading an MQ2
Demonstrates the use a MQ2 sensor.
Library originally added 01 may 2019
by Miguel A Califa, Yersson Carrillo, Ghiordy Contreras, Mario Rodriguez
Added example
modified 23 May 2019
by Miguel Califa
Updated library usage
modified 26 March 2020
by Miguel Califa
Wiring:
https://github.com/miguel5612/MQSensorsLib_Docs/blob/master/static/img/MQ_Arduino.PNG
Please take care, arduino A0 pin represent the analog input configured on #define pin
This example code is in the public domain.
*/
//Include the library
#include <MQUnifiedsensor.h>
/************************Hardware Related Macros************************************/
#define Board ("Arduino UNO")
#define Pin (A2) //Analog input 3 of your arduino
/***********************Software Related Macros************************************/
#define Type ("MQ-2") //MQ2
#define Voltage_Resolution (5)
#define ADC_Bit_Resolution (10) // For arduino UNO/MEGA/NANO
#define RatioMQ2CleanAir (9.83) //RS / R0 = 9.83 ppm
/*****************************Globals***********************************************/
MQUnifiedsensor MQ2(Board, Voltage_Resolution, ADC_Bit_Resolution, Pin, Type);
/*****************************Globals***********************************************/
void setup() {
//Init the serial port communication - to debug the library
Serial.begin(9600); //Init serial port
//Set math model to calculate the PPM concentration and the value of constants
MQ2.setRegressionMethod(1); //_PPM = a*ratio^b
MQ2.setA(574.25); MQ2.setB(-2.222); // Configurate the ecuation values to get LPG concentration
/*
Exponential regression:
Gas | a | b
H2 | 987.99 | -2.162
LPG | 574.25 | -2.222
CO | 36974 | -3.109
Alcohol| 3616.1 | -2.675
Propane| 658.71 | -2.168
*/
/***************************** MQ Init ********************************************/
//Remarks: Configure the pin of arduino as input.
/************************************************************************************/
MQ2.init();
/*
//If the RL value is different from 10K please assign your RL value with the following method:
MQ2.setRL(10);
*/
/***************************** MQ CAlibration ********************************************/
// Explanation:
// In this routine the sensor will measure the resistance of the sensor supposing before was pre-heated
// and now is on clean air (Calibration conditions), and it will setup R0 value.
// We recomend execute this routine only on setup or on the laboratory and save on the eeprom of your arduino
// This routine not need to execute to every restart, you can load your R0 if you know the value
// Acknowledgements: https://jayconsystems.com/blog/understanding-a-gas-sensor
Serial.print("Calibrating please wait.");
float calcR0 = 0;
for(int i = 1; i<=10; i ++)
{
MQ2.update(); // Update data, the arduino will be read the voltage on the analog pin
calcR0 += MQ2.calibrate(RatioMQ2CleanAir);
Serial.print(".");
}
MQ2.setR0(calcR0/10);
Serial.println(" done!.");
if(isinf(calcR0)) {Serial.println("Warning: Conection issue founded, R0 is infite (Open circuit detected) please check your wiring and supply"); while(1);}
if(calcR0 == 0){Serial.println("Warning: Conection issue founded, R0 is zero (Analog pin with short circuit to ground) please check your wiring and supply"); while(1);}
/***************************** MQ CAlibration ********************************************/
MQ2.serialDebug(true);
}
void loop() {
MQ2.update(); // Update data, the arduino will be read the voltage on the analog pin
MQ2.readSensor(); // Sensor will read PPM concentration using the model and a and b values setted before or in the setup
MQ2.serialDebug(); // Will print the table on the serial port
delay(500); //Sampling frequency
}
์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ณต์กํด๋ณด์ด์ง๋ง, ์ฃผ์์ ๊ฑท์ด๋ด๊ณ ํ์ํ ๋ถ๋ถ๋ง ๋ณธ๋ค๋ฉด ๊ต์ฅํ ์งง์ ์ฝ๋์์ ์ ์ ์์ต๋๋ค.
MQ2๋ฅผ ์์ ๋ฅผ ํ์ธํ์ง๋ง, ๋ค๋ฅธ MQ ์๋ฆฌ์ฆ ๋ํ ์ด๋ฐ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ๋ฐ๋ผํ์ค ์ ์์ต๋๋ค.
๋ค์ ๊ธ์ ๋ฐ์ดํฐ ์ํธ๋ฅผ ๋ณด๋ฉด์ ํ๋ก๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.