Датчик дыма mq 2 arduino. Датчики газа серия MQ (Trema-модуль v2.0)
Новые статьи
● 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 и Arduino! Но много часовой поиск информации не дал положительного результата. Все программы были не рабочими, либо не устраивали меня. Пришлось самому писать программу.
Модуль, построен на базе газоанализатора MQ-2. Позволяет обнаруживать в воздухе пропан, бутан, водород и метан.
Рисунок 1 - датчик газа MQ-2.
Характеристики
- Напряжение питания: 5 В
- Потребляемый ток: 160 мА
Диапазон измерений
- Пропан: 0,2 – 5 промилле
- Бутан: 0,3 – 5 промилле
- Метан: 5 – 20 промилле
- Водород: 0,3 – 5 промилле
Странно, но датчик очень хорошо реагирует на газ из зажигалки, на задымленность но на газовую печку не реагирует вообще. Чувствительность датчика можно отрегулировать переменным резистором.
Датчик подключается к ардуино следующим образом:
Схема 1 - Подключение датчика к Arduino.
Vss - подключается к +5В
Aout - A0 arduino (это аналоговый выход датчика, есть цифровой dout)
GND - к земле
Ниже привожу программу:
#define mic 5 #define analogInPin A0 void setup() { pinMode(analogInPin, INPUT); Serial.begin(9600); } void loop() { Serial.println(analogRead(analogInPin)); int sensorValue = analogRead(analogInPin); int range = map(sensorValue, 100, 145, 1, 4); switch (range) { case 1: analogWrite(mic,100); delay(100); analogWrite(mic,0); break; case 2: analogWrite(mic,50); delay(100); analogWrite(mic,0); break; case 3: analogWrite(mic,30); delay(100); analogWrite(mic,0); break; case 4: analogWrite(mic,20); delay(100); analogWrite(mic,0); break; } }
Для оповещения задымленности используется зуммер.
- Датчик газа MQ-2: http://ali.ski/6JRA_
- Arduino uno: http://ali.ski/gC_mOa
- Макетная плата: http://ali.ski/rq8wz8
- Контактные провода: http://ali.ski/Exjr3
- Диоды и резисторы: http://fas.st/KK7DwjyF
В этом уроке мы подключим к Arduino датчик газа. С его помощью мы сможем следить за количеством углекислого газа в помещении.
Сама плата датчика состоит из самого датчика 6 пинового который для точных показаний должен некоторое время постоять работающим и нагреться до необходимой температуры. Потенциометр для изменении чувствительности датчика. Ну и 4 пина, 2 из которых +,- и два пина один Аналоговый, другой цифровой. Следовательно и подключать нужно либо к аналоговому пину ардуино или же к цифровому пину.
Для реализации данного примера мы возьмем датчик MQ-2. Вообще датчиков MQ серии очень много, есть и датчики углекислого газа, и датчики угарного газа, и датчик паров спирта и чистоты воздуха. Можно подобрать датчик под свои нужды без проблем, но так как мы будем углекислый газ искать, поэтому нужен датчик MQ-2.
Подключать датчик будем к аналоговому пину ардуино A0. Соответственно возьмем аналоговый пин с датчика MQ-2,а не цифровой.
После правильного подключения по схеме, нужно скопировать код программы представленной ниже и загрузить в ардуино.
Const int analogInPin = A0; // Указываем пин, к которому подключен датчик const int ledPin = 13; int sensorValue = 0; // Объявляем переменную для хранения значений с датчика //и задаем ее начальное значение 0 void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); // Задаем режим для 13 пина Serial.println("MQ2 Test"); //Посылаем текст в монитор порта, чтобы следить за выполнением программы } void loop() { sensorValue = analogRead(analogInPin); //считываем значения с датчика if (sensorValue >= 350) //и если превышен заданный порог { digitalWrite(ledPin, HIGH); // то включаем светодиод. } else // а если нет { digitalWrite(ledPin, LOW); // то выключаем } Serial.print("MQ2 value= "); //Для отслеживания данных с датчика транслируем их в монитор порта Serial.println(sensorValue); delay(1000); }
После загрузки программного кода можно подышать на датчик, или же выпустить газ из зажигалки – в окне монитора последовательного порта вы увидите соответствующие значения, получаемые с датчика.
Подробнее можно посмотреть в видео приведенном ниже.
Видео:
Гуляя по каталогам китайских продавцов на 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-и. Так что без паники, это норма:)