Этот датчик, по утверждению продавца, позволяет определять факт наличия в воздухе метана, пропана, бутана, водорода и дыма, а также примерно оценивать концентрацию этих веществ в атмосфере. Датчик приобретен на 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 секунд, а примерно пол часа. При размещении датчика следует иметь в виду, что метан и, тем белее, водород имеют плотность меньше плотности воздуха, а потому будут собираться в верхней части помещения. Метан является основным компонентом природного газа, который подается по газовой распределительной сети. Так же себя поведет и горячий, насыщенный дымом, воздух при пожаре. Пропан и бутан, которые используются в горелках с баллонным питанием, гораздо плотнее воздуха и будут собираться в нижней части помещения. Так же интересную информацию по аналогичным датчикам можно найти в других источниках .
Источники
- http://radioskot.ru/publ/nachinajushhim/arduino_uno_dlja_nachinajushhikh/22-1-0-1055
- http://caravaning.in.ua/forum/viewtopic.php?p=128850
- http://cxem.net/arduino/arduino117.php
К платам Arduino c 5 вольтовой логикой датчик можно подключить используя всего один . Для этого установите перемычку на разъём «выбор питания нагревателя».
Выведем в Serial-порт текущее значение вредных газов в ppm , при этом нагреватель всегда включён.
mq2.ino // библиотека для работы с датчиками MQ (Troyka-модуль) #includeНовые статьи
● 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
Загрузим скетч на плату 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
Загрузим скетч на модуль 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-и. Так что без паники, это норма:)