0). Датчики газа серия MQ (Trema-модуль v2.0) Цифровой датчик с цифровой шиной
Вы скажете, в интернете про датчик 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; } }
Для оповещения задымленности используется зуммер.
Способны определять концентрацию широкого спектра газов в воздухе (природные газы, углекислый и угарный газ, углеводороды, дым, пары спирта и бензина).
- Аналоговый выход модуля «S» (Signal) - подключается к любому аналоговому входу Arduino и предназначен для снятия показаний модуля.
- Цифровой вход модуля «EN» (Enable) - подключается к любому выходу Arduino и предназначен для управления режимами работы модуля («1» - активный режим, «0» - режим энергосбережения).
- Если вход «EN» оставить неподключённым, то модуль будет находиться в активном режиме пока есть питание.
Модуль удобно подключать 3 способами, в зависимости от ситуации:
Способ - 1: Используя проводной шлейф и Piranha UNO
Используя провода «Папа - Мама », подключаем напрямую к контроллеру Piranha UNO.
![](https://i0.wp.com/iarduino.ru/img/upload/223b99863d9a3977cf4c84abcffba005.png)
Способ - 2: Используя Trema Set Shield
Модуль можно подключить к любому из аналоговых входов Trema Set Shield.
![](https://i2.wp.com/iarduino.ru/img/upload/0ed11055e97365f818e07ceb3f44679c.png)
![](https://i0.wp.com/iarduino.ru/img/upload/cc3cd5fa1cecdb5d2b9bb95354320e0c.png)
Способ - 3: Используя проводной шлейф и Shield
Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
![](https://i0.wp.com/iarduino.ru/img/upload/8b2e4b79116e4a951e434fd831abda45.png)
![](https://i2.wp.com/iarduino.ru/img/upload/c9b2935ab58a7cf73e9780f58f0fe8dc.png)
Питание:
Входное напряжение питания 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); // ждём секунду } mq2Heater.ino #includeК платам Arduino c 5 вольтовой логикой датчик можно подключить используя всего один . Для этого установите перемычку на разъём «выбор питания нагревателя».
Выведем в Serial-порт текущее значение вредных газов в ppm , при этом нагреватель всегда включён.
Датчик газа MQ-2 позволяет регистрировать концентрацию таких газов как водород, дым и горючие углеводородные газы (метан, пропан, бутан). Датчик относится к распространенному семейству датчиков MQ. Это семейство датчиков, благодаря своей низкой стоимости и простоте использования завоевало популярность. Датчик имеет аналоговый и цифровой выход. На цифровой выход сигнал подается при превышении определенного порога концентрации газа, который настраивается подстроечным резистором. Датчик прост в подключении, имеет высокую чувствительность и малое время отклика.
Датчик представляет из себя небольшую плату, с передней стороны которой расположен чувствительный газоанализатор (детектор), а на обратной стороне располагаются 4 ножки для подключения датчика, индикаторы питания и выходного сигнала, а также потенциометр.
Применяют датчики MQ-2 в системах умного дома, в системах обнаружения газа или дыма на промышленных или частных объектах, в автомобильных вентиляционных фильтрах и т.д.
Характеристики
- Напряжение питания: 5В;
- Потребляемый ток (ток нагревателя): 180мА;
- Диапазон чувствительности 300-10000 ppm;
- Газ, для которого нормируется датчик: изобутан, 1000ppm;
- Время отклика: менее 10 с;
- Рабочая температура: от -10 до +50 °C;
- Рабочая влажность воздуха: не более 95% RH;
- Интерфейс: аналоговый и цифровой;
Принцип работы
Принцип работы датчика основан на чувствительном детекторе из смеси оксидов алюминия и олова, в котором за счет нагревания происходит химическая реакция. Именно поэтому в процессе работы газоанализатор существенно нагревается, так что не стоит пугаться. В результате химической реакции изменяется сопротивление элемента и передается сигнал. В зависимости от чувствительности элемента к определенным газам достигается эффект их обнаружения.
Концентрация газа измеряется в ppm. Она расшифровывается, как parts per million (частей на миллион). Таким образом 1ppm соответствует концентрации в 0,0001%. Что бы получить точное значение измеренной концентрации газа ppm, необходимо выполнить сложное нелинейное преобразование напряжения на аналоговом выходе датчика по таблицам преобразования из документации на датчик, с учетом температуры окружающего воздуха.
С помощью потенциометра можно изменять порог чувствительности цифрового выхода датчика. Имейте ввиду что для разных газов порог чувствительности будет не один и тот же.
Индикаторы, расположенные на датчике, уведомляют нас подключенном питании и превышении порога чувствительности цифрового выхода.
Подключение
Подключить датчик можно к плате Arduino или напрямую к модулю реле. В первом случае используется аналоговый выход А0 датчика, который подключают к аналоговому входу на плате Arduino. В случае с реле используют цифровой выход датчика.
![](https://i2.wp.com/mcustore.ru/img/site/datchik-gaza-mq-135-back_s4.jpg)
Внимание. Не подавайте на датчик напряжение питания более 5В, избегайте попадания влаги и щелочи на газоанализатор, избегайте обморожения датчика при очень низких температурах.
Схема подключения представлена на картинке ниже:
![](https://i1.wp.com/mcustore.ru/img/projects/podklyuchenie_datchika_gaza_mq-2_k_arduino.png)
Программный код для Arduino IDE
Пример исходного кода проверки работоспособности датчика для Arduino представлен ниже. Код выводит в монитор порта текущее значение АЦП аналогового входа и информацию о превышении порогового значения. В строчке кода #define smokePin A0 вы можете задать номер пина Arduino, к которому подключен аналоговый выход датчика. Пороговое значение концентрации газа в воздухе вы можете задать самостоятельно.
#define smokePin A0 // определяем аналоговый выход к которому подключен датчик
int sensorThres = 400; // пороговое значение АЦП, при котором считаем что газ есть
Void setup() {
Serial.begin(9600); // Устанавливаем скорость порта 9600 бод
}
Void loop() {
int analogSensor = analogRead(smokePin); // считываем значения АЦП с аналогового входа
// к которому подключен датчик
Serial.print (analogSensor); // выводим в порт значение АЦП сигнала с датчика
// Проверяем, достигнуто ли пороговое значение
if (analogSensor > sensorThres) { // если значение больше допустимого...
Serial.println(" Gaz!"); // выводим в порт надпись, что газ есть
}
else { // иначе...
Serial.println(" normal"); // выводим в порт надпись, что газа нет
}
delay(500); // задержка в 500 миллисекунд.
- Датчик газа 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); }
После загрузки программного кода можно подышать на датчик, или же выпустить газ из зажигалки – в окне монитора последовательного порта вы увидите соответствующие значения, получаемые с датчика.
Подробнее можно посмотреть в видео приведенном ниже.
Видео: