Как отключить автокалибровку MH-Z19C?
Обновлено Редакция GAW
MH-Z19C по умолчанию сам корректирует ноль: через каждые 24 часа после включения он принимает самую низкую концентрацию за этот период за свежий воздух с 400 ppm. В квартире, которую хотя бы раз в сутки проветривают, это работает. В теплице, на ферме или в непроветриваемой комнате минимальный уровень выше 400 ppm, и модуль постепенно занижает показания — Winsen прямо советует выключать функцию в таких местах.
Команда
Все команды MH-Z19C — 9 байт на скорости 9600 бит/с, 8N1. Контрольная сумма по документу — дополнение суммы байтов с 1-го по 7-й, плюс один:
| Действие | Байты команды (наш расчёт суммы) |
|---|---|
| Выключить автокалибровку | FF 01 79 00 00 00 00 00 86 |
| Включить автокалибровку | FF 01 79 A0 00 00 00 00 E6 |
| Прочитать концентрацию (для сравнения, из документа) | FF 01 86 00 00 00 00 00 79 |
Для выключения: 0x01 + 0x79 + 0x00 = 0x7A, 0x100 − 0x7A = 0x86. Для включения: 0x01 + 0x79 + 0xA0 = 0x11A, младший байт 0x1A, 0x100 − 0x1A = 0xE6.
// MH-Z19C on Serial2 (ESP32) or SoftwareSerial (Uno), 9600 8N1
const uint8_t ABC_OFF[9] = {0xFF, 0x01, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86};
void mhz19AbcOff(Stream &port) {
port.write(ABC_OFF, sizeof(ABC_OFF)); // the module sends no reply
}
После отключения
Без автокалибровки ноль приходится поправлять вручную: вынести модуль на свежий воздух, выдержать больше 30 минут и замкнуть вывод HD на землю не меньше чем на 7 секунд. Winsen рекомендует делать это не реже раза в полгода. Уровни UART модуля — 3,3 В, совместимые с 5 В, поэтому его подключают и к ESP32, и к Arduino; подробности об интерфейсе — в статье «UART».
Тот же принцип самокалибровки есть и у Sensirion SCD4x — чем они отличаются, разобрано в ответе «SCD40 или SCD41». Другие виды контрольных сумм и CRC разобраны в калькуляторе CRC, а остальные параметры MH-Z19C собраны в статье «Датчики газа».
Похожие вопросы
Сохраняется ли настройка после выключения питания?
Документ Winsen этого не уточняет. Надёжнее отправлять команду при каждом запуске программы: она короткая, а модуль на неё всё равно не отвечает.
Как понять, что автокалибровка мешает?
Типичный признак — минимальные показания за сутки упорно держатся около 400 ppm в помещении, где на самом деле не проветривают, а дневные значения постепенно сползают вниз. Модуль считает самый низкий уровень за 24 часа свежим воздухом и подтягивает к нему ноль.
Как откалибровать ноль вручную?
Вынести модуль на свежий воздух или в хорошо проветренное помещение с концентрацией около 400 ppm, выдержать больше 30 минут под питанием и замкнуть вывод HD на общий провод не меньше чем на 7 секунд. В разделе о калибровке Winsen называет выдержку больше 20 минут, в примечаниях — больше 30; берите большую.
Источники
- Zhengzhou Winsen Electronics. Infrared CO2 Sensor Module (Model: MH-Z19C) User's Manual, Version 1.2, issue date 2021.05.14 — UART 9600, 8 бит данных, 1 стоп-бит, без чётности; команды 0x86 (чтение) и 0x79 (вкл/выкл самокалибровки); Zero Point Calibration: ноль — 400 ppm, ручной способ — вывод HD к 0 В не меньше 7 с после выдержки больше 20 минут при 400 ppm; команда 0x79: FF 01 79 A0/00 00 00 00 00, сумма; байт 3 = A0 — включено, 00 — выключено, с завода включено, ответа нет; сумма = (не (байт1 + … + байт7)) + 1, пример для 0x86 — 0x79; самокалибровка каждые 24 ч от включения, для офиса и дома, не для теплиц, ферм, холодильников; Notes: выдержка в стабильной среде 400 ppm больше 30 минут, калибровать не реже раза в 6 месяцев, питание 4,5–5,5 В и не меньше 150 мА
- Sensirion. SCD4x — Breaking the size barrier in optical CO2 sensing: Datasheet, Version 1.7, April 2025 — разд. 3.8: тот же принцип автоматической калибровки у другого производителя — алгоритм предполагает, что датчик хотя бы раз дольше 3 минут видит свежий воздух с 400 ppm за неделю работы
Нашли ошибку?
Смотрите также
- Датчики газа MQ, CO и CO₂MQ-2, MQ-135, MQ-7B, ZE07-CO, MH-Z19C, SCD41, SGP41: принципы, нагрев, калибровка, протоколы
- Может ли MQ-135 измерять CO₂?Нет: в документе Winsen нет CO₂ среди целевых газов; для CO₂ нужен NDIR-датчик
- UARTКадр 8N1, скорость и допуск, TX и RX, уровни, USB–UART, AVR и STM32
- Калькулятор CRCCRC-8, CRC-16, CRC-32, Modbus, блок CRC STM32, код на C
- Чем SCD40 отличается от SCD41?SCD41 точнее, с диапазоном до 5000 ppm и однократным режимом для батарейных устройств