Датчик углеводородных газов MQ-2

Описание

В Вашем проекте нужно анализировать запахи, концентрацию газов, задымление? Может быть систему анализа качества воздуха в помещении? Или определения паров спирта в выдыхаемом воздухе? А может пожарная сигнализация? Тогда датчик MQ-2 будет отличным решением поставленных вопросов. MQ-2 - это довольно простой датчик для определения в воздухе концентрации угарного газа, метана, водорода, пропана, паров спирта, углеводородных газов (LPG - Liquefied petroleum gas - сжиженных углеводородных газов).

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

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

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

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

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

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

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

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

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

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

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

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

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

Определяемый газ Значение А Значение В
Водород (H2) 987.99 -2.162
Углеводороды (LPG) 574.25 -2.222
Угарный газ (CO) 36974 -3.109
Пары спирта (Alcohol) 3616.1 -2.675
Пропан (Propane) 658.71 -2.168

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

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

Пример 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 - порта. Таким образом можно измерить значения для углеводородных газов, углекислого газа и уровня дыма.

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

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

#include <MQ2Lib.h> // подключение библиотеки
 
int pin = A0; // вывод подключения к контакту S датчика
float lpg = 0; // хранение данных об углеводородных газах
float co = 0; // хранение данных об угарном газе
float smoke = 0; // хранение данных о дыме
 
MQ2 mq2(pin); // создание объекта датчика
 
void setup()
{
  Serial.begin(9600); // инициализация Serial-порта
  mq2.begin(); // инициализация датчика
}
 
void loop()
{
  //Чтение данных и вывод в сериал-порт:
  //lpg - об углеводородных газах
  lpg = mq2.readLPG();
  Serial.print("LPG : ");
  Serial.println(lpg);
 
  //co - об угарном газе
  co = mq2.readCO();
  Serial.print("CO : ");
  Serial.println(co);
 
  //smoke - о дыме
  smoke = mq2.readSmoke();
  Serial.print("Smoke : ");
  Serial.println(smoke);
  Serial.println("-----");
  Serial.println();
 
  delay(2000); // задержка 2 секунды
}

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

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

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

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

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