Найти в Дзене
иван таравков

Определение концентрации углеводородных газов с помощью датчика MQ-2

● 4.5. Определение концентрации углеводородных газов с помощью датчика MQ-2
Одна из самых важных задач в вопросе безопасности умного дома –обнаружение утечки газа. Для того, чтобы плата Arduino успешно решала задачи такого рода, нужно подключить к ней датчик газа MQ-2. Датчик MQ-2 (рис. 4.24) определит концентрацию углеводородных газов (пропан, метан, н-бутан), дыма (взвешенных частиц,

● 4.5. Определение концентрации углеводородных газов с помощью датчика MQ-2

Одна из самых важных задач в вопросе  безопасности умного дома –обнаружение утечки газа. Для того, чтобы  плата Arduino успешно решала задачи такого рода, нужно подключить к ней  датчик газа MQ-2. Датчик MQ-2 (рис. 4.24) определит концентрацию  углеводородных газов (пропан, метан, н-бутан), дыма (взвешенных частиц,  являющихся результатом горения) и водорода в окружающей среде. Датчик  можно использовать для обнаружения утечек газа и задымления. В  газоанализатор встроенный нагревательный элемент, который необходим для  химической реакции. Поэтому во время работы сенсор будет горячим. Для  получения стабильных показаний новый сенсор необходимо один раз прогреть  (оставить включенным) в течение 24 часов. После этого стабилизация  после включения занимать около минуты.
 
  Рис. 4.24. Датчик газов MQ-2.
 
 В зависимости от уровня газа в атмосфере меняется внутреннее  сопротивление датчика. MQ-2 имеет аналоговый выход, поэтому напряжение  на этом выходе будет меняться пропорционально уровню газа в окружающей  среде. Для определения по логическому уровню также имеется цифровой  выход. На модуле датчика есть встроенный потенциометр, который позволяет  настроить чувствительность этого датчика в зависимости от того,  насколько точно вы хотите регистрировать уровень газа.
 Теперь об  единицах измерения. На территории бывшего Советского Союза, показатели  принято измерять в процентах (%) или же непосредственно в массе к объему  (мг/м3). В зарубежных странах применяет такой показатель как ppm.
 Сокращение ppm расшифровывается как parts per million (частей на миллион). Например, 1 ppm = 0,0001%.
 Диапазон измерений датчика:
 
 •    Пропан: 200–5000 ppm;
 •    Бутан: 300–5000 ppm;
 •    Метан: 500–20000 ppm;
 •    Водород: 300–5000 ppm.
 
 Рассмотрим подключение датчика MQ-2 к плате Arduino Mega и модулю NodeMcu ESP8266.
 
 4.5.1. Подключение датчика MQ-2 к плате Arduino Mega
 
 Подключение датчика MQ-2 к плате Arduino Mega мы будем производить по  аналоговому входу. Питание для датчика берем также с платы Arduino.  Схема соединений представлена на рис. 4.25.
 
 
 Рис. 4.25. Схема подключений датчика MQ-2 к плате Arduino Mega
 
 Загрузим на плату Arduino Mega скетч получения данных с датчика MQ-2 и  вывода в последовательный порт Arduino. Процедуры определения по данным,  приходящим с аналогового входа:
 
 •    get_data_ppmpropan() – содержание пропана в  ppm;
 •    get_data_ppmmethan() – содержание пропана в  ppm;
 •    get_data_ppmsmoke() – содержание дыма.
 
 Содержимое скетча представлено в листинге 4.10.
 Листинг 4.10
Одна из самых важных задач в вопросе безопасности умного дома –обнаружение утечки газа. Для того, чтобы плата Arduino успешно решала задачи такого рода, нужно подключить к ней датчик газа MQ-2. Датчик MQ-2 (рис. 4.24) определит концентрацию углеводородных газов (пропан, метан, н-бутан), дыма (взвешенных частиц, являющихся результатом горения) и водорода в окружающей среде. Датчик можно использовать для обнаружения утечек газа и задымления. В газоанализатор встроенный нагревательный элемент, который необходим для химической реакции. Поэтому во время работы сенсор будет горячим. Для получения стабильных показаний новый сенсор необходимо один раз прогреть (оставить включенным) в течение 24 часов. После этого стабилизация после включения занимать около минуты.  Рис. 4.24. Датчик газов MQ-2. В зависимости от уровня газа в атмосфере меняется внутреннее сопротивление датчика. MQ-2 имеет аналоговый выход, поэтому напряжение на этом выходе будет меняться пропорционально уровню газа в окружающей среде. Для определения по логическому уровню также имеется цифровой выход. На модуле датчика есть встроенный потенциометр, который позволяет настроить чувствительность этого датчика в зависимости от того, насколько точно вы хотите регистрировать уровень газа. Теперь об единицах измерения. На территории бывшего Советского Союза, показатели принято измерять в процентах (%) или же непосредственно в массе к объему (мг/м3). В зарубежных странах применяет такой показатель как ppm. Сокращение ppm расшифровывается как parts per million (частей на миллион). Например, 1 ppm = 0,0001%. Диапазон измерений датчика: •    Пропан: 200–5000 ppm; •    Бутан: 300–5000 ppm; •    Метан: 500–20000 ppm; •    Водород: 300–5000 ppm. Рассмотрим подключение датчика MQ-2 к плате Arduino Mega и модулю NodeMcu ESP8266. 4.5.1. Подключение датчика MQ-2 к плате Arduino Mega Подключение датчика MQ-2 к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.25. Рис. 4.25. Схема подключений датчика MQ-2 к плате Arduino Mega Загрузим на плату Arduino Mega скетч получения данных с датчика MQ-2 и вывода в последовательный порт Arduino. Процедуры определения по данным, приходящим с аналогового входа: •    get_data_ppmpropan() – содержание пропана в  ppm; •    get_data_ppmmethan() – содержание пропана в  ppm; •    get_data_ppmsmoke() – содержание дыма. Содержимое скетча представлено в листинге 4.10. Листинг 4.10

// библиотека для работы с датчиками MQ
#include <TroykaMQ.h>

#define INTERVAL_GET_DATA 2000 // интервала измерений, мс
// пин, к которому подключен датчик
#define MQ2PIN A10
// создаём объект для работы с датчиком
MQ2 mq2(MQ2PIN);

// переменная для интервала измерений
unsigned long millis_int1=0;

void setup() {
// открываем последовательный порт
Serial.begin(9600);
// калибровка
mq2.calibrate();
mq2.getRo();
}

void loop() {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// получение данных c датчика mq2
float propan= get_data_ppmpropan();
// выводим значения газа в ppm
Serial.print("propan=");
Serial.print(propan);
Serial.println(" ppm ");
float methan= get_data_ppmmethan();
// выводим значения газа в ppm
Serial.print("methan=");
Serial.print(methan);
Serial.println(" ppm ");
float smoke= get_data_ppmsmoke();
// выводим значения газа в ppm
Serial.print("smoke=");
Serial.print(smoke);
Serial.println(" ppm ");
// старт интервала отсчета
millis_int1=millis();
}
}

// получение данных содержания пропана с датчика MQ2
float get_data_ppmpropan() {

Serial.println(mq2.readRatio());
// получение значения
float value=mq2.readLPG();

return value;
}
// получение данных содержания метана с датчика MQ2
float get_data_ppmmethan() {

Serial.println(mq2.readRatio());
// получение значения
float value=mq2.readMethane();

return value;
}
// получение данных содержания дыма с датчика MQ2
float get_data_ppmsmoke() {

Serial.println(mq2.readRatio());
// получение значения
float value=mq2.readSmoke();

return value;
}

Загрузим скетч на плату  Arduino Mega, откроем монитор последовательного порта и увидите вывод  данных о содержании пропана, метана и дыма (рис. 4.26).
 
 
 
 Рис. 4.26. Вывод данных датчика MQ-2 в монитор последовательного порта.
 
 Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .
 
 4.5.2. Подключение датчика MQ-2 к модулю NodeMcu ESP8266
 
 Теперь рассмотрим подключение датчика MQ-2 к модулю NodeMcu ESP8266.  Датчик MQ-2  подключаем к входу y2 мультиплексора. Для выбора  аналогового входа мультиплексора используем контакты D5, D7, D8 модуля  Node Mcu. Схема соединений представлена на рис. 4.27.
 
 
 Рис. 4.27. Схема подключений датчика MQ-2 к NodeMcu ESP8266
 
 Загрузим на модуль NodeMcu скетч получения данных с датчика MQ-2 и  вывода в последовательный порт Arduino. Для выбора аналогового входа  мультиплексора y2 подаем на контакты D5, D8 сигнал низкого уровня LOW,  на контакт D7 сигнал высокого уровня HIGH.
 Процедуры определения по данным, приходящим с аналогового входа:
 
 •    get_data_ppmpropan() – содержание пропана в  ppm;
 •    get_data_ppmmethan() – содержание пропана в  ppm;
 •    get_data_ppmsmoke() – содержание дыма.
 
 Содержимое скетча представлено в листинге 4.11.
 Листинг 4.11
Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и увидите вывод данных о содержании пропана, метана и дыма (рис. 4.26). Рис. 4.26. Вывод данных датчика MQ-2 в монитор последовательного порта. Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке . 4.5.2. Подключение датчика MQ-2 к модулю NodeMcu ESP8266 Теперь рассмотрим подключение датчика MQ-2 к модулю NodeMcu ESP8266. Датчик MQ-2  подключаем к входу y2 мультиплексора. Для выбора аналогового входа мультиплексора используем контакты D5, D7, D8 модуля Node Mcu. Схема соединений представлена на рис. 4.27. Рис. 4.27. Схема подключений датчика MQ-2 к NodeMcu ESP8266 Загрузим на модуль NodeMcu скетч получения данных с датчика MQ-2 и вывода в последовательный порт Arduino. Для выбора аналогового входа мультиплексора y2 подаем на контакты D5, D8 сигнал низкого уровня LOW, на контакт D7 сигнал высокого уровня HIGH. Процедуры определения по данным, приходящим с аналогового входа: •    get_data_ppmpropan() – содержание пропана в  ppm; •    get_data_ppmmethan() – содержание пропана в  ppm; •    get_data_ppmsmoke() – содержание дыма. Содержимое скетча представлено в листинге 4.11. Листинг 4.11

// библиотека для работы с датчиками MQ
#include <TroykaMQ.h>

#define INTERVAL_GET_DATA 2000 // интервала измерений, мс
// аналоговый пин
#define MQ2PIN A0
// создаём объект для работы с датчиком
MQ2 mq2(MQ2PIN);

// переменная для интервала измерений
unsigned long millis_int1=0;

void setup() {
// входы подключения к мультиплексору D5, D7, D8 (GPIO 14, 13, 15)
// как OUTPUT
pinMode(14,OUTPUT);
pinMode(13,OUTPUT);
pinMode(15,OUTPUT);
// открываем последовательный порт
Serial.begin(9600);
// выбор входа мультиплексора CD4051 – y2 (010)
digitalWrite(14,LOW);
digitalWrite(13,HIGH);
digitalWrite(15,LOW);
// калибровка
mq2.calibrate();
mq2.getRo();
}

void loop() {
if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
// выбор входа мультиплексора CD4051 – y2 (010)
digitalWrite(14,LOW);
digitalWrite(13,HIGH);
digitalWrite(15,LOW);
// получение данных c датчика mq2
float propan= get_data_ppmpropan();
// выводим значения газа в ppm
Serial.print("propan=");
Serial.print(propan);
Serial.println(" ppm ");
float methan= get_data_ppmmethan();
// выводим значения газа в ppm
Serial.print("methan=");
Serial.print(methan);
Serial.println(" ppm ");
float smoke= get_data_ppmsmoke();
// выводим значения газа в ppm
Serial.print("smoke=");
Serial.print(smoke);
Serial.println(" ppm ");
// старт интервала отсчета
millis_int1=millis();
}
}

// получение данных содержания пропана с датчика MQ2
float get_data_ppmpropan() {
Serial.println(mq2.readRatio());
// получение значения
float value=mq2.readLPG();
return value;
}
// получение данных содержания метана с датчика MQ2
float get_data_ppmmethan() {
Serial.println(mq2.readRatio());
// получение значения
float value=mq2.readMethane();
return value;
}
// получение данных содержания дыма с датчика MQ2
float get_data_ppmsmoke() {
Serial.println(mq2.readRatio());
// получение значения
float value=mq2.readSmoke();
return value;
}

Загрузим скетч на модуль Node  Mcu, откроем монитор последовательного порта и видим вывод данных,  получаемых с датчика MQ-2 (рис. 4.28).
 
 
 
 Рис. 4.28. Вывод данных датчика MQ-2 в монитор последовательного порта.
Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика MQ-2 (рис. 4.28). Рис. 4.28. Вывод данных датчика MQ-2 в монитор последовательного порта.