Датчики газа MQ-2 и MQ-135 — что они реально меряют
Датчики газа серии MQ — самые популярные газовые сенсоры для Arduino. Они дёшевы и просты в подключении, но обещания «обнаруживает 10 газов» скрывают нюансы. MQ-2 не различает метан от пропана, а MQ-135 не измеряет CO₂ в ppm. Разберёмся, что они реально умеют.
Что внутри датчика MQ
Внутри металлической сетки — керамическая трубка с покрытием из диоксида олова (SnO₂). Нагреватель раскаляет слой до 200–400 °C, и сопротивление меняется в присутствии целевых газов. Это резистивный датчик: на выходе напряжение делителя, а не цифровой сигнал. Нагреватель потребляет до 800 мВт — датчик тёплый на ощупь.
MQ-2: горючие газы и дым
MQ-2 по datasheet Hanwei Electronics обнаруживает LPG, пропан, бутан, метан, водород, алкоголь и дым. Диапазон: 200–5000 ppm для LPG и пропана, 5000–20000 ppm для метана, 300–5000 ppm для H₂, 100–2000 ppm для алкоголя. Рекомендуемая RL — 20 кОм (5–47 кОм), Rs в воздухе — 3–30 кОм при 1000 ppm изобутана.
MQ-135: воздух в помещении
MQ-135 предназначен для контроля качества воздуха: NH₃, NOx, бензол, алкоголь, дым и CO₂. Диапазон для аммиака — 10–300 ppm, для бензола — 10–1000 ppm, алкоголя — 10–300 ppm. Но «CO₂» в datasheet — косвенная зависимость, не селективное измерение. Для точного CO₂ нужен NDIR-сенсор (MH-Z19). Rs в воздухе — 30–200 кОм при 100 ppm NH₃.
Таблица характеристик
| Параметр | MQ-2 | MQ-135 |
|---|---|---|
| Питание (Vc) | 5 В ±0,1 | 5 В ±0,1 |
| Нагреватель (VH) | 5 В ±0,1 | 5 В ±0,1 |
| Сопротивление RH | 33 Ом ±5 % | 33 Ом ±5 % |
| Потребление | <800 мВт | <800 мВт |
| Температура | −20…+50 °C | −10…+45 °C |
| Влажность | <95 % RH | <95 % RH |
| Слой | SnO₂ | SnO₂ |
| Целевые газы | LPG, пропан, бутан, метан, H₂, алкоголь, дым | NH₃, NOx, бензол, алкоголь, дым, CO₂ |
| LPG/пропан | 200–5000 ppm | — |
| NH₃ | — | 10–300 ppm |
| Алкоголь | 100–2000 ppm | 10–300 ppm |
| Прогрев | ≥24 ч | ≥24 ч |
| RL (рекоменд.) | 20 кОм (5–47) | 20 кОм (10–47) |
| Rs (воздух) | 3–30 кОм | 30–200 кОм |
Параметры — по datasheet Hanwei Electronics (MQ-2 и MQ-135).
Что значит «широкий спектр»
Оба датчика — полупроводниковые резистивные. Они не различают газы: сопротивление SnO₂ падает при контакте с любым восстановительным газом. Если в воздухе одновременно есть алкоголь и пропан — датчик покажет суммарную реакцию. Калибровка по эталонному газу: для MQ-2 — 1000 ppm LPG, для MQ-135 — 100 ppm NH₃. Без калибровки показания — относительные, «больше/меньше», а не ppm.
Подключение к Arduino
Модуль поставляется на плате с компаратором LM393 и подстроечным резистором. 4 пина: VCC, GND, D0 (цифровой), A0 (аналоговый). VCC — 5 В (не 3,3 В), A0 — аналоговый пин A0, D0 — цифровой с порогом подстроечника.
// MQ-2 / MQ-135: чтение аналогового выхода
// A0 модуля → A0 Arduino
const int gasPin = A0;
void setup() {
Serial.begin(9600);
Serial.println("Запуск датчика. Прогрев 24 часа!");
}
void loop() {
int raw = analogRead(gasPin); // 0..1023
float voltage = raw * (5.0 / 1023.0); // в вольты
Serial.print("Raw: "); Serial.print(raw);
Serial.print(" | V: "); Serial.println(voltage, 2);
// Меньше напряжение = больше газа (SnO2 падает при газе)
delay(1000);
}
Важно: меньше напряжение на A0 = больше газа. При росте концентрации сопротивление SnO₂ падает, и напряжение делителя уменьшается.
Подключение к ESP32
ADC ESP32 работает от 0 до 3,3 В. Подключать A0 напрямую нельзя — напряжение может достигать 5 В. Нужен делитель: резисторы 2 кОм и 3,3 кОм дают ~3,1 В при 5 В на A0 (Vout = 5 × 3300/(2000+3300) = 3,11 В).
// MQ-2 на ESP32 через делитель
// A0 → делитель → GPIO34 (ADC1_CH6)
const int gasPin = 34;
void setup() {
Serial.begin(115200);
analogReadResolution(12); // 0..4095
analogSetAttenuation(ADC_11db); // 0..3,3 В
}
void loop() {
int raw = analogRead(gasPin);
float v = raw * (3.3 / 4095.0);
Serial.print("Raw: "); Serial.print(raw);
Serial.print(" | V: "); Serial.println(v, 3);
delay(1000);
}
Используйте пины ADC1 (GPIO 32–39) — ADC2 занят Wi-Fi.
Частые ошибки
1. Нет калибровки
Без калибровки по эталонному газу показания — просто числа. Производитель рекомендует 24 часа прогрева. Многие включают и через 5 минут делают выводы.
2. «Прогрел 5 минут»
Datasheet: время прогрева — более 24 часов. Первые минуты датчик показывает что угодно. Для повторных включений достаточно 1–3 минут, но первая калибровка — после суток работы.
3. «Измеряет CO₂ в ppm» — нет
MQ-135 не различает газы. Для CO₂ нужен NDIR-сенсор (MH-Z19).
4. Питание от 3,3 В
Нагреватель требует 5 В ±0,1 В. От 3,3 В датчик работает некорректно.
5. Аналоговый выход выше 3,3 В на ESP32
A0 может выдавать до ~5 В. Без делителя напряжения пин ESP32 выйдет из строя.
6. Игнорирование температуры и влажности
Показания зависят от температуры и влажности (33 % RH и 85 % RH в datasheet). Для точных измерений нужен BME280 рядом и программная компенсация.
7. D0 как измеритель концентрации
D0 — компаратор с порогом подстроечника. Он показывает «газ выше/ниже порога», а не концентрацию. Для измерения используйте A0.
Где применять
Подходит: детектор утечки газа (MQ-2), сигнал «плохой воздух» (MQ-135), автоматическая вентиляция, учебные проекты.
Не подходит: точный измеритель ppm CO₂, промышленный газоанализатор, медицинский монитор.
Смотрите также
- Обзор датчика освещённости BH1750 — другой датчик, который часто подключают неправильно.
- Обзор DS18B20 — точная температура рядом с газовым датчиком для компенсации.
MQ-2 и MQ-135 — дешёвые и полезные сенсоры для обнаружения газа. Но «обнаружение» и «измерение» — разные задачи. Для сигнализации «пахнет газом, включи вентиляцию» они годятся. Для лабораторной точности — нет. Главное: калибровка, 24 часа прогрева, не путать D0 с A0.
Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.