4.6. Определение концентрации угарного газа с помощью датчика MQ-7
Рассмотрим еще один датчик для обнаружения  утечки газа. Это датчик угарного газа MQ-7 (рис. 4.29).

Рис. 4.29. Датчик угарного газа MQ-7.

Основным источником выделения угарного гоза СО, является сгорание углеродного топлива при недостаточном количестве кислорода. Углерод "не догорает" и вместо углекислого газа CO2, в атмосферу выбрасывается угарный газ CO. Источником СО в доме, при неправильной эксплуатации, могут выступать дровяные печи, газовые конфорки, газовые котлы и прочая отопительная техника, работающая на углеродном топливе. В выхлопе бензинового двигателя автомобиля содержание СО может быть до 3%, а по гигиеническим нормам его должно быть не более 20 мг/м³ (около 0,0017%).
Угарный газ (CO) чрезвычайно ядовит, но при этом не обладает ни цветом, ни запахом. Попав в помещение с угарным газом, вы только по косвенным симптомам поймете, что подвергаетесь воздействию яда. Сначала головная боль, головокружение, одышка, сердцебиение, потом посинение трупа. Угарный газ соединяется с гемоглобином крови, отчего последний перестает переносить кислород тканям вашего организма, и первым страдает головной мозг и нервная система.Во-вторых, при определенных концентрациях он образует взрывоопасную смесь.
Поэтому датчик угарного газа – важный и необходимый компонент при построении "умного дома".

Рассмотрим подключение датчика MQ-7 к плате Arduino Mega и модулю NodeMcu ESP8266.

4.6.1. Подключение датчика MQ-7 к плате Arduino Mega

Подключение датчика MQ-7 к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.30.
 

Рис. 4.30. Схема подключений датчика MQ-7 к плате Arduino Mega

Загрузим на плату Arduino Mega скетч получения данных с датчика MQ-7 и вывода в последовательный порт Arduino. Процедуры определения по данным, приходящим с аналогового входа ppmcarbonmonoxide().
Содержимое скетча представлено в листинге 4.12.
Листинг 4.12

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

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

// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
  // открываем последовательный порт
  Serial.begin(9600);
  // калибровка
  mq7.calibrate();
  mq7.getRo();
}
 
void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // получение данных c датчика mq7
      float  carbonmonoxide= get_data_ppmcarbonmonoxide();
      // выводим значения газа в ppm
      Serial.print("carbonmonoxide=");
      Serial.print(carbonmonoxide);
      Serial.println(" ppm ");
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных с датчика MQ7
float get_data_ppmcarbonmonoxide()  {

  Serial.println(mq7.readRatio());
  // получение значения 
  float value=mq7.readCarbonMonoxide();
  
  return value;
}


Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и увидите вывод данных о содержании угарного газа CO.
 


Рис. 4.31. Вывод данных датчика MQ-7 в монитор последовательного порта.

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке.

4.6.2. Подключение датчика MQ-7 к модулю NodeMcu ESP8266

Теперь рассмотрим подключение датчика MQ-7 к модулю NodeMcu ESP8266. Датчик MQ-7  подключаем к входу y3 мультиплексора. Для выбора аналогового входа мультиплексора используем контакты D5, D7, D8 модуля Node Mcu. Схема соединений представлена на рис. 4.32.

Рис. 4.32. Схема подключений датчика MQ-7 к NodeMcu ESP8266

Загрузим на модуль NodeMcu скетч получения данных с датчика MQ-7 и вывода в последовательный порт Arduino. Для выбора аналогового входа мультиплексора y3 подаем на контакты D5, D7 высокого уровня HIGH, на контакт D8 сигнал низкого уровня LOW. Процедура определения содержание угарного гоза СО в  ppm –  ppmcarbonmonoxide().
Содержимое скетча представлено в листинге 4.13.
Листинг 4.13

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

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

// переменная для интервала измерений
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 – y3 (011)
  digitalWrite(14,HIGH);
  digitalWrite(13,HIGH);
  digitalWrite(15,LOW);    
  // калибровка
  mq7.calibrate();
  mq7.getRo();
}
 
void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // выбор входа мультиплексора CD4051 – y3 (011)
      digitalWrite(14,HIGH);
      digitalWrite(13,HIGH);
      digitalWrite(15,LOW);     
      // получение данных c датчика mq7
      float  carbonmonoxide= get_data_ppmcarbonmonoxide();
      // выводим значения газа в ppm
      Serial.print("carbonmonoxide=");
      Serial.print(carbonmonoxide);
      Serial.println(" ppm ");
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных с датчика MQ7
float get_data_ppmcarbonmonoxide()  {
  Serial.println(mq7.readRatio());
  // получение значения 
  float value=mq7.readCarbonMonoxide();
  return value;
}


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


Рис. 4.33. Вывод данных датчика MQ-7 в монитор последовательного порта

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .


1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33 

 

Вверх