Подключение инфракрасного датчика углекислого газа (CO2) MH-Z19B |
Содержание
Инфракрасный датчик углекислого газа (CO2) MH-Z19B
Инфракрасный датчик углекислого газа (CO2) MH-Z19B![]() Датчики серии MH-Z выпускаются китайской компанией Winsen. Компания Winsen специализируется на разработке и производстве датчиков для определения газов. В активе компании имеются как электрохимические, так и датчики, выполненные по другим технологиям. Датчики серии MH-Z (MH-Z14A, MH-Z19B, MH-Z14 и MH-Z19) относятся к группе сенсоров, работающих по принципу оптического измерения содержания определенного газа (принцип недисперсионного инфракрасного излучения (NDIR)). Недисперсный инфракрасный датчик (или датчик NDIR) представляет собой относительно простой спектроскопический датчик, часто используемый в качестве детектора газа. Он является недисперсионным в смысле оптического рассеяния, поскольку инфракрасная энергия может проходить через атмосферную камеру для отбора проб без деформации. ![]() Основными компонентами датчика NDIR являются инфракрасный источник (лампа), камера для образцов или световая трубка, светофильтр и инфракрасный детектор. Инфракрасный свет направляется через камеру для образцов к детектору. Параллельно имеется еще одна камера с закрытым эталонным газом, обычно азотом. Газ в камере образца вызывает поглощение определенных длин волн в соответствии с законом Бера-Ламберта, и затухание этих длин волн измеряется детектором для определения концентрации газа. Перед детектором установлен оптический фильтр, который устраняет весь свет, кроме длины волны, которую могут поглощать выбранные молекулы газа. ![]() Внешний вид датчика газа (CO2) MH-Z19B Данный датчик имеет внутреннюю температурную компенсацию, может подключаться по 3-м интерфейсам (аналоговый, ШИМ, UART), имеет малые размеры и большой срок службы.
Инфракрасный датчик обнаружения газа CO MH-Z19B NDIR обычно используется в:
Характеристики
Описание датчика (datasheet) MHZ19B. Калибровка датчика MH-Z19BВ датчике MH-Z19B предусмотрено два способа клибровки: Zero-Point калибровка
Рекомендуемый вариант калибровки, который необходимо провести, даже если будет проводится калибровка методом Span.
Запуск калибровки можно провести двумя способами:
За это время датчик проведет несколько измерений и откалибруется. Калибровка в этом варианте происходит по общемировому значению CO2 в атмосфере которая примерно составляет 400 ppm. Для проведения калибровки, датчик необходимо переместить на свежий воздух на время не менее 20 минут, затем запустить калибровку. Необходимо учитывать, что в городе значение CO2 будет выше, чем в сельской местности (причем в ночное время суток, уровень будет ниже, чем в дневное). Span калибровка
Данный вариант рекомендуется запускать после прохождения Zero-Point калибровки.
Перевод датчика в данный режим калибровки осуществляется посредством команды через последовательный порт.
В этом варианте подразумевается, что точно известен уровень CO2 в атмосфере, в которой находится датчик.
Спецификация рекомендует проводить Span-калибровку при значении 2000 ppm, но можно использовать и другое значение, т.к. оно передается вместе с командой на проведение калибровки.
Перед проведением калибровки, датчик необходимо выдержать в калибруемой атмосфере не менее 20 минут.
Схема подключенияПри подключении используются все три интерфейса (аналоговый, ШИМ, UART) для сравнения показаний. ![]() Подключение датчика MH-Z19B WiFi-модуль и датчик MH-Z19B установлены на макетной плате для проектирования (Breadboard), позволяющей собирать проекты без пайки. В качестве внешнего источника используется адаптер питания для зарядки сотовых телефонов, смартфонов, планшетов, с выходным током не менее 500мА. Для автономного питания контроллера можно использовать портативные аккумуляторы (Power Bank) емкостью от 2000мА*ч и выше. В качестве соединительного кабеля между макетной платой (Breadboard) и адаптером используется кабель для зарядки сотовых телефонов. Подготовка модуля к работеПодготовка модуля к работе заключается в выполнении следующих шагов. Шаг 1. Программирование модуляПрограммирование модуля (запись программы (прошивки) «Smacont-ESP») осуществляется в соответствии с инструкцией «Программирование модулей ESP и отладочных плат». Шаг 2. Настройка сетевого соединения с модулемВыполнить настройку сетевого соединения с модулем в соответствии с инструкцией «Первое включение». Шаг 3. Настройка WiFi-сети (при необходимости)При необходимости выполнить настройку WiFi-сети в соответствии с инструкцией «Настройки WiFi-сети». Конфигурация модуляGPIOДля работы с ШИМ-сигналом от датчика MH-Z19B, сконфигурируем вывод модуля «GPIO12» для измерения длительности импульса. Для использования измеренных значений длительности импульса для расчета CO2, необходимо привязать «GPIO12» модуля к одному из «Vx» (см. рисунки ниже). ![]() ![]() ![]() Конфигурирование «GPIO12» Для получения значений CO2 с аналогового выхода датчика MH-Z19B, необходимо настроить АЦП устройства (см. рис. ниже). ![]() Конфигурирование «A0»
Установлены следующие параметры:
ИнтерфейсыТак как обмен информацией с датчиком MH-Z19B осуществляется по интерфейсу «UART», необходимо разрешить работу интерфейса. Обмен информацией с сенсором можно вести через «UART0» (GPIO1 (TX), GPIO3 (RX)) или «UART2» (GPIO15 (TX), GPIO13 (RX)). В данном примере используется «UART0». ![]() Настройка интерфейса «UART» TIMERДля периодического опроса датчика MH-Z19B будем использовать «TMR2», так как он по умолчанию уже настроен на работу с периодом 5 сек.
На вкладке «TIMER» необходимо произвести конфигурирование таймера «TMR2»:
Для обеспечения возможности дальнейшей обработки события от таймера, необходимо привязать параметр «Состояние» таймера «TMR2» к одному из «Vx», например, к «V12». ![]() Конфигурирование «TIMER» ДействияСоздаем действие-функцию «sens_MHZ19B()». Устанавливаем параметры функции, как показано на рисунке ниже.
В качестве параметра "Значение измеренного содержания углекислого газа «CO2»" указываем переменную «V15».
Соответственно, получаем список наших выходных данных:
![]() ![]() ![]() Действие вызова функции «sens_MHZ19B()»
Для пересчета значения длительности импульсов от датчика MH-Z19B в значения СО2 используем формулу:
Создаем действие для пересчета значения длительности импульсов в значения СО2. ![]() ![]() ![]() ![]() Действия для пересчета значения длительности импульсов в значения СО2 Создаем действие для пересчета значения АЦП в значения СО2. ![]() ![]() ![]() Действия для пересчета значения АЦП в значения СО2
Алгоритм выбора коэффициентов для функции «map()».
![]() Значение АЦП СценарииПри обновлении переменной «V12» («T2_Event_V12») будет выполняться действие «sens_MHZ19B()» (получение данных по интерфейсу UART). При обновлении переменной «V14» («duration_GP12_V14») будет выполняться действие «duration_GP12_V14=(duration_GP12_V14 / 500) - 4» (пересчет значения переменной «V14»). При обновлении переменной «V17» («adc_V17») будет выполняться действие «CO2_adc_V18=map(in:adc_V17,in_min:243,in_max:666,out_min:400,out_max:2000);» (пересчет значения переменной «V17»). ![]() Сценарии
Получаем следующий алгоритм работы:
Как видно из рисунка ниже, значения содержания углекислого газа (переменная «V15»), полученное по интерфейсу «UART», полностью совпадает со значением, полученным по интерфейсу ШИМ-сигнала (переменная «V14»). Значение переменной «V18» иногда отличается от «V15» на 1...5 единиц. ![]()
В дальнейшем, полученное значение содержания углекислого газа (CO2), можно использовать в других сценариях, например, в следующих проектах:
Заключение• При концентрации углекислого газа ниже 400ppm, сенсор всегда выдает значение 400ppm. • Время реакции на изменение концентрации CO2 составляет порядка 2...3 минуты. • Период выдачи PWM-сигнала составляет около 1 сек. • Если значение CO2 превышает максимальное значение установленного диапазона измерения (0...2000ppm или 0...5000ppm), то на PWM-выходе сенсора MH-Z19B иногда получаем произвольные значения, превышающие максимум установленного диапазона. При этом, по интерфейсу «UART», выводится 2000ppm или 5000ppm, в зависимости от установленного диапазона измерения. • В момент измерения концентрации CO2 (при включении инфракрасного источника света внутри сенсора MH-Z19B), увеличивается ток потребления датчика (до 160мА). При слабом источнике питания и/или при отсутствии электролитических конденсаторов по питанию, возможны просадки питания, которые могут приводить к неверным результатам при оцифровке аналогового выхода сенсора MH-Z19B. • При внешнем нагревании корпуса (например, рукой) со стороны платы, сенсор MH-Z19B начинает выдавать предельное значение содержание CO2. • На разных экземплярах сенсора MH-Z19B, значения температуры очень сильно отличались друг от друга: от 27 до 55, при одинаковых условиях проверки. • На всем диапазоне измерения, показания, полученные по интерфейсам «UART» и «PWM» совпадают абсолютно точно. При этом, значение CO2, полученное с аналогового выхода датчика отличалось в пределах 1...5 единиц. Поэтому, для экономии выводов WiFi-модуля, нужно использовать PWM-сигнал датчика, а интерфейс «UART» использовать для настройки сенсора MH-Z19B. |
Программы
Прошивка «Smacont-ESP»:
«Программа Настройки»:
Телеграм каналНовостиЭнергонезависимая память (EEPROM) Переменные «Vx» (карта переменных «Vx») Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой Обмен данными. Open Monitoring Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25 Датчик температуры и влажности SHT30 (SHT31/SHT35) Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений Действие «termostat()». Термостат ESP-NOW. Датчик температуры и влажности с питанием от батареек Последовательные интерфейсы (UART, I2C, SPI) Управление одноканальным модулем реле |