Компоненты · 5 мин чтения

Датчик газа MQ-2: сигнализация газа и дыма на Arduino

Как работает датчик газа MQ-2? Обнаружение пропан-бутана, метана и дыма, пины модуля, прогрев, аналоговые и цифровые показания, калибровка R0, семейство MQ и газовая сигнализация на ESP32 и Pico.

MQ-2 — дешёвый и очень распространённый датчик, который обнаруживает в воздухе горючие газы и дым. Он реагирует на сжиженный газ (пропан-бутан из баллона), пропан, бутан, метан (природный газ), водород, пары спирта и дым. В проектах на Arduino из него делают кухонные газовые сигнализации, датчики дыма и индикаторы качества воздуха. В этой статье шаг за шагом разберём, что находится внутри датчика, как правильно его подключить, почему прогрев обязателен и как понимать считанные значения.

Модуль датчика газа MQ-2
Модуль датчика газа MQ-2: под металлической сеткой находится нагреваемый чувствительный элемент; у модуля 4 пина: VCC, GND, DO и AO.

Как работает MQ-2?

Под металлической сеткой находится маленький керамический элемент с покрытием из диоксида олова (SnO₂) и нагревательная спираль, которая разогревает его до нескольких сотен градусов. В чистом воздухе сопротивление элемента высокое. Когда до него доходит горючий газ или дым, химическая реакция на поверхности снижает сопротивление; чем выше концентрация газа, тем ниже сопротивление. Модуль превращает это изменение сопротивления в напряжение с помощью делителя напряжения: чем больше газа, тем выше напряжение на пине AO.

ПараметрЗначение
Напряжение питания5 V
Ток нагревателя~150 mA (до 800 mW)
Обнаруживаемые газыСжиженный газ, пропан, бутан, метан, водород, спирт, дым
Диапазон обнаружения300–10 000 ppm
ПрогревНесколько минут при каждом включении, 24–48 часов при первом использовании
ВыходыAO (аналоговый), DO (цифровой, компаратор LM393)

Пины модуля и подключение

У самого датчика MQ-2 6 ножек, но в проектах обычно используют готовый модуль. На модуле есть нагрузочный резистор, микросхема компаратора LM393, маленький потенциометр для настройки порога, светодиод питания и светодиод тревоги. Пин AO выдаёт напряжение, пропорциональное концентрации газа, а пин DO меняет состояние, когда уровень газа превышает порог, заданный потенциометром.

Пин модуляНазначениеArduino Uno
VCCПитание (в том числе нагревателя)5V
GNDЗемляGND
AOАналоговый выход, растёт с концентрацией газаA0
DOЦифровой выход, LOW при превышении порогаD2
Модуль датчика серии MQ спереди и сзади
Обратная сторона модуля серии MQ (слева): компаратор LM393, синий потенциометр порога, светодиоды POWER и DOUT. У MQ-135 справа такая же конструкция модуля.
Чтобы настроить порог DO, прогрей датчик несколько минут в чистом воздухе, затем поверни потенциометр до положения, при котором светодиод DOUT только что погас, и доверни ещё немного. Так мелкие колебания не будут включать тревогу, а настоящий рост концентрации газа сразу зажжёт светодиод.

Почему важен прогрев?

Чувствительный элемент правильно реагирует, только когда достигает рабочей температуры. В первые минуты после включения значение AO сначала высокое, а потом медленно снижается и стабилизируется; показания за это время вводят в заблуждение. Поэтому в коде лучше пропускать проверку тревоги первые 1–3 минуты. Новый датчик перед первым использованием рекомендуется 24–48 часов держать включённым без перерыва (прожиг, burn-in), чтобы значения стали стабильными. Пока работает нагреватель, металлическая сетка заметно нагревается; это нормально, но не клади рядом с датчиком горючие материалы.

Сигнализация газа и дыма на Arduino

Код ниже считывает аналоговое значение и выводит его в монитор порта, а также проверяет пин DO. Если аналоговое значение превышает порог или на пине DO появляется LOW, включается зуммер:

C++ (Arduino IDE)
1const int AO_PIN = A0;
2const int DO_PIN = 2;
3const int BUZZER = 8;
4const int LIMIT = 400;          // analog eşik (0–1023) / analog threshold
5
6void setup() {
7  Serial.begin(9600);
8  pinMode(DO_PIN, INPUT);
9  pinMode(BUZZER, OUTPUT);
10  delay(60000);                 // 1 dk ön ısıtma / 1 min warm-up
11}
12
13void loop() {
14  int value = analogRead(AO_PIN);
15  bool gas = digitalRead(DO_PIN) == LOW;   // çoğu modülde LOW = gaz / LOW = gas on most modules
16
17  Serial.println(value);
18
19  if (value > LIMIT || gas) {
20    tone(BUZZER, 2000, 300);    // alarm sesi / alarm tone
21  }
22  delay(500);
23}

Значение 400 здесь — не жёсткое правило: в чистом воздухе показание может быть от 100 до 300 в зависимости от датчика, температуры и влажности в комнате. Сначала дай датчику поработать несколько минут и посмотри значение в чистом воздухе в мониторе порта, затем поставь порог заметно выше. Для проверки достаточно на мгновение поднести к датчику газ из зажигалки, не поджигая его; значение вырастет за несколько секунд.

От аналогового значения к ppm: калибровка R0

На модуле датчик вместе с нагрузочным резистором (RL, на большинстве модулей 1 kΩ) образует делитель напряжения. По напряжению на AO можно вычислить сопротивление датчика (Rs). Графики в даташите показывают концентрацию газа не в зависимости от самого Rs, а в зависимости от отношения Rs/R0; R0 — это сопротивление датчика в среде с 1000 ppm водорода, а в чистом воздухе Rs/R0 составляет около 9,8. Поэтому R0 находят так: измеряют датчик в чистом воздухе и делят результат на 9,8:

C++ (Arduino IDE)
1const float RL = 1.0;           // yük direnci (kΩ) / load resistor (kΩ)
2const float CLEAN_AIR = 9.8;    // temiz havada Rs/R0 / Rs/R0 in clean air
3float R0;
4
5float readRs() {
6  float v = analogRead(A0) * 5.0 / 1023.0;
7  if (v < 0.01) v = 0.01;       // sıfıra bölmeyi önle / avoid dividing by zero
8  return RL * (5.0 - v) / v;    // bölücüden Rs / Rs from the divider
9}
10
11void setup() {
12  Serial.begin(9600);
13  delay(60000);                 // ön ısıtma / warm-up
14  float sum = 0;
15  for (int i = 0; i < 50; i++) {
16    sum += readRs();
17    delay(100);
18  }
19  R0 = (sum / 50) / CLEAN_AIR;  // temiz havada kalibrasyon / clean-air calibration
20}
21
22void loop() {
23  float ratio = readRs() / R0;  // gaz arttıkça küçülür / falls as gas rises
24  Serial.println(ratio);
25  delay(1000);
26}

Если отношение около 9,8, воздух чистый; падение ниже 1 означает высокую концентрацию газа. Чтобы перевести это отношение в ppm, используют логарифмические кривые из даташита; в библиотеках вроде MQUnifiedsensor эти кривые уже готовы к использованию. И всё же считай результат приблизительным: на показания влияют температура, влажность и возраст датчика, а поскольку MQ-2 реагирует сразу на много газов, он не может точно сказать, какой именно газ измеряет. Полезно добавить DHT11, чтобы следить за температурой и влажностью.

MQ-2 — датчик для обучения и хобби, а не сертифицированный газоанализатор. Никогда не используй его дома как единственную защиту от утечки газа или отравления угарным газом; для этого нужны промышленные детекторы, соответствующие стандартам (например, EN 50194 или EN 50291). Считай свою сигнализацию дополнительной системой рядом с ними.

Семейство датчиков MQ: какой выбрать?

ДатчикНаибольшая чувствительностьТипичное применение
MQ-2Сжиженный газ, пропан, метан, водород, дымОбщая сигнализация газа и дыма
MQ-3СпиртАлкотестер
MQ-4Метан (природный газ)Сигнализация утечки природного газа
MQ-5Сжиженный газ, природный газКухонная газовая сигнализация
MQ-7Угарный газ (CO)Контроль CO (нужен циклический режим нагревателя)
MQ-9CO и горючие газыРядом с плитами и котлами
MQ-135Аммиак, бензол, дым, NOxКачество воздуха в помещении

MQ-2 с ESP32 и Raspberry Pi Pico

Нагревателю MQ-2 нужно 5 V, поэтому пин VCC модуля подключи к пину VIN (5V) на ESP32. Но при питании модуля от 5 V выход AO может подниматься до 5 V, а аналоговые входы ESP32 и Pico принимают не больше 3,3 V. Поставь между AO и аналоговым пином делитель напряжения из резисторов 10 kΩ и 20 kΩ, чтобы снизить сигнал до безопасного уровня. С ESP32 легко отправить на телефон уведомление при обнаружении газа или включить вытяжной вентилятор через реле. На Raspberry Pi Pico та же сигнализация на MicroPython выглядит так:

MicroPython
1from machine import ADC, Pin
2import time
3
4gas = ADC(26)                  # GP26 (ADC0), AO bölücü üzerinden / AO through a divider
5buzzer = Pin(15, Pin.OUT)
6LIMIT = 30000                  # 0–65535 arası eşik / threshold
7
8time.sleep(60)                 # ön ısıtma / warm-up
9while True:
10    value = gas.read_u16()
11    print(value)
12    buzzer.value(1 if value > LIMIT else 0)
13    time.sleep(0.5)

Идеи проектов с MQ-2

  • Кухонная газовая сигнализация: включает зуммер и красный светодиод при утечке баллонного или природного газа.
  • Датчик дыма: система, которая предупреждает, когда в мастерской появляется дым от пайки или запах гари.
  • Автоматическая вентиляция: схема, которая через реле включает вытяжной вентилятор, когда уровень газа растёт.
  • Сигнализация пламени и газа: объедини MQ-2 с датчиком пламени, чтобы следить сразу за обеими опасностями.
  • Детектор на ESP32 с уведомлениями: отправляй сообщение в Telegram на телефон, когда обнаружен газ.
  • Индикатор качества воздуха: показывай измеренное отношение графиком на OLED-дисплее.

Частые ошибки и как их исправить

  • Тревога сразу после включения: датчик ещё не прогрелся; пропускай проверку тревоги первые 1–3 минуты.
  • Значение не меняется: к аналоговому входу подключён пин DO вместо AO или на модуль не приходит 5 V.
  • Светодиод DOUT горит всё время: порог на потенциометре слишком низкий; в чистом воздухе крути его, пока светодиод не погаснет.
  • Значения плавают в течение дня: меняются температура и влажность; время от времени заново настраивай порог в чистом воздухе.
  • На ESP32 аналоговое значение всё время максимальное: сигнал AO на 5 V подключён напрямую; используй делитель напряжения.
  • Батарея быстро садится: нагреватель постоянно потребляет около 150 mA; MQ-2 не подходит для долгой работы от батарей.

MQ-2 вместе с зуммером и светодиодом — самый простой путь от датчиков к настоящей системе оповещения. В приложении BlueGrays есть основы работы с датчиками газа, сигнализация с датчиками пламени и газа и сигнализация-детектор газа и дыма на ESP32 с MQ-2, со схемами подключения и кодом.

Частые вопросы

Какие газы обнаруживает MQ-2?

MQ-2 чувствителен к сжиженному газу, пропану, бутану, метану (природному газу), водороду, парам спирта и дыму. На угарный газ он реагирует лишь слабо. Поскольку датчик реагирует сразу на много газов, сам по себе он не может определить, какой газ присутствует.

Сколько времени MQ-2 нужно на прогрев?

При каждом включении подожди несколько минут (на практике 1–3 минуты), чтобы показания стабилизировались. Новый датчик перед первым использованием рекомендуется 24–48 часов держать включённым без перерыва, чтобы результаты были максимально стабильными.

Для утечек природного газа лучше MQ-2 или MQ-4?

MQ-2 тоже обнаруживает метан, но он реагирует на многие газы. MQ-4 избирательнее к природному газу (метану), поэтому подходит лучше. В любом случае не используй хобби-датчик вместо сертифицированного газоанализатора.

Можно ли измерять угарный газ с помощью MQ-2?

MQ-2 реагирует на угарный газ лишь слабо. Для CO используют MQ-7, нагреватель которого попеременно работает на высоком и низком напряжении; но ради безопасности всегда используй детектор CO, соответствующий стандарту EN 50291.

Нормально ли, что датчик нагревается?

Да. Нагреватель внутри всё время держит чувствительный элемент при высокой температуре, поэтому металлическая сетка на ощупь заметно горячая. Держи датчик подальше от горючих материалов и не трогай его во время работы.

Можно ли питать MQ-2 от батарей?

Можно, но недолго: нагреватель постоянно потребляет около 150 mA. Пауэрбанка на 2000 mAh хватит примерно на 13 часов. Время работы своего проекта можно рассчитать в утилите расчёта времени работы от батареи; там, где нужен постоянный контроль, используй сетевой адаптер.

Все проекты
Работа с датчиком газа
#51Новичок
Premium

Работа с датчиком газа

Маленький страж, который замечает утечку газа на кухне раньше тебя. Датчик газа всё время «принюхивается» к воздуху; пока всё в порядке, горит зелёный светодиод, а когда газа в воздухе становится боль

4.6(37)
50
Сигнализация пламени и газа
#52Продвинутый
Premium

Сигнализация пламени и газа

Маленький страж, который сразу предупреждает, когда где-то утекает газ или появляется пламя. Датчик газа следит за газом в воздухе, а датчик пламени — за светом огня; пока всё в порядке, горит зелёный

4.8(52)
67
Сигнализация газа и дыма MQ-2 на ESP32
#122Средний

Сигнализация газа и дыма MQ-2 на ESP32

В этом проекте модуль датчика газа MQ-2 обнаруживает горючие газы (сжиженный газ, метан, пропан) и дым, а при обнаружении пассивный зуммер играет тревогу, похожую на сирену. Цифровой пороговый выход датчика (DO) подключён к GPIO 4 у ESP32; когда газ или дым превышают порог, DO переходит в LOW, и срабатывает тревога. Чувствительность настраивается потенциометром модуля. Пассивный зуммер управляется через tone() и даёт сирену на двух частотах.

4.7(28)
43