Гуляя по каталогам китайских продавцов на E-bay случайно наткнулся на датчик газа MQ-4. Этот датчик предназначен для определения концентрации метана (CH4) в воздухе. А так как этот газ является основным компонентом бытового газа, иметь подобный датчик весьма полезно – можно собрать детектор утечки газа или что-нибудь подобное. В общем интересная штучка, особенно радует цена в $4,5 и аналоговый интерфейс общения – проблем с подключением не возникнет.
Для подключения датчика под его пузом имеются 6 выводов, 4 из которых дублируют друг друга. Поэтому для подключения используется всего 4 вывода:
N-N это выводы нагревателя. К нему подводится напряжение 5 вольт, причем неважно постоянное или переменное.
AA und B-B это электроды. Сигнал можно снимать с любого из них. Например, на схеме ниже питание подведено к A-A, а сигнал снимается с электрода B-B. Но можно и наоборот – запитывать к B-B, а сигнал снимать с А-А. Работать будет в обоих случаях. В этом сенсор чем-то похож на вакуумную электронную лампу
Резистором RL настраивается чувствительность датчика. Рекомендуется ставить в диапазоне 10к. Чувствительность датчика, если верить документации составляет от 200 до 10000 ppm.
В даташите на MQ-4 приведен график, по которому видно, что помимо метана, датчик очень хорошо реагирует на пропан (LPG), и в меньшей степени на газообразный водород, угарный газ и пары алкоголя
А вообще в семействе датчиков MQ-x имеются сенсоры специально предназначенные для обнаружения этих газов. Вот некоторые из них:
Для подключения своего датчика собрал простенькую схему со светодиодами. Четыре светодиода, каждый будет загораться при достижении определенного порога концентрации газа. Получится что-то вроде шкалы загазованности, правда безразмерной.
Датчик подключается к ADC0 (PortC.0). В качестве опорного напряжения АЦП используется внутренний ИОН на 2,54 вольта. Поэтому на резисторах R5-R6 собран делитель напряжения, чтобы на вход АЦП попадало не больше 2,5 вольт. Резистор R7 дополнительная подтяжка к земле согласно схеме из даташита, его я взял 3,3 килоома – что было под рукой.
Набросал небольшую программку для ATmega8, частота тактирования 1 МГц
$crystal = 1000000
$baud = 1200
‘конфигурация АЦП
Config Adc = Einzel , Vorteiler = Auto , Nachschlagewerke = Interne
‘подключение светодиодов
Config PortB.1 = Ausgang
Config PortB.2 = Ausgang
Config PortB.3 = Ausgang
Config PortB.4 = Ausgang
Dim In Als Ganze Zahl ‘для хранения значения полученного с АЦП
Machen
‘запуск и считывание показаний с датчика
Anfang Adc
In = Getadc(0) ‘датчик подключён к PortC.0
‘в зависимости от значения показаний зажгем светодиоды индикации
Wenn In < 700 Dann
PortB = &B00000000 ‘значение меньше порога срабатывания, все гуд
Ende Wenn
Wenn In > 700 Und In < 750 Dann ‘низкий уровень загазованности
PortB = &B00000010
Ende Wenn
Wenn In > 750 Und In < 800 Dann ‘средний уровень
PortB = &B00000110
Ende Wenn
Wenn In > 850 Und In < 900 Dann ‘загазовано чуть меньше чем полностью
PortB = &B00001110
Ende Wenn
Wenn In > 900 Dann ‘караул!
PortB = &B00011110
Ende Wenn
Drucken In ‘отсылаем показания в UART
Warten 1
Schleife
Ende
Показания с датчика будут считываться с частотой 1 раз в секунду. И в зависимости от показаний будет гореть определенное количество светодиодов или не будут гореть вовсе. Значения порогов я взял после пробного испытания и вывода показаний в UART.
Die Testschaltung auf dem Steckbrett montiert
Verlötet Sensor
Для испытаний взял обычную газовую зажигалку, в ней в качестве горючего используется пропан, который также хорошо улавливается сенсором.
А вот как все это работает:
После подачи питания, датчику необходимо время чтобы выйти на рабочий режим, примерно 10-15 секунд. Это время нужно чтобы нагреватель внутри датчика поднял температуру до необходимого значения. Кстати, сам датчик во время работы тоже не слабо нагревается, по ощущениям градусов до 50-и. Так что без паники, это норма 🙂
Источник: http://avrproject.ru/