Датчик угарного газа MQ-7: обзор, подключение и калибровка
Угарный газ (CO) — коварный враг: у него нет ни цвета, ни запаха, но он крайне токсичен. При плохой вентиляции в гараже, забитой печной трубе или тлеющих дровах концентрация CO может быстро достичь опасного уровня . Датчик MQ-7 разработан специально для обнаружения этого невидимого убийцы и может стать основой вашей системы безопасности. Разберём его устройство, особенности и способы подключения.

Что такое MQ-7 и как он работает
MQ-7 — это полупроводниковый датчик угарного газа . Его сердце — чувствительный элемент из диоксида олова (SnO₂). В чистом воздухе проводимость этого материала низкая, но при контакте с угарным газом она увеличивается — чем выше концентрация CO, тем выше проводимость .
Однако есть важный нюанс: чувствительный элемент работает только при нагреве. Для этого в датчике есть встроенный нагревательный элемент, который потребляет значительный ток (около 150–160 мА) . Поэтому:
- Датчик будет горячим при работе — это нормально.
- Требуется внешнее питание, от USB-порта Arduino может не хватить мощности.
Технические характеристики
Модуль MQ-7: что есть на плате
На большинстве модулей MQ-7, которые продаются для Arduino/ESP, вы найдёте:
- Красный светодиод — индикация питания.
- Зелёный светодиод — индикация превышения порога (загорается, когда концентрация CO выше установленного уровня).
- Потенциометр (подстроечный резистор) — позволяет регулировать порог срабатывания для цифрового выхода DOUT.
- Выводы:
Критически важная особенность: циклы нагрева
Это самый сложный момент в работе с MQ-7. Согласно даташиту производителя Winsen, датчик работает в режиме циклического нагрева:
- Низкая температура (1.5 В) — в этом режиме датчик обнаруживает CO .
- Высокая температура (5.0 В) — режим очистки, удаляет другие газы, которые могли адсорбироваться на поверхности чувствительного элемента .
В классических схемах включения (как на модулях) этот цикл реализуется аппаратно — достаточно просто подать питание 5 В, и датчик будет автоматически переключаться между нагревом и измерением . Однако если вы используете «голый» датчик (не модуль), вам придётся управлять этим циклом программно: 60 секунд нагрева 5 В (очистка), 90 секунд 1.5 В (измерение) .
Важно: многие готовые модули уже содержат всю обвязку, и для работы достаточно подать 5 В . Но перед первым использованием рекомендуется прогреть датчик 24–48 часов для стабилизации показаний .
Плюсы и минусы использования
Плюсы
- Высокая чувствительность к угарному газу .
- Быстрое время отклика .
- Удобный модуль с аналоговым и цифровым выходом .
- Долгий срок службы (до 10 лет) .
- Низкая стоимость .
Минусы
- Требует длительного прогрева перед началом работы (рекомендуется 24–48 часов) .
- Высокое энергопотребление (160 мА) — нужен хороший источник питания .
- Показания зависят от температуры и влажности .
- Для точного измерения в ppm требуется калибровка с эталонным газом .
Подключение к ESP8266 или Arduino
Схема подключения модуля
| Модуль MQ-7 | ESP8266/Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| AOUT | A0 (аналоговый вход) |
| DOUT | D2 (любой цифровой) |
Внимание: ESP8266 работает с напряжением 3.3 В, но модуль MQ-7 требует 5 В питания. При этом аналоговый выход AOUT даст напряжение до 5 В, что может повредить ESP8266. Используйте делитель напряжения (например, резисторы 10 кОм и 20 кОм) или подключайте к Arduino, который принимает 5 В.
Базовый пример кода (Arduino)
const int analogPin = A0; // AOUT подключён к A0
const int digitalPin = 8; // DOUT подключён к D8
void setup() {
Serial.begin(115200);
pinMode(digitalPin, INPUT);
Serial.println("MQ-7 датчик угарного газа");
Serial.println("Прогрев 60 секунд...");
delay(60000); // ждём прогрева
}
void loop() {
int analogValue = analogRead(analogPin);
int digitalValue = digitalRead(digitalPin);
Serial.print("Аналоговое значение: ");
Serial.print(analogValue);
Serial.print(" | Цифровой выход: ");
Serial.println(digitalValue ? "HIGH (газ)" : "LOW (норма)");
delay(1000);
}
Продвинутый пример: расчёт концентрации в ppm
Для перевода аналогового значения в ppm понадобится библиотека MQSensorsLib и калибровочные коэффициенты из даташита:
#include <MQUnifiedsensor.h>
#define Board "ESP8266"
#define Pin A0
#define Type "MQ-7"
#define Voltage_Resolution 5.0
#define ADC_Bit_Resolution 10
MQUnifiedsensor MQ7(Board, Voltage_Resolution, ADC_Bit_Resolution, Pin, Type);
void setup() {
Serial.begin(115200);
MQ7.init();
MQ7.setRegressionMethod(1);
// Коэффициенты для MQ-7 из даташита
MQ7.setA(99.042);
MQ7.setB(-1.518);
MQ7.setR0(10.0); // значение R0, полученное при калибровке
}
void loop() {
MQ7.update();
float co_ppm = MQ7.readSensor();
Serial.print("CO: ");
Serial.print(co_ppm);
Serial.println(" ppm");
delay(2000);
}
Калибровка: самый сложный момент
Без калибровки датчик может либо постоянно ложно срабатывать, либо не заметить смертельную концентрацию CO .
Грубая калибровка (без эталонного прибора)
- Прогревайте датчик не менее 10 часов на чистом воздухе.
- В конце цикла измерения запишите значение с AOUT.
- Используйте это значение как «чистый воздух» в коде .
Точная калибровка (рекомендуется)
- Найдите калиброванный CO-метр (в идеале).
- Создайте образец с известной концентрацией CO (например, 100 ppm).
- Снимите показания датчика при этой концентрации.
- Используйте эти данные для расчёта коэффициентов .
Внимание: на форумах предупреждают, что попытки калибровки «на глаз» могут дать погрешность в разы .
Применение в реальных проектах
MQ-7 идеально подходит для:
- Домашнего сигнализатора угарного газа — особенно для гаражей, котельных, домов с печным отоплением .
- Промышленных систем безопасности — контроль воздуха рабочей зоны .
- Портативных газоанализаторов .
- Систем умного дома — интеграция с Home Assistant или Telegram-оповещениями.