Перейти к содержанию

Датчики газа: MQ-серия, электрохимия и NDIR-датчики CO₂

Дешёвый датчик MQ показывает, что воздух изменился, но не скажет, какой газ и сколько его. Разбираем по документам Winsen и Sensirion три принципа — полупроводниковый, электрохимический и инфракрасный, — как подключить MQ-2, MQ-135, MQ-7B, ZE07-CO, MH-Z19C, SCD41 и SGP41 и почему ни один из них не заменяет сертифицированный сигнализатор.

Обновлено Редакция GAW

Датчик газа превращает состав воздуха в электрический сигнал, и в любительской электронике встречаются три принципа. Полупроводниковый (металлооксидный, MOX) — нагретый слой оксида металла, сопротивление которого меняется в присутствии горючих и многих других газов: так устроены датчики MQ (у них, по Winsen, диоксид олова SnO₂) и цифровой SGP41 (Sensirion называет материал только «MOx»). Электрохимический — ячейка, в которой газ вступает в реакцию и даёт ток, пропорциональный концентрации, как в модуле ZE07-CO. Инфракрасный (NDIR) — оптическая камера, в которой углекислый газ поглощает излучение на 4,2 мкм: MH-Z19C и Sensirion SCD4x.

Коротко

  • Датчик MQ — это нагреватель 30 ± 3 Ом на 5 В (до 950 мВт, около 170 мА) и чувствительный слой SnO₂, сопротивление которого считают по формуле Rs = (VC/VRL − 1) · RL.
  • Перед измерениями новый MQ прогревают не меньше 48 часов; без калибровки по эталонному газу он показывает «воздух изменился», а не ppm.
  • MQ-7B меряет угарный газ в цикле: 60 с нагрева от 5,0 В и 90 с измерения при 1,5 В.
  • Электрохимический ZE07-CO: 0–500 ppm CO с шагом 0,1 ppm, выход 0,4–2 В или UART, срок службы 3–5 лет.
  • NDIR-датчики CO₂ MH-Z19C (UART 9600, 5 В) и SCD41 (I²C 0x62, 2,4–5,5 В) по умолчанию сами калибруют ноль по свежему воздуху с 400 ppm.
  • SGP41 выдаёт не концентрацию, а индекс VOC: 100 — средний уровень за последние 24 часа.

Три принципа и что от них ждать

Полупроводниковый (MOX)ЭлектрохимическийИнфракрасный (NDIR)
ПримерыMQ-2, MQ-135, MQ-7B, SGP41ZE07-COMH-Z19C, SCD40, SCD41
Что меряетгорючие и восстанавливающие газы, дым, летучие вещества — все сразуодин целевой газ (у ZE07-CO — CO), мешают спирт и другиеCO₂ по поглощению на 4,2 мкм
Выходсопротивление (MQ) или индекс (SGP41)напряжение 0,4–2 В или UARTUART, ШИМ, I²C — сразу в ppm
Питаниенагреватель до 950 мВт (MQ), 3,0 мА при 3,3 В (SGP41)5–12 В5 В и пики 125 мА (MH-Z19C), 2,4–5,5 В и пики до 205 мА (SCD41)
Срок службы по документам10 лет (MQ)3–5 лет на воздухебольше 10 лет

Металлооксидный датчик, по Sensirion, широкополосный: окисляющие газы вроде NO₂ увеличивают сопротивление слоя, восстанавливающие — летучие органические вещества, водород, пропан — уменьшают, а водяной пар действует как восстанавливающий газ. Откалиброванный по одному газу, такой датчик не становится избирательным: в примере Sensirion один и тот же сигнал «1000 ppb» дают и 500 ppb этанола, и 2000 ppb толуола. Поэтому MOX хорош для вопроса «изменился ли воздух», а для измерения концентрации одного газа нужны электрохимия или NDIR.

Датчики MQ: устройство и параметры

Датчик MQ состоит из нагревателя и чувствительного слоя диоксида олова SnO₂. В чистом воздухе проводимость слоя низкая, с ростом концентрации целевого газа она растёт (Winsen, раздел Profile). У датчика шесть выводов: 2 и 5 — нагреватель, 1 и 3 — один измерительный электрод, 4 и 6 — второй (рис. 8 документа MQ-2); на модулях их обозначают H, A и B.

Параметр по документам WinsenMQ-2MQ-135MQ-7B
Целевые газыгорючие газы, дымаммиак, сульфиды, пары бензольного рядаугарный газ CO
Диапазон300–10 000 ppm10–1000 ppm10–500 ppm
Напряжение нагревателя VH5,0 ± 0,1 В5,0 ± 0,1 В5,0 В 60 с, затем 1,5 В 90 с
Напряжение цепи VC5,0 ± 0,1 В5,0 ± 0,1 В5,0 ± 0,1 В
Сопротивление нагревателя30 ± 3 Ом30 ± 3 Ом30 ± 3 Ом
Мощность нагревателяне больше 950 мВтне больше 950 мВтне больше 950 мВт
Чувствительность Rs(воздух)/Rs(газ)≥ 5 в 2000 ppm пропана≥ 5 в 400 ppm водорода≥ 5 в 150 ppm CO
VRL в контрольном газе2,5–4,0 В2,0–4,0 В2,5–4,3 В
Прогрев перед измерениямине меньше 48 чбольше 48 чне меньше 48 ч

Все параметры Winsen нормирует в стандартных условиях: 20 ± 2 °C, влажность 55 ± 5 %, кислорода 21 % (не меньше 18 %) — от содержания кислорода зависят начальное сопротивление, чувствительность и повторяемость. В других условиях кривая сдвигается: рис. 4 документа MQ-2 показывает, как Rs в 2000 ppm пропана меняется с температурой и влажностью.

Нагреватель и питание

Нагреватель держит слой при рабочей температуре и потребляет больше, чем вся остальная схема. При сопротивлении 30 Ом и 5 В по закону Ома:

IH=5 В30 Ом≈167 мА,PH=(5 В)230 Ом≈0,83 Вт.I_H = \frac{5\ \text{В}}{30\ \text{Ом}} \approx 167\ \text{мА}, \qquad P_H = \frac{(5\ \text{В})^2}{30\ \text{Ом}} \approx 0{,}83\ \text{Вт}.

У экземпляра с нижним допуском 27 Ом при 5,0 В — 185 мА и 0,93 Вт, в пределах 950 мВт из документа; но при верхнем допуске питания 5,1 В тот же экземпляр потребляет 0,96 Вт — чуть больше нормы (наш расчёт). Поэтому питание нагревателя лучше держать ближе к 5,0 В, чем к краю допуска. Отсюда практические выводы:

  • Только 5 В. Стабилизатор 3,3 В для нагревателя не подходит — нужно 5,0 ± 0,1 В, а источник должен отдавать 170 мА на каждый датчик сверх остальной нагрузки. Превышение напряжения Winsen прямо запрещает: даже без видимого повреждения у датчика необратимо меняются характеристики (Cautions, п. 1.6).
  • Батарейное устройство. 167 мА непрерывно — это около 4 А·ч в сутки (наш расчёт); MQ не годится для питания от батареек. Оцените бюджет в калькуляторе потребления.
  • Нагреватель включён постоянно. Характеристики MQ-2 и MQ-135 Winsen нормирует при постоянном VH = 5 В; прерывистый нагрев в их документах не описан. Циклический режим предусмотрен только у MQ-7B.

Схема включения и расчёт сопротивления

Чувствительный слой включают последовательно с нагрузочным резистором RL от напряжения VC, а измеряют напряжение VRL на резисторе. Сопротивление слоя и мощность, которая в нём выделяется, по документу Winsen:

Rs=(VCVRL−1)RL,Ps=VC2 Rs(Rs+RL)2.R_s = \left(\frac{V_C}{V_{RL}} - 1\right) R_L, \qquad P_s = \frac{V_C^2\, R_s}{(R_s + R_L)^2}.

RL в документах «подбирается»; кривая на рис. 5 документа MQ-2 снята с RL = 4,7 кОм. Чем больше газа, тем меньше Rs и тем выше VRL.

Подключение датчика газа MQ-2 к АЦП микроконтроллераШина 5 В питает и нагреватель датчика (выводы 2 и 5, H), и измерительную цепь: на электрод A (выводы 1 и 3) подано 5 В, электрод B (выводы 4 и 6) соединён с нагрузочным резистором RL, второй конец которого — на общем проводе. Второй вывод нагревателя — тоже на общем проводе. Напряжение VRL на резисторе RL идёт на вход АЦП микроконтроллера с питанием 5 В. Сопротивление чувствительного слоя считают по формуле Rs = (VC / VRL − 1) · RL.MQ-2SnO₂, нагревA1, 3H2B4, 6H5МКпитание 5 ВАЦПGNDVC = VH = 5 ВRL4,7 кОмVRLнагреватель 30 ± 3 Ом,не больше 950 мВтRs = (VC / VRL − 1) · RL; для АЦП на 3,3 В выход VRL приводят к шкале делителем
Подключение MQ-2 по основной схеме Winsen: нагреватель H и измерительная цепь от 5 В, нагрузочный резистор RL 4,7 кОм, напряжение VRL — на вход АЦП микроконтроллера с питанием 5 В

Пример. После прогрева в чистом воздухе при VC = 5 В и RL = 4,7 кОм АЦП показывает VRL = 1,0 В. Тогда R0 = (5/1,0 − 1) · 4,7 кОм = 18,8 кОм — это базовое сопротивление именно этого экземпляра. Позже VRL вырос до 3,0 В: Rs = (5/3,0 − 1) · 4,7 кОм ≈ 3,1 кОм, отношение Rs/R0 ≈ 0,17. По документу у годного MQ-2 в 2000 ppm пропана Rs/R0 не больше 0,2 — то есть газа много, порядка тысяч ppm. Но какого именно газа, датчик не скажет: дым, пары спирта и метан тоже снижают сопротивление (рис. 3).

АЦП на 3,3 В. VRL доходит до 4 В и выше, поэтому у ESP32 или STM32 выход приводят к шкале делителем напряжения. Делитель подключён параллельно RL и уменьшает его: при делителе 10 + 20 кОм и RL = 4,7 кОм в формулу нужно подставлять уже 4,7 ∥ 30 ≈ 4,06 кОм и умножать напряжение на коэффициент делителя (наш расчёт). Проще взять делитель в 10–20 раз больше RL или повторитель на ОУ.

Калибровка и почему «ppm» на модуле — оценка

Концентрацию по датчику MQ находят через отношение Rs/R0 и типовую кривую чувствительности из документа (рис. 3). У этого пути три слабых места:

  1. R0 у каждого экземпляра своё. Его измеряют в чистом воздухе, после прогрева не меньше 48 ч, и записывают в энергонезависимую память. Если датчик долго лежал без питания, Winsen требует более долгой выдержки: не меньше 48 ч после хранения до месяца, 72 ч — до полугода, 168 ч — дольше полугода (табл. 2).
  2. Кривая типовая. Winsen гарантирует только Rs(воздух)/Rs(газ) ≥ 5 и наклон α ≤ 0,6 в двух точках. Чтобы считать ppm, датчик калибруют в эталонной смеси выбранного газа — в домашних условиях этого не сделать.
  3. Условия и другие газы. Температура, влажность, кислород и любые восстанавливающие газы сдвигают Rs так же, как целевой газ.

Поэтому разумное применение MQ — сравнение с собственной базовой линией: «сопротивление упало в N раз относительно чистого воздуха за последние часы», порог с гистерезисом и включение вытяжки или проветривания. Числа «ppm», которые выводят библиотеки для модулей, рассчитаны по типовой кривой и коэффициентам не вашего экземпляра.

Что губит датчик MQ

Winsen перечисляет условия, после которых датчик теряет чувствительность (Cautions):

  • пары органического кремния — силиконовый герметик, клей, шпаклёвка, силиконовая резина рядом с датчиком; чувствительность теряется навсегда;
  • высокие концентрации едких газов — H₂S, SOx, Cl₂, HCl;
  • щелочи и соли щелочных металлов (особенно солевой туман), галогены;
  • вода, конденсат и замерзание;
  • долгая работа в высокой концентрации газа; струя газа из зажигалки сильно повреждает датчик;
  • постоянная вибрация и удары — обрываются выводы;
  • пайка: только ручная, канифольный флюс с минимумом хлора, 250 °C не дольше 3 с.

MQ-7B: цикл нагрева для угарного газа

MQ-7B меряет CO при низкой температуре слоя, когда на нагревателе 1,5 В, а при 5,0 В очищается от других адсорбированных газов. Цикл по документу: 60 ± 1 с при 5,0 ± 0,1 В, затем 90 ± 1 с при 1,5 ± 0,1 В; измерять нужно в фазе низкого нагрева. Средняя мощность нагревателя за цикл при 30 Ом — около 0,38 Вт против 0,83 Вт у MQ-2 (наш расчёт: 0,83 Вт · 60 с + 0,075 Вт · 90 с за 150 с).

Два напряжения получают ключом с ШИМ или переключаемым стабилизатором. Если на модуле нагреватель просто подключён к 5 В, датчик работает не по своему документу, и даже типовая кривая для CO к нему неприменима.

Электрохимический модуль ZE07-CO

Электрохимическая ячейка избирательнее металлооксидной, хотя тоже не идеальна: в документе ZE07-CO среди мешающих газов назван спирт. Модуль уже откалиброван и выдаёт концентрацию сам.

Параметр ZE07-COЗначение
Диапазон и разрешение0–500 ppm CO, 0,1 ppm
Выходынапряжение 0,4–2 В (0 — полная шкала), UART с уровнями 3 В
Питание5–12 В, защиты от переполюсовки нет
Прогрев, отклик, восстановлениене больше 3 мин, 60 с, 60 с
Условия−10…+55 °C, влажность 15–90 % без конденсации
Срок службы3–5 лет на воздухе

Выводы по документу: 15 — питание, 5 и 14 — общий, 7 — RXD, 8 — TXD, 10 — аналоговый выход. Аналоговый выход линейный: при напряжении U концентрация

C=U−0,4 В2,0 В−0,4 В⋅500 ppm,C = \frac{U - 0{,}4\ \text{В}}{2{,}0\ \text{В} - 0{,}4\ \text{В}} \cdot 500\ \text{ppm},

например 1,2 В соответствуют 250 ppm (наш расчёт по шкале из документа). Ячейка расходуется: через 3–5 лет модуль меняют, а показания старого сравнивают с поверенным прибором.

Углекислый газ: инфракрасные NDIR-датчики

Углекислый газ сильно поглощает инфракрасное излучение с длиной волны около 4,2 мкм. В NDIR-датчике свет излучателя проходит через полосовой фильтр, а не через призму — отсюда «недисперсионный» (Sensirion, Info Note). В пропускающем датчике фотоприёмник на другом конце камеры видит, сколько света дошло; для малых концентраций нужен оптический путь порядка сантиметров, а механические и тепловые напряжения камеры искажают результат. В фотоакустическом излучатель работает импульсами, поглощённая энергия создаёт в камере звуковую волну, и её амплитуду меряет микрофон; камера получается меньше и устойчивее.

MH-Z19C: UART и ШИМ

MH-Z19C — модуль с позолоченной камерой, питанием 5,0 ± 0,1 В и выходами UART и ШИМ.

Параметр MH-Z19CЗначение
Диапазон400–2000, 400–5000 или 400–10 000 ppm (по выбору)
Точность, разрешение±(50 ppm + 5 % показания), 1 ppm
Токсредний меньше 40 мА, пиковый 125 мА; источник — не меньше 150 мА
Прогрев, отклик T901 мин, меньше 120 с
ИнтерфейсUART 9600 бит/с, 8N1, уровни 3,3 В (совместимы с 5 В); ШИМ
Условия−10…+50 °C, 0–95 % без конденсации

Если напряжение питания выйдет из диапазона 4,5–5,5 В или источник не даст 150 мА, модуль, по документу, занижает показания или не работает.

Чтение по UART (подробнее об интерфейсе) — команда из 9 байт, ответ тоже из 9:

// MH-Z19C: read CO2 over UART at 9600 8N1 (Winsen manual v1.2, command 0x86)
static const uint8_t cmd_read[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};

// Checksum per the manual: 0xFF minus the sum of bytes 1..7, plus 1
uint8_t mhz19_checksum(const uint8_t *p) {
    uint8_t sum = 0;
    for (int i = 1; i < 8; i++) sum += p[i];
    return (uint8_t)(0xFF - sum + 1);
}

// Returns ppm, or -1 if the reply is malformed
int mhz19_parse(const uint8_t r[9]) {
    if (r[0] != 0xFF || r[1] != 0x86 || r[8] != mhz19_checksum(r)) return -1;
    return r[2] * 256 + r[3];   // HIGH * 256 + LOW
}

Ответ FF 86 01 F4 … означает 1 · 256 + 244 = 500 ppm.

ШИМ. Период 1004 мс ± 5 %: 2 мс высокого уровня в начале, 1000 мс полезной части и 2 мс низкого в конце. Для шкалы 2000 ppm

C=2000 ppm⋅TH−2 мсT−4 мс,C = 2000\ \text{ppm} \cdot \frac{T_H - 2\ \text{мс}}{T - 4\ \text{мс}},

где TH — длительность высокого уровня, T — период. При TH = 252 мс и T = 1004 мс — 500 ppm. Меряют обе величины, а не подставляют номинальный период: генератор модуля уходит на ±5 %.

Калибровка нуля. Ноль модуля — 400 ppm. Ручная калибровка: модуль выдерживают в воздухе с 400 ppm (например, на улице) и притягивают вывод HD к нулю не меньше чем на 7 с. Время выдержки в документе указано по-разному — 20 минут в разделе о калибровке и больше 30 минут в примечаниях; берите 30. Автокалибровка включена с завода и срабатывает каждые 24 ч после включения; Winsen предупреждает, что она годится для офиса и дома, а в теплицах, на фермах и в холодильниках её выключают командой 0x79 с байтом 0x00. Калибровать модуль, по документу, нужно не реже раза в полгода.

Sensirion SCD40 и SCD41: I²C

SCD4x — фотоакустический датчик размером 10,1 × 10,1 × 6,5 мм для пайки оплавлением, со встроенным датчиком температуры и влажности SHT4x для компенсации.

Параметр по даташиту v1.7SCD40SCD41
Нормированный диапазон400–2000 ppm400–5000 ppm
Точность±(50 ppm + 5 % показания)±(50 ppm + 2,5 %) до 1000 ppm, ±(50 ppm + 3 %) до 2000 ppm, ±(40 ppm + 5 %) до 5000 ppm
Режим однократного измерениянетесть
Повторяемость, отклик τ63±10 ppm, 60 с±10 ppm, 60 с
Питание2,4–5,5 В2,4–5,5 В
Пиковый ток при 3,3 В175 мА, до 205 мА175 мА, до 205 мА
Средний ток при 3,3 В15 мА (раз в 5 с), 3,2 мА (раз в 30 с)то же и 0,45 мА (однократно раз в 5 мин)
ИнтерфейсI²C, адрес 0x62, до 400 кГцI²C, адрес 0x62, до 400 кГц

Питание. Излучатель потребляет импульсами до 205 мА, а внутренний стабилизатор датчика чувствителен к пульсациям: напряжение без нагрузки датчика не должно меняться больше чем на 30 мВ. Sensirion рекомендует отдельный малошумящий LDO, рассчитанный на пиковый ток, а выводы VDD и VDDH соединить на плате рядом с датчиком. Подтяжки SDA и SCL — внешние, в примере даташита 10 кОм; точнее их подбирают по ёмкости шины в калькуляторе подтяжек I²C.

Обмен. Команды — 16-битные слова старшим байтом вперёд, после каждого слова данных идёт CRC-8 с полиномом 0x31 и начальным значением 0xFF. Основная последовательность: 0x21B1 — запустить периодические измерения (новые данные раз в 5 с), 0xEC05 — прочитать три слова, 0x3F86 — остановить (следующая команда — не раньше чем через 500 мс). Пересчёт по таблице 11 даташита:

CO2=w0 ppm,T=−45+175 w1216−1 ∘C,RH=100 w2216−1 %.\text{CO}_2 = w_0\ \text{ppm}, \quad T = -45 + 175\,\frac{w_1}{2^{16} - 1}\ ^\circ\text{C}, \quad RH = 100\,\frac{w_2}{2^{16} - 1}\ \%.

Пример из даташита: слова 0x01F4, 0x6667, 0x5EB9 — это 500 ppm, 25 °C и 37 %.

// SCD4x CRC-8 (datasheet v1.7, section 3.12): polynomial 0x31, init 0xFF
uint8_t scd4x_crc(const uint8_t *data, int len) {
    uint8_t crc = 0xFF;
    for (int i = 0; i < len; i++) {
        crc ^= data[i];
        for (int b = 0; b < 8; b++)
            crc = (crc & 0x80) ? (uint8_t)((crc << 1) ^ 0x31) : (uint8_t)(crc << 1);
    }
    return crc;
}

// After read_measurement (0xEC05) and a 1 ms wait the sensor returns 9 bytes:
// CO2 MSB, LSB, CRC, T MSB, LSB, CRC, RH MSB, LSB, CRC
int scd4x_parse(const uint8_t r[9], uint16_t *co2, float *t, float *rh) {
    for (int i = 0; i < 9; i += 3)
        if (scd4x_crc(&r[i], 2) != r[i + 2]) return -1;
    *co2 = (uint16_t)((r[0] << 8) | r[1]);
    *t   = -45.0f + 175.0f * (float)((r[3] << 8) | r[4]) / 65535.0f;
    *rh  = 100.0f * (float)((r[6] << 8) | r[7]) / 65535.0f;
    return 0;
}

Если данных ещё нет, датчик отвечает на чтение NACK; чтобы не гадать, перед чтением опрашивают готовность командой 0xE4B8.

Компенсации. Температура и влажность учитываются внутри датчика автоматически. Давление — нет: высоту установки (0–3000 м) или текущее давление (70 000–120 000 Па, по умолчанию 101 300 Па) передают командами — давление удобно брать с барометра BMP280. Встроенный датчик температуры греется от платы, поэтому для правильных T и RH задают смещение температуры (по умолчанию 4 °C), измеренное в готовом корпусе. На точность CO₂ смещение не влияет.

Калибровка SCD4x: ASC и FRC

Автоматическая (ASC) включена с завода. Алгоритм предполагает, что датчик хотя бы раз дольше 3 минут видел свежий воздух с 400 ppm за каждую неделю работы; первая коррекция — через 44 ч работы, дальше — каждые 156 ч. Это часы именно в режиме измерений, накопленные блоками по 4 ч (разд. 3.8 и 3.11): время в режиме ожидания и короткие включения не считаются. Если помещение не проветривают, ASC выключают. В однократном режиме с обесточиванием между измерениями или с командой power_down ASC недоступна совсем — калибровать придётся вручную.

Принудительная (FRC) — по известной концентрации: датчик не меньше 3 минут работает в нужном режиме в однородном воздухе (например, на улице), затем 0x3F86, 500 мс, команда 0x362F с эталонным значением в ppm и ещё 400 мс до ответа. Ответ 0xFFFF означает, что калибровка не удалась, потому что датчик перед командой не работал. После пайки FRC делают не раньше чем через 5 дней: монтаж, доставка и неаккуратное обращение сдвигают показания, и даташит прямо оговаривает этот срок.

SGP41: индекс летучих веществ вместо ppm

SGP41 — цифровой металлооксидный датчик Sensirion в корпусе DFN 2,44 × 2,44 мм с двумя чувствительными элементами: для летучих органических веществ (VOC) и для окисляющих газов (NOx). Питание 1,7–3,6 В, ток 3,0 мА при 3,3 В, I²C с адресом 0x59.

  • Сырые сигналы — 16-битные числа, пропорциональные логарифму сопротивления слоя. Для точности датчику передают текущую влажность и температуру — их берут с датчика влажности, например SHT4x.
  • Индексы VOC и NOx от 1 до 500 вычисляет библиотека Sensirion на микроконтроллере. Базовая линия индекса VOC — скользящее среднее за 24 ч: 100 — средний для этого помещения уровень, больше 100 — летучих веществ больше обычного (готовка, уборка, люди), меньше — свежий воздух.
  • Запуск. После включения сначала идёт кондиционирование — 10 с, и не дольше, иначе чувствительный слой повреждается; затем измерения раз в секунду. Индекс VOC выходит на характеристики меньше чем за 1,5 ч, индекс NOx — меньше чем за 6 ч.

SGP41 хорош для управления вытяжкой и очистителем воздуха, но как и MQ, он не измеряет концентрацию конкретного вещества.

Типичные ошибки

  • MQ без прогрева. Winsen требует не меньше 48 ч под напряжением перед измерениями; R0 и порог, выставленные раньше, относятся к ещё не стабильному датчику.
  • Питание нагревателя от слабого источника. Просадка 5 В из-за 170 мА нагревателя меняет и VH, и VC, и опорное напряжение АЦП.
  • Силикон в корпусе. Герметик и клей рядом с MQ отравляют его навсегда.
  • «ppm» из библиотеки для MQ-135 принимают за измерение CO₂. Это пересчёт по типовой кривой для другого газа и чужого экземпляра.
  • Датчик CO₂ без проветривания. Автокалибровка «подтягивает» минимум суток или недели к 400 ppm, и в закрытом помещении показания уплывают вниз.
  • SCD4x на общем шумном питании. Датчик берёт импульсы до 205 мА, а пульсации питания без его нагрузки не должны превышать 30 мВ; Sensirion рекомендует отдельный LDO.

Что выбрать

  • Порог «появился газ или дым» для эксперимента — MQ-2 или MQ-135 с калибровкой R0 по своему экземпляру, но не для защиты людей.
  • Концентрация CO в ppm для лабораторного стенда — электрохимический модуль вроде ZE07-CO; для защиты жизни — только сертифицированный сигнализатор.
  • CO₂ в комнате, проветривание по CO₂ — SCD41 на плате или MH-Z19C модулем; для батарейного устройства — SCD41 в однократном режиме, помня, что при обесточивании между измерениями ASC не работает и нужна ручная калибровка (FRC).
  • Качество воздуха для очистителя или вытяжки — SGP41 с индексом VOC и датчиком влажности.

Другие датчики — в разделе «Датчики», единицы концентрации — в статье «ppm».

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

Можно ли сделать сигнализатор утечки газа или угарного газа на MQ-2 или MQ-7?

Для защиты людей — нет. В документах Winsen MQ-2 и MQ-7B описаны как чувствительные элементы: сопротивление зависит не только от целевого газа, но и от температуры, влажности, кислорода и других газов, требует прогрева не меньше 48 часов и калибровки по эталонной смеси. Самодельный прибор никто не проверял на газовых смесях. Для дома ставят сертифицированный сигнализатор, а самоделку — только как дополнительный индикатор.

Как перевести напряжение MQ-135 в ppm?

Сначала сопротивление: Rs = (VC/VRL − 1) · RL. Затем отношение Rs/R0, где R0 — сопротивление того же экземпляра в чистом воздухе после прогрева. По типовой кривой из документа Winsen находят концентрацию для одного выбранного газа. Но кривая типовая, разброс между экземплярами, температура и влажность её сдвигают, а MQ-135 реагирует сразу на аммиак, водород, толуол и дым, поэтому получаются не ppm, а грубая оценка «воздух стал хуже».

Чем MH-Z19C отличается от SCD41?

Оба — инфракрасные датчики CO₂, но MH-Z19C — модуль на 5 В с UART и ШИМ, точностью ±(50 ppm + 5 % показания) и средним током меньше 40 мА, а SCD41 — микросхема для пайки на плату с I²C, питанием 2,4–5,5 В, точностью ±(50 ppm + 2,5 % показания) до 1000 ppm и встроенным датчиком температуры и влажности. Для батарейного устройства SCD41 удобнее: в режиме однократных измерений раз в 5 минут средний ток 0,45 мА при 3,3 В. Если же между измерениями датчик обесточивать или усыплять командой power_down, автоматическая калибровка ASC, по даташиту, недоступна.

Почему датчик CO₂ показывает 400 ppm и не меньше, а потом начинает врать?

Оба датчика по умолчанию калибруют ноль автоматически: считают, что минимальная концентрация за период — это свежий воздух с 400 ppm. MH-Z19C делает это каждые 24 часа, SCD4x ждёт хотя бы одного проветривания дольше 3 минут за каждую неделю работы. В теплице, на ферме или в непроветриваемой комнате это предположение неверно, и ноль уплывает. Тогда автокалибровку выключают и калибруют вручную по известной концентрации.

Что показывает SGP41 — концентрацию летучих веществ?

Нет. SGP41 выдаёт сырые сигналы, а библиотека Sensirion переводит их в индексы VOC и NOx от 1 до 500. Индекс VOC 100 означает средний уровень за последние 24 часа, больше 100 — летучих веществ больше обычного, меньше — меньше. Металлооксидный датчик не различает газы: одинаковый сигнал дают и 500 ppb этанола, и 2000 ppb толуола.

Источники

  1. Zhengzhou Winsen Electronics. Flammable Gas Sensor (Model: MQ-2) Manual, Version 1.6, valid from 2021-07-01 — Profile — SnO₂, проводимость растёт с концентрацией горючего газа; Table 1 — 300–10 000 ppm, VC и VH 5,0 ± 0,1 В, RL подбирается, сопротивление нагревателя 30 ± 3 Ом, потребление нагревателя не больше 950 мВт, чувствительность Rs(воздух)/Rs(2000 ppm пропана) ≥ 5, VRL 2,5–4,0 В в 2000 ppm пропана, наклон ≤ 0,6 (R3000/R1000), условия 20 ± 2 °C и 55 ± 5 %, прогрев не меньше 48 ч, кислород 21 % (не меньше 18 %), срок службы 10 лет; Basic Circuit — Rs = (VC/VRL − 1) · RL, Ps = VC² · Rs / (Rs + RL)²; Fig. 3–4 — Rs/R0 к R0 в чистом воздухе, влияние температуры и влажности; Fig. 5 — RL 4,7 кОм; Cautions 1.1–1.7 — пары органического кремния, H₂S, SOx, Cl₂, HCl, щелочи и галогены, вода, замерзание, превышение напряжения, выводы 2 и 5 — нагреватель, 1/3 и 4/6 — электроды; 2.1–2.7 — конденсация, высокие концентрации, хранение и таблица старения 48/72/168 ч, вибрация, пайка 250 °C не дольше 3 с
  2. Zhengzhou Winsen Electronics. Air Quality Gas Sensor (Model: MQ135) Manual, Version 1.6, valid from 2021-07-01 — Table 1 — аммиак, сульфиды, пары бензольного ряда; 10–1000 ppm (аммиак, толуол, водород, дым); тот же нагреватель 30 ± 3 Ом, ≤ 950 мВт, 5,0 ± 0,1 В; чувствительность Rs(воздух)/Rs(400 ppm H₂) ≥ 5, VRL 2,0–4,0 В в 400 ppm H₂, наклон ≤ 0,6 (R400/R100); прогрев больше 48 ч
  3. Zhengzhou Winsen Electronics. Carbon Monoxide Gas Sensor (Model: MQ-7B) Manual, Version 1.6, valid from 2021-07-01 — Profile — циклический нагрев: CO измеряется при низкой температуре (нагрев от 1,5 В), при высокой (5,0 В) датчик очищается от других газов; Table 1 — 10–500 ppm CO, VH 5,0 ± 0,1 В 60 ± 1 с и 1,5 ± 0,1 В 90 ± 1 с, нагреватель 30 ± 3 Ом, ≤ 950 мВт, чувствительность Rs(воздух)/Rs(150 ppm CO) ≥ 5, VRL 2,5–4,3 В в 150 ppm CO, наклон ≤ 0,6 (R300/R50); Basic Circuit — измерять при 1,5 В
  4. Zhengzhou Winsen Electronics. Electrochemical CO Module (Model: ZE07-CO) User's Manual, Version 1.7, valid from 2020-10-19 — Technical Parameters — мешающие газы: спирт и другие; выход ЦАП 0,4–2 В (0 — полная шкала) и UART с уровнями 3 В; питание 5–12 В без защиты от переполюсовки; прогрев не больше 3 мин, отклик и восстановление не больше 60 с; 0–500 ppm, разрешение 0,1 ppm; −10…+55 °C, 15–90 %; срок службы 3–5 лет на воздухе; Pin Description — 15 Vin, 5 и 14 GND, 7 RXD, 8 TXD, 10 DAC
  5. Zhengzhou Winsen Electronics. Infrared CO2 Sensor Module (Model: MH-Z19C) User's Manual, Version 1.2, issue date 2021.05.14 — Main parameters — 5,0 ± 0,1 В, средний ток меньше 40 мА, пиковый 125 мА, уровни интерфейса 3,3 В (совместимы с 5 В), 400–10 000 ppm (по выбору), UART и ШИМ, прогрев 1 мин, T90 меньше 120 с, −10…+50 °C, 0–95 % без конденсации, срок службы больше 10 лет; точность ±(50 ppm + 5 % показания), разрешение 1 ppm; выводы Vin, GND, PWM, HD (ноль: низкий уровень не меньше 7 с), Rx, Tx; ШИМ: период 1004 мс ± 5 %, Cppm = 2000 · (TH − 2 мс)/(T − 4 мс) для шкалы 2000 ppm; UART 9600, 8 бит, 1 стоп-бит, без чётности; команды 0x86 и 0x79, пример FF 01 86 00 00 00 00 00 79, концентрация HIGH · 256 + LOW, контрольная сумма; ноль — 400 ppm, перед ручной калибровкой 20 мин (раздел Zero Point Calibration) и больше 30 мин (раздел Notes) при 400 ppm; автокалибровка каждые 24 ч от включения, для офиса и дома, не для теплиц, ферм, холодильников; Notes — питание 4,5–5,5 В и не меньше 150 мА, калибровать не реже чем раз в 6 месяцев, не паять волной, паяльник 350 ± 5 °C не дольше 3 с
  6. Sensirion. SCD4x — Breaking the size barrier in optical CO2 sensing: Datasheet, Version 1.7, April 2025 — Features — фотоакустический NDIR PASens, 10,1 × 10,1 × 6,5 мм; Product Variants — SCD40 400–2000 ppm, SCD41 и SCD43 400–5000 ppm и режим однократного измерения; табл. 1 — выход 0–40 000 ppm, точность SCD40 ±(50 ppm + 5 %), SCD41 ±(50 ppm + 2,5 %) до 1000 ppm, ±(50 ppm + 3 %) до 2000 ppm, ±(40 ppm + 5 %) до 5000 ppm, SCD43 ±(30 ppm + 3 %), повторяемость ±10 ppm, отклик τ63 60 с, дрейф после пяти лет ±(5 ppm + 0,5 %) в год; сноски 6 и 8 — FRC не раньше чем через 5 дней после монтажа или ASC с еженедельными 400 ppm; табл. 4 — 2,4–5,5 В, пульсации без нагрузки не больше 30 мВ, пиковый ток 175/205 мА при 3,3 В и 115/137 мА при 5 В, средний 15/18 мА (раз в 5 с), 3,2/3,5 мА (раз в 30 с), 0,45/0,5 мА (однократно раз в 5 мин); табл. 5 — −10…+60 °C, 0–95 %, срок больше 10 лет; разд. 2.3 — VDD и VDDH от одного источника, отдельный LDO, подтяжки, например 10 кОм; табл. 7 — включение 30 мс, до 400 кГц; табл. 8 — адрес 0x62; разд. 3.3 — 16-битные слова старшим байтом вперёд, после каждого CRC; табл. 9 — команды 0x21B1, 0xEC05, 0x3F86 (500 мс) и другие; табл. 11 — CO₂ = слово, T = −45 + 175 · слово/(2¹⁶ − 1), RH = 100 · слово/(2¹⁶ − 1), пример 500 ppm, 25 °C, 37 %; разд. 3.7 — смещение температуры по умолчанию 4 °C, высота 0–3000 м, давление 70 000–120 000 Па; разд. 3.8 — ASC: свежий воздух 400 ppm хотя бы раз дольше 3 мин за каждую неделю работы, FRC после 3 мин работы, ответ 0xFFFF при ошибке; разд. 3.11 — начальный период ASC 44 ч, стандартный 156 ч; разд. 3.12 — CRC-8, полином 0x31, начальное значение 0xFF
  7. Sensirion. Characteristics of NDIR Sensors: Transmissive and photoacoustic NDIR sensing (Info Note, D1) — CO₂ сильно поглощает ИК-излучение около 4,2 мкм; полосовой фильтр вместо призмы; пропускающий NDIR — излучатель и фотоприёмник на концах оптической камеры, нужен путь порядка сантиметров, чувствителен к механическим и тепловым напряжениям; фотоакустический — импульсный излучатель, микрофон измеряет звуковую волну от поглощения, камера меньше и устойчивее
  8. Sensirion. Datasheet SGP41 — Air Quality Sensor for VOC and NOx Measurements, version 1.0, December 2021 — табл. 1 — индексы VOC и NOx 1–500, сырые сигналы 0–65 535 отсчётов, пропорциональные логарифму сопротивления, время выхода на характеристики: индекс VOC меньше 1,5 ч, индекс NOx меньше 6 ч, интервал выборки 0,5–1–10 с; табл. 2 — 1,7–3,6 В, 3,0 мА при 3,3 В в режиме измерения, 4,2 мА при кондиционировании; разд. 2.3 — 0–90 %, −10…+50 °C, без конденсации; разд. 3.1 — кондиционирование рекомендуется 10 с и не дольше 10 с, иначе повреждается чувствительный слой; разд. 4.2 — адрес 0x59
  9. Sensirion. What is Sensirion's VOC Index? (Info Note) — индекс VOC — состояние относительно недавней истории, базовая линия — скользящее среднее за 24 ч (время обучения), среднему соответствует 100; выше 100 — летучих веществ больше среднего, ниже — меньше
  10. Sensirion. A MOX sensor reacts to most changes in gas composition (Info Note) — окисляющие газы (NOx) увеличивают сопротивление металлооксидного слоя, восстанавливающие (VOC) уменьшают, водяной пар действует как восстанавливающий газ; датчик широкополосный: 1000 ppb на выходе может означать и 500 ppb этанола, и 2000 ppb толуола; базовая линия в полевых условиях не определена

Нашли ошибку?