Андрей Смирнов
Время чтения: ~8 мин.
Просмотров: 15

Расстановка точек над датчиками газа серии MQ – глубокое понимание даташита и настройка

Датчик MQ-4 обнаружит утечку бытового газа и может стать основой системы сигнализации в умном доме.%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:mq4:troyka-mq4-gas-sensor.1.jpg

Видеообзор

Подключение и настройка

Датчик газа MQ-4 подключается к управляющей электронике по 5 проводам. Для подключения используются два трёхпроводных шлейфа. Для быстрого подключения модуля к Iskra JS или Arduino используйте Troyka Shield. %D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:mq4:troyka-mq4_scheme_troyka-shiled.png

С Troyka Slot Shield можно обойтись без лишних проводов. %D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:mq4:troyka-mq4_scheme_troyka-slot-shiled.png

Пример программы для 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. Плюсы +Работает +Подробная документация +Хорошее качество пайки Минусы -Долгое время прогрева (особенность конструкции)Если дома нет кота…1

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

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

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

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

2

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

3

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

 MQ-3 — сенсор паров алкоголя MQ-5 и MQ-6 — предназначены для обнаружения пропана/бутана MQ-7 — чувствителен к угарному газу (имхо, заслуживает отдельного внимания) MQ-8 — специализируется по водороду H2 и т.д. список можно дополнить еще парой-тройкой датчиков, все они легко гуглятся.

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

4

Датчик подключается к 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.=OutputConfigPortb.=OutputConfigPortb.=OutputConfigPortb.=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.

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

5

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

6

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

7

А вот как все это работает:

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

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации