Датчик природного газа MQ-4

Описание

Одним из самых опасных газов в обычном бытовом жилище является природный газ. Ведь у многих дома есть газовая плита или используется колонка для нагревания воды и отопления. А в загородных домах и дачах часто без газа очень тяжело обойтись. Но при всей его необходимости, у него есть значительный минус - он очень взрывоопасен. Как же предупредить утечку природного газа и вовремя принять меры? Воспользуйтесь датчиком газа MQ-4, который хорошо обнаруживает концентрацию природного газа в воздухе. Помимо природного газа датчик обнаруживает в воздухе метан (CH4), угарный газ (CO), пары спирта (Alcohol), дым.

Датчик является одним из популярных датчиков серии MQ. Обнаружение концентрации газов в датчике происходит за счёт измерения сопротивления чувствительного материала при взаимодействии газов с этим чувствительным материалом. Датчик обнаруживает концентрации газов примерно от 300 до 10000 миллионных долей (ppm - parts per million).

Для описания количества газа в воздухе чаще всего пользуются либо процентным соотношением газа или миллионными долями. К примеру, Сто миллионных долей дыма означает, что если мы разобьём весь объём воздуха на 1'000'000 частей, то 100 из этих частей будут являться частями дыма, а 999'900 частей какие-то другие газы.

Основным рабочим элементом датчика является нагревательный элемент, за счет которого происходит химическая реакция, в результате которой получается информация о концентрации газа. В процессе работы датчик должен нагреваться - это нормально. Также необходимо помнить, что за счет нагревательного элемента, датчик потребляет большой ток, поэтому рекомендуется использовать внешнее питание.

Перед началом использования рекомендуется прогреть датчик, т.е. оставить его включенным на сутки. Это поможет достичь стабильных показаний в процессе его дальнейшей работы.

Обратите внимание, что показания датчика подвержены влиянию температуры и влажности окружающего воздуха. Поэтому в случае использования датчика в изменяющейся среде, будет необходима компенсация этих параметров.

Питание нагревателя

Основным элементом датчика - является нагреватель, он же является и основным потребителем энергии. Ввиду этого, на плате предусмотрен вывод питания нагревателя. Таким образом, можно управлять нагревателем для экономии энергопотребления. Если же такой задачи не требуется, просто объедините выводы VDD и VH с помощью перемычки, и нагреватель будет запитан от сигнала +.

Технические характеристики

  • Напряжение питания: 5 В
  • Потребляемый ток: 150 мА
  • Время прогрева при включении: 1 мин

Физические размеры

  • Модуль (Д х Ш х В): 35 х 20 х 21 мм

Таблица значений параметров

Для получения значения концентрации газа (см. пример 2), нужно установить соответствующие значения А и В для объекта датчика.

Определяемый газ Значение А Значение В
Сжиженный природный газ (LPG) 3811.9 -3.113
Метан (CH4) 1012.7 -2.786
Угарный газ (CO) 200000000000000 -19.05
Пары спирта (Alcohol) 60000000000 -14.01
Дым 30000000 -8.308

Файлы для загрузки

Примеры подключения и использования

Пример 1. Концентрация газов

В примере демонстрируется подключение датчика и вывод полученных данных в монитор Serial - порта. Таким образом можно измерить значение концентрации газов в среде с присутствием газов и в среде с их отсутствием. После этого делать вывод о наличии газов.

Схема подключения:

Скетч для загрузки:

const int analogSignal = A0; // подключение сигналоьного вывода
 
int gasValue = 0; // переменная для хранения количества газа
 
void setup() {
  Serial.begin(9600); // инициализация Serial порта
 
}
 
void loop() {
  gasValue = analogRead(analogSignal); // чтение данных о количестве газа
 
  //вывод сообщения
  Serial.print("The gas value is ");
  Serial.println(gasValue);
 
  delay(1000); //задержка 1 с
}

Пример 2. Определение концентрации газа

В данном примере используется уже более сложная универсальная библиотека для работы со многими видами датчиков газа. В примере демонстрируется подключение датчика и вывод полученных данных по отдельным компонентам в монитор Serial - порта. Таким образом можно измерить значения для газов, которые описаны в Таблице значений параметров (в описании к этой статье). В данном примере будет измерена концентрация метана (CH4).

Схема подключения:

Скетч для загрузки:

#include <MQUnifiedsensor.h> // подключение библиотеки
 
#define         Board                   ("Arduino UNO") // имя контроллера
#define         Pin                     (A0)  // пин подключения контакта S датчика
#define         Type                    ("MQ-4") // тип датчика
#define         Voltage_Resolution      (5) // количество Вольт платы
#define         ADC_Bit_Resolution      (10) // разрешение АЦП (в битах) для плат UNO/MEGA/NANO
#define         RatioMQ4CleanAir        (4.4) //RS / R0 = 4.4 ppm 
 
 
MQUnifiedsensor MQ4(Board, Voltage_Resolution, ADC_Bit_Resolution, Pin, Type); // создание объекта датчика
 
 
void setup() {
 
  Serial.begin(9600); // инициализация последовательного порта
 
  // установка математической модели для вычисления концентрации газов в PPM
  // и константы для каждого из определяемых газов 
  MQ4.setRegressionMethod(1); //_PPM =  a*ratio^b
  MQ4.setA(1012.7); // конфигурация значения А
  MQ4.setB(-2.786); // конфигурация значения В 
  MQ4.setRL(20.0); // установка параметров резистора
 
  MQ4.init(); 
  // калибровка датчика
  Serial.print("Calibrating please wait.");
  float calcR0 = 0;
  for(int i = 1; i<=10; i ++)
  {
    MQ4.update(); // обновление данных
    calcR0 += MQ4.calibrate(RatioMQ4CleanAir);
    Serial.print(".");
  }
  MQ4.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);
  }
 
  MQ4.serialDebug(true); // вывод отладночных сообщений
}
 
void loop() {
  MQ4.update(); // обновление данных (чтение с аналогового порта)
  MQ4.readSensor(); // сенсор читает концентрацию, используя установленную модель и данные параметров А и В, установленные ранее
  MQ4.serialDebug(); // вывод отладочной таблицы в сериал порт
  delay(500); // задержка в 500 мс
}