Подключение датчика газа MQ-2 к Arduino
Датчик газа 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. В случае с реле используют цифровой выход датчика.
Внимание. Не подавайте на датчик напряжение питания более 5В, избегайте попадания влаги и щелочи на газоанализатор, избегайте обморожения датчика при очень низких температурах.
Схема подключения представлена на картинке ниже:
Программный код для 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 миллисекунд.
}