Датчик mq 2 подключение к ардуино. Датчики газа серия MQ (Trema-модуль v2.0)

Этот датчик, по утверждению продавца, позволяет определять факт наличия в воздухе метана, пропана, бутана, водорода и дыма, а также примерно оценивать концентрацию этих веществ в атмосфере. Датчик приобретен на Ru.aliexpress.com


Датчик MQ2 продажа на Алиэкспресс

Внешний вид модуля

Конструктивно датчик представляет собой печатную плату 30*21 мм, высота датчика примерно 20 мм, масса 7,3 г.


Датчик MQ2 внешний вид

На печатной плате имеются четыре крепежных отверстия. Чувствительный элемент данного устройства имеет вид усеченного конуса с диаметром около 20 мм в нижней части и 12 мм в верхней.


Датчик MQ2 внешний вид снизу

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


Датчик MQ2

Для подключения устройство имеет 4-х контактный штырьковый разъем. Два проводника служат для подачи электропитания, модуль потребляет ток 115 мА (150 мА по данным производителя) при напряжении 5 В. Два других проводника представляют собой аналоговый и цифровой выходы датчика. На цифровом выходе происходит смена сигнала с высокого логического уровня на низкий при достижении заданного уровня загрязнения. Порог срабатывания можно устанавливать подстроечным резистором. На аналоговом выходе уровень напряжения меняется от 0,1 до 4 вольта в зависимости от уровня загрязнения. При срабатывании датчика у него на плате загорается красный светодиод.

Подключение к Ардуино-платформе

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


Ардуино и датчик определения в воздухе газов

Для подключения работы с датчиком надо написать программу для Arduino. В простейшем случае программа, просто опрашивает датчик 1 раз в секунду и выводит показания в последовательный порт. .

int MQ2_a = 0; // датчик газа подключается к 0-му аналоговому порту
int MQ2_d = 2; // датчик газа подключается ко 2-му цифровому порту
int A = 0; // переменная для хранения значения входного напряжения на аналоговом выходе датчика
int D = 0; // переменная для хранения значения входного напряжения на цифровом выходе датчика

void setup()
{
Serial.begin(1200);
}

void loop()
{
A = analogRead(MQ2_a); // считываем значение с аналогового выхода MQ2
D = digitalRead(MQ2_d);
Serial.print(«MQ2_a=»);
Serial.println(A);
Serial.print(«MQ2_d=»);
Serial.println(D);
delay(1000);
}

Испытание газового детектора

Для тестирования будем использовать зажигалку, заправленную пропан-бутановой смесью.


Ардуино и датчик определения газов — тестирование

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


Датчик MQ2 — результаты теста

Если из зажигалки выпустить немного газа рядом с датчиком, то показания датчика тут же изменятся. Напряжение на аналоговом выходе сильно возрастает, а на цифровом выводе появляется логический сигнал низкого уровня.


Датчик MQ2 — результаты теста с газом

При работе датчик MQ2 заметно нагревается. Производитель рекомендует прогреть датчик в течении 20 с перед началом работы. Видимо с этим связано то, что постепенно уровень напряжения на аналоговом канале падает с начального значения в 1,5 В до примерно 0,2 В. Но этот процесс занимает не 20 секунд, а примерно пол часа. При размещении датчика следует иметь в виду, что метан и, тем белее, водород имеют плотность меньше плотности воздуха, а потому будут собираться в верхней части помещения. Метан является основным компонентом природного газа, который подается по газовой распределительной сети. Так же себя поведет и горячий, насыщенный дымом, воздух при пожаре. Пропан и бутан, которые используются в горелках с баллонным питанием, гораздо плотнее воздуха и будут собираться в нижней части помещения. Так же интересную информацию по аналогичным датчикам можно найти в других источниках .

Источники

  1. http://radioskot.ru/publ/nachinajushhim/arduino_uno_dlja_nachinajushhikh/22-1-0-1055
  2. http://caravaning.in.ua/forum/viewtopic.php?p=128850
  3. http://cxem.net/arduino/arduino117.php
mq2Heater.ino #include // имя для пина, к которому подключен датчик #define PIN_MQ2 A0 // имя для пина, к которому подключен нагреватель датчика #define PIN_MQ2_HEATER 13 // создаём объект для работы с датчиком // и передаём ему номер пина выходного сигнала и нагревателя MQ2 mq2(PIN_MQ2, PIN_MQ2_HEATER) ; void setup() { Serial.begin (9600 ) ; // включаем нагреватель mq2.heaterPwrHigh () ; Serial.println ("Heated sensor" ) ; } void loop() { // и калибровка не была совершена if (! mq2.isCalibrated () && mq2.heatingCompleted () ) { mq2.calibrate () ; Serial.print ("Ro = " ) ; Serial.println (mq2.getRo () ) ; } // если прошёл интервал нагрева датчика // и калибровка была совершена if (mq2.isCalibrated () && mq2.heatingCompleted () ) { Serial.print ("LPG: " ) ; Serial.print (mq2.readLPG () ) ; Serial.print (" ppm " ) ; Serial.print (" Methane: " ) ; Serial.print (mq2.readMethane () ) ; Serial.print (" ppm " ) ; Serial.print (" Smoke: " ) ; Serial.print (mq2.readSmoke () ) ; Serial.print (" ppm " ) ; Serial.print (" Hydrogen: " ) ; Serial.print (mq2.readHydrogen () ) ; Serial.println (" ppm " ) ; delay(100 ) ; } }

К платам Arduino c 5 вольтовой логикой датчик можно подключить используя всего один . Для этого установите перемычку на разъём «выбор питания нагревателя».

Выведем в Serial-порт текущее значение вредных газов в ppm , при этом нагреватель всегда включён.

mq2.ino // библиотека для работы с датчиками MQ (Troyka-модуль) #include //имя для пина, к которому подключен датчик #define PIN_MQ2 A0 // создаём объект для работы с датчиком и передаём ему номер пина MQ2 mq2(PIN_MQ2) ; void setup() { // открываем последовательный порт Serial.begin (9600 ) ; // перед калибровкой датчика прогрейте его 60 секунд // выполняем калибровку датчика на чистом воздухе mq2.calibrate () ; // выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт Serial.print ("Ro = " ) ; Serial.println (mq2.getRo () ) ; } void loop() { // выводим отношения текущего сопротивление датчика // к сопротивлению датчика в чистом воздухе (Rs/Ro) Serial.print ("Ratio: " ) ; Serial.print (mq2.readRatio () ) ; // выводим значения газов в ppm Serial.print ("LPG: " ) ; Serial.print (mq2.readLPG () ) ; Serial.print (" ppm " ) ; Serial.print (" Methane: " ) ; Serial.print (mq2.readMethane () ) ; Serial.print (" ppm " ) ; Serial.print (" Smoke: " ) ; Serial.print (mq2.readSmoke () ) ; Serial.print (" ppm " ) ; Serial.print (" Hydrogen: " ) ; Serial.print (mq2.readHydrogen () ) ; Serial.println (" ppm " ) ; delay(100 ) ; }

Описание

Модуль датчика газа, основным элементом которого является газоанализатор MQ-2, позволяет выявить наличие в окружающем воздухе углеводородные газы (пропан, метан, н-бутан), дым, водород. Датчик можно использовать в проектах обнаружения утечек газа, задымления. Аналого - цифровой модуль позволяет как получать данные о содержании газов к которым восприимчив газоанализатор, так и работать напрямую с устройствами, выдавая цифровой сигнал о превышении/уменьшении порогового значения. Имеет регулятор чувствительности, что позволяет подстраивать датчик под нужды конкретного проекта. Модуль имеет два светодиода: первый (красный) - индикация питания, второй (зеленый) - индикация превышения/уменьшения порогового значения.

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

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

Диапазоны измерений:

    0-1% - пропан

    0,03-0,5% - бутан

    0,05-2% - метан

    0,03-0,5% - водород

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

    Напряжение питания: 4,8 - 5,2 В

    Потребляемый ток: 170 мА

    Время прогрева при включении: 1 мин

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

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

Плюсы использования

    Оптимальное недорогое решение для проектов обнаружения газа и дыма

    Удобный в использовании модуль за счет наличия цифрового и аналогового выводов

Минусы использования

    Перед использованием требует долгого прогрева (не менее 24 часов)

    Для снятия показаний требуется прогрев (не менее 1 минуты)

    Высокое энергопотребление (желательно дополнительное питание)

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

В примере демонстрируется подключение датчика и вывод полученных данных в монитор Serial - порта. (Пример тестировался на контроллере Smart UNO)

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

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

const int analogSignal = A0; //подключение аналогового сигналоьного пина const int digitalSignal = 8 ; //подключение цифрового сигнального пина boolean noGas; //переменная для хранения значения о присутствии газа int gasValue = 0 ; //переменная для хранения количества газа void setup() { pinMode (digitalSignal, INPUT ) ; //установка режима пина Serial .begin (9600 ) ; //инициализация Serial порта } void loop() { noGas = digitalRead (digitalSignal) ; //считываем значение о присутствии газа gasValue = analogRead (analogSignal) ; // и о его количестве //вывод сообщения Serial .print ("There is " ) ; if (noGas) Serial .print ("no gas" ) ; else Serial .print ("gas" ) ; Serial .print (", the gas value is " ) ; Serial .println (gasValue) ; delay (1000 ) ; //задержка 1 с }

Вы скажете, в интернете про датчик MQ-2 и Arduino! Но много часовой поиск информации не дал положительного результата. Все программы были не рабочими, либо не устраивали меня. Пришлось самому писать программу.

Модуль, построен на базе газоанализатора MQ-2. Позволяет обнаруживать в воздухе пропан, бутан, водород и метан.

Рисунок 1 - датчик газа MQ-2.

Характеристики

  • Напряжение питания: 5 В
  • Потребляемый ток: 160 мА

Диапазон измерений

  • Пропан: 0,2 – 5 промилле
  • Бутан: 0,3 – 5 промилле
  • Метан: 5 – 20 промилле
  • Водород: 0,3 – 5 промилле

Странно, но датчик очень хорошо реагирует на газ из зажигалки, на задымленность но на газовую печку не реагирует вообще. Чувствительность датчика можно отрегулировать переменным резистором.

Датчик подключается к ардуино следующим образом:

Схема 1 - Подключение датчика к Arduino.

Vss - подключается к +5В
Aout - A0 arduino (это аналоговый выход датчика, есть цифровой dout)
GND - к земле

Ниже привожу программу:

#define mic 5 #define analogInPin A0 void setup() { pinMode(analogInPin, INPUT); Serial.begin(9600); } void loop() { Serial.println(analogRead(analogInPin)); int sensorValue = analogRead(analogInPin); int range = map(sensorValue, 100, 145, 1, 4); switch (range) { case 1: analogWrite(mic,100); delay(100); analogWrite(mic,0); break; case 2: analogWrite(mic,50); delay(100); analogWrite(mic,0); break; case 3: analogWrite(mic,30); delay(100); analogWrite(mic,0); break; case 4: analogWrite(mic,20); delay(100); analogWrite(mic,0); break; } }

Для оповещения задымленности используется зуммер.

Новые статьи

● 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. Процедуры определения по данным, приходящим с аналогового входа:


Содержимое скетча представлено в листинге 4.10.
Листинг 4.10

#include # // пин, к которому подключен датчик #define MQ2PIN A10 MQ2 mq2 (MQ2PIN ) ; void setup () { Serial.begin(9600 ); // калибровка mq2.calibrate(); mq2.getRo(); } void loop () { if (millis()-millis_int1 >= INTERVAL_GET_DATA) { // выводим значения газа в ppm // выводим значения газа в ppm // старт интервала отсчета millis_int1=millis(); } } float get_data_ppmpropan () // получение значения float get_data_ppmmethan () { Serial.println(mq2.readRatio()); // получение значения float get_data_ppmsmoke () { Serial.println(mq2.readRatio()); // получение значения

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

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

Скачать данный скетч можно на сайте www..

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 #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 ); 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 в монитор последовательного порта.

Похожие статьи