Датчик MQ-4 обнаружит утечку бытового газа и может стать основой системы сигнализации в умном доме.
Видеообзор
Подключение и настройка
Датчик газа MQ-4 подключается к управляющей электронике по 5 проводам. Для подключения используются два трёхпроводных шлейфа. Для быстрого подключения модуля к Iskra JS или Arduino используйте Troyka Shield.
С Troyka Slot Shield можно обойтись без лишних проводов.
Пример программы для Arduino
Для обладателей платформ Arduino выведем в Serial-порт текущее значение вредных газов в ppm
, управляя нагревателем. Для запуска примера скачайте и установите библиотеку TroykaMQ
- mq4Heater.ino
-
// библиотека для работы с датчиками MQ (Troyka-модуль)#include // имя для пина, к которому подключен датчик#define PIN_MQ4 A0// имя для пина, к которому подключен нагреватель датчика#define PIN_MQ4_HEATER 13 // создаём объект для работы с датчиком// и передаём ему номер пина выходного сигнала и нагревателя MQ4 mq4(PIN_MQ4, PIN_MQ4_HEATER); void setup(){// открываем последовательный порт Serial.begin(9600);// включаем нагреватель mq4.heaterPwrHigh(); Serial.println("Heated sensor");} void loop(){// если прошёл интервал нагрева датчика// и калибровка не была совершенаif(!mq4.isCalibrated()&& mq4.heatingCompleted()){// выполняем калибровку датчика на чистом воздухе mq4.calibrate();// выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт Serial.print("Ro = "); Serial.println(mq4.getRo());}// если прошёл интервал нагрева датчика// и калибровка была совершенаif(mq4.isCalibrated()&& mq4.heatingCompleted()){// выводим отношения текущего сопротивление датчика// к сопротивлению датчика в чистом воздухе (Rs/Ro) Serial.print("Ratio: "); Serial.print(mq4.readRatio());// выводим значения газов в ppm// выводим значения газов в ppm Serial.print(" Methane: "); Serial.print(mq4.readMethane()); Serial.println(" ppm "); delay(100);}}
К платам Arduino c 5 вольтовой логикой датчик можно подключить используя всего один трёхпроводной шлейф. Для этого установите перемычку на разъём «выбор питания нагревателя».
Выведем в Serial-порт текущее значение вредных газов в ppm
, при этом нагреватель всегда включён.
- mq4.ino
-
// библиотека для работы с датчиками MQ (Troyka-модуль)#include //имя для пина, к которому подключен датчик#define PIN_MQ4 A0// создаём объект для работы с датчиком и передаём ему номер пина MQ4 mq4(PIN_MQ4); void setup(){// открываем последовательный порт Serial.begin(9600);// перед калибровкой датчика прогрейте его 60 секунд// выполняем калибровку датчика на чистом воздухе mq4.calibrate();// выводим сопротивление датчика в чистом воздухе (Ro) в serial-порт Serial.print("Ro = "); Serial.println(mq4.getRo());} void loop(){// выводим отношения текущего сопротивление датчика// к сопротивление датчика в чистом воздухе (Rs/Ro) Serial.print("Ratio: "); Serial.print(mq4.readRatio());// выводим значения метана в ppm Serial.print(" Methane: "); Serial.print(mq4.readMethane()); Serial.println(" ppm "); delay(100);}
Элементы платы
Датчик газа MQ-4
Датчик MQ-4 относиться к полупроводниковым приборам. Принцип работы датчика основан на изменении сопротивления тонкопленочного слоя диоксида олова SnO2 при контакте с молекулами определяемого газа. Чувствительный элемент датчика состоит из керамической трубки с покрытием Al2O3 и нанесенного на неё чувствительного слоя диоксида олова. Внутри трубки проходит нагревательный элемент, который нагревает чувствительный слой до температуры, при которой он начинает реагировать на определяемый газ. Чувствительность к разным газам достигается варьированием состава примесей в чувствительном слое.
Выбор режима питания нагревателя
В сенсоре предусмотрено два режима работы, переключаемых джампером.
- Нагреватель датчика постоянно включён. Таким образом можно обойтись одним трёхпроводным шлейфом.
- Управление нагревателем программно.
Контакты подключения трёхпроводных шлейфов
1 группа
- Сигнальный (S) — Выходной сигнал сенсора. Подключите к аналоговому входу микроконтроллера.
- Питание (V) — Питание датчика. Соедините с рабочим напряжением микроконтроллера.
- Земля (G) — Соедините с пином
GND
микроконтроллера.
2 группа
- Сигнальный (E) — Управление питанием нагревателя. Подключите к цифровому пину микроконтроллера.
- Питание (H) — Питание нагревателя. Соедините с пином
5V
- Земля (G) — Соедините с пином
GND
микроконтроллера..
Принципиальная и монтажная схемы
Диапазон измерений
- Метан: 200–10000 ppm
Характеристики
- Напряжение питания нагревателя: 5 В
- Напряжение питания датчика: 3,3–5 В
- Потребляемый ток: 150 мА
- Габариты: 25,4×25,4 мм
Ресурсы
- Датчик газа MQ4 (Troyka-модуль) в магазине.
- Описание библиотеки для Iskra JS
- Библиотека для Arduino
- Векторное изображение датчика газа MQ4 (Troyka-модуль)
- Datasheet на датчик MQ4
- Линейная и логарифмическая аппроксимация датчика MQ4
- Цена: $3,5
Кратко. Если радиолюбитель — брать. Если нет — бесполезная штука. Теперь сама предыстория. У моего товарища машина работает на газовом оборудовании. Однажды, придя в гараж, ему послышался запах газа. Проветрив помещение, он повез авто на сервис, где продиагностировали газовое оборудование, но утечек не нашли. Для самоуспакоения он попросил найти сигнализатор утечки газа. В белорусских интернет-магазинах ценник был около 50$. Потом я посмотрел китайские интернет-магазины. Готовое устройство стоило около 15$. Там же наткнулся на датчик газа MQ-4. А ведь это идея, подумал я. Теперь можно сделать любое устройство, даже такое, которое позволяет отправлять смс сигнал о загазованности. Просмотрев даташит, принял решение брать. Но для экономии времени на пайку, купил его в виде готового шилдла для Arduino, где уже был распаян резистор для регулировки чувствительности. Заказал 18 ноября, и уже 14 декабря датчик был у меня. Пришел он плотно замотанный во много слоев скотчем и в пакете с вот такой наклейкой. Сразу же решил проверить работу. Оказалось, что Atmega16, на с которой я планировал испытать датчик уже была использована в другом проекте. Но под рукой оказался MSP430 Launchpad от TI. Это даже лучше! По крайней мере это сэкономит кучу времени на пайку и написание кода. Чтобы запустить датчик газа требуется всего 3 провода. Первый провод это 5В (что бы было быстрее, я запитался от USB, но это очень плохой вариант), второй провод это минус, третий провод это аналоговый выход. Я подключил его к выводу P1.0. Выглядит это вот так «На коленке» была написана программа для Energia IDE, которая выводит показания в терминал.Код для Energia Принцип работы программы такой: считываем показания датчика с пина P1.0 и пишем их в серийный порт. Эти значения можно просмотреть нажав на компьютере Shift+Ctl+M Пишем, подключаем и прошиваем. В начале работы датчик необходимо прогреть напряжением 5В в течение 3-х минут, чтобы его температура достигла 50 градусов. Для снятия точных показаний время прогрева должно составлять 24 часа. Я начал снимать показания через 5 минут после включения.После прогрева Потом поднес зажигалку и выпустил на датчик газГаз с зажигалки Все это снял на видео. После того, как я убедился в работоспособности датчика, буду делать устройство-сигнализатор на основе Atmega16. Плюсы +Работает +Подробная документация +Хорошее качество пайки Минусы -Долгое время прогрева (особенность конструкции)Если дома нет кота…
Гуляя по каталогам китайских продавцов на E-bay случайно наткнулся на датчик газа MQ-4. Этот датчик предназначен для определения концентрации метана (CH4) в воздухе. А так как этот газ является основным компонентом бытового газа, иметь подобный датчик весьма полезно — можно собрать детектор утечки газа или что-нибудь подобное. В общем интересная штучка, особенно радует цена в $4,5 и аналоговый интерфейс общения — проблем с подключением не возникнет.
Для подключения датчика под его пузом имеются 6 выводов, 4 из которых дублируют друг друга. Поэтому для подключения используется всего 4 вывода:
Н-Н это выводы нагревателя. К нему подводится напряжение 5 вольт, причем неважно постоянное или переменное.
А-А и В-В это электроды. Сигнал можно снимать с любого из них. Например, на схеме ниже питание подведено к A-A, а сигнал снимается с электрода B-B. Но можно и наоборот — запитывать к B-B, а сигнал снимать с А-А. Работать будет в обоих случаях. В этом сенсор чем-то похож на вакуумную электронную лампу
В даташите на 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=‘конфигурация АЦПConfigAdc=Single, Prescaler = Auto , Reference =‘подключение светодиодовConfigPortb.1 =OutputConfigPortb.2 =OutputConfigPortb.3 =OutputConfigPortb.4 =Dim W AsInteger‘запуск и считывание показаний с датчикаStartAdc W =Getadc()‘в зависимости от значения показаний зажгем светодиоды индикацииIf W < 700 ThenPortb=&B00000000 ‘значение меньше порога срабатывания, все гудEndIf W > 700 And W < 750 Then‘низкий уровень загазованностиPortb=&B00000010EndIf W > 750 And W < 800 Then‘средний уровеньPortb=&B00000110EndIf W > 850 And W < 900 Then‘загазовано чуть меньше чем полностьюPortb=&B00001110EndIf W > 900 Then‘караул!Portb=&B00011110EndPrint W WaitEnd
Показания с датчика будут считываться с частотой 1 раз в секунду. И в зависимости от показаний будет гореть определенное количество светодиодов или не будут гореть вовсе. Значения порогов я взял после пробного испытания и вывода показаний в UART.
Тестовая схема собранная на макетке
Припаянный датчик
Для испытаний взял обычную газовую зажигалку, в ней в качестве горючего используется пропан, который также хорошо улавливается сенсором.
А вот как все это работает:
После подачи питания, датчику необходимо время чтобы выйти на рабочий режим, примерно 10-15 секунд. Это время нужно чтобы нагреватель внутри датчика поднял температуру до необходимого значения. Кстати, сам датчик во время работы тоже не слабо нагревается, по ощущениям градусов до 50-и. Так что без паники, это норма 🙂
Скомпилированная прошивка
Даташит на датчик MQ-4
Источник: http://avrproject.ru/
Используемые источники:
- http://wiki.amperka.ru/продукты:mq4
- https://mysku.ru/blog/ebay/21130.html
- https://meandr.org/archives/8932