Датчик mq 2 подключение к ардуино. Датчики газа серия MQ (Trema-модуль v2.0)
Способны определять концентрацию широкого спектра газов в воздухе (природные газы, углекислый и угарный газ, углеводороды, дым, пары спирта и бензина).
- Аналоговый выход модуля «S» (Signal) - подключается к любому аналоговому входу Arduino и предназначен для снятия показаний модуля.
- Цифровой вход модуля «EN» (Enable) - подключается к любому выходу Arduino и предназначен для управления режимами работы модуля («1» - активный режим, «0» - режим энергосбережения).
- Если вход «EN» оставить неподключённым, то модуль будет находиться в активном режиме пока есть питание.
Модуль удобно подключать 3 способами, в зависимости от ситуации:
Способ - 1: Используя проводной шлейф и Piranha UNO
Используя провода «Папа - Мама », подключаем напрямую к контроллеру Piranha UNO.
Способ - 2: Используя Trema Set Shield
Модуль можно подключить к любому из аналоговых входов Trema Set Shield.
Способ - 3: Используя проводной шлейф и Shield
Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
Питание:
Входное напряжение питания 5 В постоянного тока, подаётся на выводы «V» (Vcc) и «G» (GND) модуля.
Подробнее о модуле:
Уровень напряжения на аналоговом выходе «S» (Signal) прямо пропорционален концентрации детектируемых газов. Цифровой вход «EN» (Enable) можно не использовать - тогда модуль будет работать постоянно.
Если подключить вход модуля «EN» к любому выходу Arduino, то модулем можно управлять: логическая «1» подключит нагревательный элемент датчика к шине питания и модуль будет регистрировать концентрацию газов, логический «0» отключит нагревательный элемент и модуль перейдёт в режим энергосбережения.
Примеры:
Пример для Типа подключения 1:
int8_t gasPin = A0; // Определяем номер вывода, к которому подключен модуль void setup() { Serial.begin(9600); // Инициируем передачу данных на скорости 9600 бит/сек pinMode(gasPin, INPUT); // назначаем вывод, к которому подключен датчик, работать в режиме входа } void loop() { Serial.print("Gas volume: "); // выводим текст в монитор порта Serial.println(analogRead(gasPin)); // выводим значение с датчика delay(1000); // ждём секунду }Пример для Типа подключения 2:
int8_t gasPin = A0; // Определяем номер вывода, к которому подключен модуль int8_t gasPwr = 8; // Определяем номер вывода, к которому подключено управление нагревателя модуля void setup() { Serial.begin(9600); // Инициируем передачу данных на скорости 9600 бит/сек pinMode(gasPin, INPUT); // назначаем вывод, к которому подключен датчик, работать в режиме входа } void loop() { if (analogRead(gasPin) < 550) { // если значение с датчика ниже порога, то digitalWrite(gasPwr, LOW); // выключаем питание с нагревателя и Serial.println("GasPwr OFF"); // выводим текст в монитор порта } else { // если значение с датчика выше порога, то digitalWrite(gasPwr, HIGH); // включаем питание нагревателя, Serial.print("Gas volume: "); // выводим текст в монитор порта Serial.println(analogRead(gasPin)); // выводим значение с датчика } delay(1000); // ждём секунду }- Датчик газа 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); }
После загрузки программного кода можно подышать на датчик, или же выпустить газ из зажигалки – в окне монитора последовательного порта вы увидите соответствующие значения, получаемые с датчика.
Подробнее можно посмотреть в видео приведенном ниже.
Видео:
Новые статьи
● 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 в монитор последовательного порта.
Этот датчик, по утверждению продавца, позволяет определять факт наличия в воздухе метана, пропана, бутана, водорода и дыма, а также примерно оценивать концентрацию этих веществ в атмосфере. Датчик приобретен на 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
Вы скажете, в интернете про датчик 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; } }
Для оповещения задымленности используется зуммер.