THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

Этот датчик, по утверждению продавца, позволяет определять факт наличия в воздухе метана, пропана, бутана, водорода и дыма, а также примерно оценивать концентрацию этих веществ в атмосфере. Датчик приобретен на 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 ) ; }

Новые статьи

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

Датчик газа MQ-2 позволяет регистрировать концентрацию таких газов как водород, дым и горючие углеводородные газы (метан, пропан, бутан). Датчик относится к распространенному семейству датчиков MQ. Это семейство датчиков, благодаря своей низкой стоимости и простоте использования завоевало популярность. Датчик имеет аналоговый и цифровой выход. На цифровой выход сигнал подается при превышении определенного порога концентрации газа, который настраивается подстроечным резистором. Датчик прост в подключении, имеет высокую чувствительность и малое время отклика.

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

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

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

  • Напряжение питания: 5В;
  • Потребляемый ток (ток нагревателя): 180мА;
  • Диапазон чувствительности 300-10000 ppm;
  • Газ, для которого нормируется датчик: изобутан, 1000ppm;
  • Время отклика: менее 10 с;
  • Рабочая температура: от -10 до +50 °C;
  • Рабочая влажность воздуха: не более 95% RH;
  • Интерфейс: аналоговый и цифровой;

Принцип работы

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

Концентрация газа измеряется в ppm. Она расшифровывается, как parts per million (частей на миллион). Таким образом 1ppm соответствует концентрации в 0,0001%. Что бы получить точное значение измеренной концентрации газа ppm, необходимо выполнить сложное нелинейное преобразование напряжения на аналоговом выходе датчика по таблицам преобразования из документации на датчик, с учетом температуры окружающего воздуха.

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

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

Подключение

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


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

Схема подключения представлена на картинке ниже:


Программный код для Arduino IDE

Пример исходного кода проверки работоспособности датчика для Arduino представлен ниже. Код выводит в монитор порта текущее значение АЦП аналогового входа и информацию о превышении порогового значения. В строчке кода #define smokePin A0 вы можете задать номер пина Arduino, к которому подключен аналоговый выход датчика. Пороговое значение концентрации газа в воздухе вы можете задать самостоятельно.

#define smokePin A0 // определяем аналоговый выход к которому подключен датчик
int sensorThres = 400; // пороговое значение АЦП, при котором считаем что газ есть

Void setup() {
Serial.begin(9600); // Устанавливаем скорость порта 9600 бод
}

Void loop() {
int analogSensor = analogRead(smokePin); // считываем значения АЦП с аналогового входа
// к которому подключен датчик
Serial.print (analogSensor); // выводим в порт значение АЦП сигнала с датчика

// Проверяем, достигнуто ли пороговое значение
if (analogSensor > sensorThres) { // если значение больше допустимого...
Serial.println(" Gaz!"); // выводим в порт надпись, что газ есть
}
else { // иначе...
Serial.println(" normal"); // выводим в порт надпись, что газа нет
}
delay(500); // задержка в 500 миллисекунд.

Гуляя по каталогам китайских продавцов на E-bay случайно наткнулся на датчик газа MQ-4. Этот датчик предназначен для определения концентрации метана (CH4) в воздухе. А так как этот газ является основным компонентом бытового газа, иметь подобный датчик весьма полезно - можно собрать детектор утечки газа или что-нибудь подобное. В общем интересная штучка, особенно радует цена в $4,5 и аналоговый интерфейс общения - проблем с подключением не возникнет.

Для подключения датчика под его пузом имеются 6 выводов, 4 из которых дублируют друг друга. Поэтому для подключения используется всего 4 вывода:

Н-Н это выводы нагревателя. К нему подводится напряжение 5 вольт, причем неважно постоянное или переменное.

А-А и В-В это электроды. Сигнал можно снимать с любого из них. Например, на схеме ниже питание подведено к A-A, а сигнал снимается с электрода B-B. Но можно и наоборот - запитывать к B-B, а сигнал снимать с А-А. Работать будет в обоих случаях. В этом сенсор чем-то похож на вакуумную электронную лампу

Резистором RL настраивается чувствительность датчика. Рекомендуется ставить в диапазоне 10к. Чувствительность датчика, если верить документации составляет от 200 до 10000 ppm (что это?)

В даташите на MQ-4 приведен график, по которому видно, что помимо метана, датчик очень хорошо реагирует на пропан (LPG), и в меньшей степени на газообразный водород, угарный газ и пары алкоголя


А вообще в семействе датчиков MQ-x имеются сенсоры специально предназначенные для обнаружения этих газов. Вот некоторые из них:

MQ-3 - сенсор паров алкоголя

MQ-5 и MQ-6 - предназначены для обнаружения пропана/ бутана

MQ-7 - чувствителен к угарному газу (имхо, заслуживает отдельного внимания)

MQ-8 - специализируется по водороду H2

И т.д. список можно дополнить еще парой-тройкой датчиков, все они легко гуглятся.

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


Датчик подключается к ADC0 (PortC.0). В качестве опорного напряжения АЦП используется внутренний ИОН на 2,54 вольта. Поэтому на резисторах R5-R6 собран делитель напряжения, чтобы на вход АЦП попадало не больше 2,5 вольт. Резистор R7 дополнительная подтяжка к земле согласно схеме из даташита, его я взял 3,3 килоома - что было под рукой.

Набросал небольшую программку для ATmega8, частота тактирования 1 МГц

$regfile = "m8def.dat"
$crystal = 1000000
$baud = 1200

"конфигурация АЦП
Config Adc = Single , Prescaler = Auto , Reference = Internal

"подключение светодиодов
Config Portb . 1 = Output
Config Portb . 2 = Output
Config Portb . 3 = Output
Config Portb . 4 = Output

Dim W As Integer "для хранения значения полученного с АЦП

Do

"запуск и считывание показаний с датчика
Start Adc
W = Getadc (0 ) "датчик подключён к PortC.0

"в зависимости от значения показаний зажгем светодиоды индикации
If W < 700 Then
Portb = & B00000000 "значение меньше порога срабатывания, все гуд
End If

If W > 700 And W < 750 Then "низкий уровень загазованности
Portb = & B00000010
End If

If W > 750 And W < 800 Then "средний уровень
Portb = & B00000110
End If

If W > 850 And W < 900 Then "загазовано чуть меньше чем полностью
Portb = & B00001110
End If

If W > 900 Then "караул!
Portb = & B00011110
End If

Print W "отсылаем показания в UART

Wait 1

Loop

End

Показания с датчика будут считываться с частотой 1 раз в секунду. И в зависимости от показаний будет гореть определенное количество светодиодов или не будут гореть вовсе. Значения порогов я взял после пробного испытания и вывода показаний в UART.

Тестовая схема собранная на макетке


Припаянный датчик


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


После подачи питания, датчику необходимо время чтобы выйти на рабочий режим, примерно 10-15 секунд. Это время нужно чтобы нагреватель внутри датчика поднял температуру до необходимого значения. Кстати, сам датчик во время работы тоже не слабо нагревается, по ощущениям градусов до 50-и. Так что без паники, это норма:)

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама