Датчик углекислого газа (CO2) MH-Z19B

Использование прочих датчиков и энкодеров и пользовательских блоков к ним
Ответить
Dragony
Сержант
Сообщения: 170
Зарегистрирован: 02 янв 2020, 11:55
Имя: Александр
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Датчик углекислого газа (CO2) MH-Z19B

Сообщение Dragony »

Всем здравствуйте!
Ничего не нашел на форуме вот по этому датчику:
Датчик углекислого газа (CO2), MH-Z19B
Screenshot 2024-02-18 at 18-09-05 Датчик углекислого газа (CO2) MH-Z19B.png
Общие сведения

Датчик углекислого газа MH-Z19B — датчик, который детектирует уровень СО2 по принципу недисперсионного инфракрасного излучения (NDIR). Данный датчик имеет внутреннюю температурную компенсацию, может подключаться по 3-м интерфейсам (аналоговый, ШИМ, UART), имеет малые размеры и большой срок службы.

Приблизительные нормы содержания уровня CO2 в помещениях:
Уровень CO2, ppm
Качество воздуха
300-400 Эталонное качество воздуха
400-600 Нормальное качество воздуха
600-800 Среднее качество воздуха
800-1000 Предельно допустимое качество воздуха
Свыше 1000 Низкое качество воздуха
Свыше 2000 Критически низкое качество воздуха

Характеристики

Рабочее напряжение: от 4.5В до 5В
Потребление тока: <60мА (150мА в пиковой нагрузке)
Диапазон измерений: 0~5000ppm
Интерфейс: UART (3.3В) / ШИМ (3.3В, толерантен к 5В)
Время прогрева датчика: 3мин
Рабочая температура: от 0 до 50℃
Влажность: от 0 до 95%
Вес: 5г

Подключение

Датчик подключается по шине UART.

Vcc — 5В
GND — Земля
RX — подключается к любому порту, указанному в скетче (TX)
TX — подключается к любому порту, указанному в скетче (RX)

На плате Arduino UNO напряжение на выходах TX и RX равно 5В. Напряжение на входах TX и RX датчика не должно превышать 3,3В. В связи с этим подключение необходимо производить через делитель напряжения.

Для делителя напряжения Вам понадобятся резисторы номиналом 470 Ом и 1 кОм. Соберите Вашу схему так, как показано на схеме:
Изображение
Питание

Входное напряжение питания от 4.5В до 5В постоянного тока, подаётся на выводы VCC и GND модуля.
Подробнее о датчике
Управляющие команды

Датчик имеет несколько режимов работы, которые зависят от управляющего байта:

0х86 — Прочитать данные с датчика — считывает значения с датчика, где в HIGH (3) и LOW (4) байтах указаны значения CO2;

Пример: (криво вставилось :) )

Отправка
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 Байт 7 Байт 8
0xFF 0x01 0x86 0x00 0x00 0x00
0x00
0x00
0x79

Приём
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 Байт 7 Байт 8
0xFF 0x86 HIGH LOW -- --
--
--
0х79

0х87 — Калибровка нуля — используйте этот режим для калибровки в бытовых условиях (400ppm)

Пример:

Отправка
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 Байт 7 Байт 8
0xFF 0x01 0x87 0x00 0x00 0x00
0x00
0x00
CRC

0х88 — Калибровка в заданном диапазоне измерений — используйте этот режим для калибровки диапазона, указав значение диапазона в HIGH (3) и LOW (4) байтах;

Пример:

Отправка
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 Байт 7 Байт 8
0xFF 0x01 0x88 HIGH LOW 0x00
0x00
0x00
CRC

где HIGH и LOW для 5000ppm считаются по формуле: HIGH = 5000 / 256; LOW = 5000 % 256;

0х79 — Вкл/Выкл Автоматическую калибровку датчика — при отсутствии необходимости, режим автокалибровки можно отключить, указав в (3) байте 0хА0/0х00 (Вкл/Выкл);

Пример:

Отправка
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 Байт 7 Байт 8
0xFF 0x01 0x88 HIGH LOW 0x00
0x00
0x00
CRC

0x99 — Установить диапазон измерений (2000ppm; 5000ppm) — выбор диапазона измерений. Указывается в (6) и (7) байтах в 16-ной кодировке. (2000 = 07D0; 5000 = 1388)

Пример:

Диапазон задаётся в (6) и (7) байтах.

Для диапазона 2000ppm (2000 в 10-ной кодировке = 07D0 в 16-ной кодировке):

Отправка
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 Байт 7 Байт 8
0xFF 0x01 0x99 0х00 0х00 0х00 0х07
0хD0 CRC

Для диапазона 5000ppm (5000 в 10-ной кодировке = 1388 в 16-ной кодировке):

Отправка
Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 Байт 7 Байт 8
0xFF 0x01 0x99 0х00 0x00 0x00 0x13
0x88 CRC
CRC

Во всех командах в последнем (8) байте указана контрольная сумма - CRC. Для её подсчёта используется указанная производителем функция.

Больше информации смотрите здесь: https://iarduino.ru/shop/Sensory-Datchi ... -z19b.html
(цена прямо-таки нечеловеческая, на Али раза в два дешевле)

В связи с чем вопрос: какой из блоков в программе лучше подойдет для вывода данных с этого датчика?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Датчик углекислого газа (CO2) MH-Z19B

Сообщение rw6cm »

Dragony писал(а): 18 фев 2024, 16:11 Ничего не нашел на форуме вот по этому датчику:
Найдено 34 результата: MH-Z19b
Win10-64, FLProg (portable)
Аватара пользователя
fefar51702
Сержант
Сообщения: 248
Зарегистрирован: 26 июн 2022, 07:35
Имя: Валера
Благодарил (а): 1 раз
Поблагодарили: 5 раз

Датчик углекислого газа (CO2) MH-Z19B

Сообщение fefar51702 »

самый адекватный это читать шим сигнал
берите быстрый щётчик измеряйте импульсы смотрите даташит периода и делите
но лучше с буквой С покупать они вроде как получше
Dragony
Сержант
Сообщения: 170
Зарегистрирован: 02 янв 2020, 11:55
Имя: Александр
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Датчик углекислого газа (CO2) MH-Z19B

Сообщение Dragony »

Спасибо, попробую, когда получу заказ с Али.
Dragony
Сержант
Сообщения: 170
Зарегистрирован: 02 янв 2020, 11:55
Имя: Александр
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Датчик углекислого газа (CO2) MH-Z19B

Сообщение Dragony »

Стал разбираться с блоками. Никак не пойму, где именно задаются номера выводов RX-TX? В самих блоках, или где-то еще?
"Номера контактов контроллера можно задать в SoftwareSerial mySerial." - это значит, что ввести свои данные здесь:
"SoftwareSerial mySerial(RX, TX); // RX - к tx сенсора, TX - к rx сенсора." в скобках?
Или как?
Такими подробностями раньше не занимался, так что прошу снисхождения. :)
Dragony
Сержант
Сообщения: 170
Зарегистрирован: 02 янв 2020, 11:55
Имя: Александр
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Датчик углекислого газа (CO2) MH-Z19B

Сообщение Dragony »

//SoftwareSerial espSerial= SoftwareSerial(10,11); // arduino RX pin=10 arduino TX pin=11

Наверное, разобрался... :) Надо поставить номера своего варианта...
Посмотрим, как это все заработает.
Dragony
Сержант
Сообщения: 170
Зарегистрирован: 02 янв 2020, 11:55
Имя: Александр
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Датчик углекислого газа (CO2) MH-Z19B

Сообщение Dragony »

Датчик подключил, все заработало. Осталось только "утоптать" блоки в корпус.
В проекте не использовал никаких "графиков", пока только время-дата-температура/давление/влажность/СО2.
Думаю, как организовать коррекцию времени/даты "кнопками", пока готовых решений не нашел. Только при подключении блока часов к ноутбуку, а это не очень хорошо... Остается только надеяться, что элемента 2032 хватит надолго. :smile38:
Ответить

Вернуться в «Прочие датчики и энкодеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей