Последние статьи из блога
- MegaD-485-TTL - изолированный конвертер индустриального класса
- MegaD-4VC - подключаем сигналы 0-10В и 4-20мА к контроллеру
- MegaD-4CM - высокоточный 4-х канальный измеритель тока
- MegaD-4US - 4-х канальный датчик напряжения на DIN-рейку
- Как я боролся с собаками с помощью нейросети
- Интеграция ультразвукового датчика скорости и направления ветра
- Установка WiFi-камеры на робота-газонокосилку
- Твердотельный датчик направления и скорости ветра. Эксперимент
- iPhone на стене в качестве панели управления домом
- MegaD-16M-XT - подсветка выключателей и не только
- Переделка выключателей в кнопки и мини-обзор текущего рынка
- RadSens - модульный счетчик Гейгера с интерфейсом I2C
- "U" - значит универсальный. Обзор модуля MegaD-16U-XT
- SCD4x - современная альтернатива для измерения концентрации CO2
- HTU31D - новый датчик температуры и влажности с нагревательным элементом
- Измерение коэффициента пульсации ламп с помощью MegaD-2561
HTU31D - новый датчик температуры и влажности с нагревательным элементом
23/01/2022 14:34:27
Контроллер MegaD-2561 поддерживает несколько популярных датчиков температуры и влажности: HTU21D, SHT31, BME280, BME680. И хотя сенсор SHT31 от швейцарской компании Sensirion быстрее обменивается данными с контроллером, а сенсоры BME280 и BME680 от немецкой Bosch умеют измерять атмосферное давление, настоящую любовь и уважение у любителей домашней автоматизации на долгие годы снискал датчик HTU21D французской фирмы Measurement Specialties. Ведь HTU21D - это неприхотливый, недорогой, достаточно стабильный сенсор, который к тому же не требует инициализации или калибровки и готов работать сразу после подачи питания.
Между тем, в 2014 году техно-гигант TE Connectivity, транснациональная компания со штаб-квартирой в Шаффхаузене, входящая, к слову, в список S&P 500, поглотила производителя HTU21D, французскую Measurement Specialties, а в начале 2021 года анонсировала производство новых датчиков с индексом HTU31D. Заявленные характеристики у новинки на бумаге выглядели более интересными, чем у HTU21D. Например, декларируется более высокая точность и разрешающая способность. Кроме того, в датчик встроен нагревательный элемент, который можно активировать программно для удаления с чувствительного элемента конденсата. Поэтому было решено добавить поддержку HTU31D в прошивку контроллера (4.56b2).

Датчик температуры и влажности HTU31D (TE Connectivity)
В отличие от SHT31 датчик HTU31D не имеет режима непрерывного измерения влажности и температуры. Сделано это, видимо, с целью минимизации потребления датчиком электроэнергии. Поэтому для HTU31D доступен только один алгоритм работы: запрос данных; ожидание; считывание данных. Время ожидания зависит от запрошенной разрешающей способности датчика. При минимальных параметрах точности время конвертации данных занимает 2,6 мс. При максимальных - 19,9 мс. Это довольно много, поэтому в контроллере реализовано два режима работы.

Во встроенном web-интерфейсе при обращении к странице SDA-порта, к которому подключен HTU31D, отображаются данные с минимальной разрешающей способностью, но зато сразу. Такие же данные контроллер возвращает при запросе "cmd=get". А чтобы получить данные с максимальным разрешением и точностью, необходимо действовать в 2 захода.
1. Отправка запроса на конвертацию данных о влажности и температуре (i2c_par=3).
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=htu31d&i2c_par=3
2. Считывание данных. Но не ранее, чем через 20 мс после отправки запроса на конвертацию!
// Влажность http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=htu31d // Температура http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=htu31d&i2c_par=1
Интересно, что несмотря на визуальное сходство с чипом HTU21D, реализация протокола обмена данными у HTU31D заметно отличается. Вероятно, это изделие не является нетронутым наследием Measurement Specialties, а разработка нового датчика велась в кооперации с инженерами TE Connectivity. Любопытной особенностью HTU31D является также то, что он не отвечает на стандартную процедуру сканирования I2C-шины "Scan", реализованную в контроллере.
Чтобы оценить работу нового датчика, я подключил к контроллеру MegaD-2561 помимо HTU31D также SHT31 и HTU21D. Все сенсоры выбирались случайным образом. Так как это экспресс-тестирование, задача которого показать наличие поддержки HTU31D прошивкой контроллера, воспроизводимость результатов с использованием разных экземпляров датчиков в рамках данного материала не исследовалась.
График изменения влажности в моем кабинете за 12 часов. Не удивляйтесь столь низким показаниям. Измерения производились в морозный день 23 января при активно работающем напольном и радиаторном отоплении. Искусственное увлажнение воздуха отсутствовало.

Графики влажности HTU31D, HTU21D и SHT31
Не стану проводить детальный анализ полученных результатов. Замечу только, что показания влажности HTU31D и HTU21D оказались практически идентичными (у HTU31D чуть ниже), но график нового датчика более плавный, что говорит о наличии механизма усреднения данных самим датчиком. А теперь график температуры.

Графики температуры HTU31D, HTU21D, SHT31, TMP117
Для полноты картины к контроллеру также был подключен высокоточный датчик температуры TMP117. Здесь ситуация совершенно иная. Показания температуры у нового HTU31D оказались самими высокими (почти на 0,5С выше, чем у HTU21D), но очень близки к показаниям SHT31. А вот график TMP117 оказался где-то посередине. Следует, впрочем, отметить, что формы кривых и влажности и температуры у всех протестированных образцов в данном диапазоне измерений практически совпадают.
В целях борьбы с конденсатом в HTU31D встроен нагревательный элемент, который способен выпаривать влагу с чувствительного элемента. Для управления нагревателем предусмотрены специальные запросы, примеры которых ниже
// Включить нагреватель (i2c_par=4) http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=htu31d&i2c_par=4 // Выключить нагреватель (i2c_par=5) http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=htu31d&i2c_par=5
После активации нагревателя показания датчика естественно искажаются. Данные о влажности резко снижаются, а о температуре резко растут. Это нормально.
После отключения нагревателя показания приходят в норму при комнатной температуре приблизительно через 10 минут.
Выше описана работа с датчиком по протоколу HTTP/GET. С протоколом MQTT ситуация несколько иная. Если в настройках выбран MQTT, контроллер раз в минуту отправляет в соответствующие топики состояние всех подключенных I2C-устройств. В рамках такого подхода невозможно разделить работу с датчиком на несколько этапов: запрос конвертации, ожидание, считывание данных. Поэтому в режиме MQTT контроллер сначала считывает данные, а затем отправляет запрос на конвертацию. Это позволяет избежать задержек, связанных с ожиданием конвертации. Однако при этом текущие данные, которые считывает контроллер, имеют отношение к тому, что происходило минуту назад. Для домашней автоматизации это обстоятельство обычно не имеет большого значения. Если же необходимо получать всегда только актуальные данные, следует использовать HTTP-запросы.
И еще одно небольшое замечание. На платах датчиков с Aliexpress нет никакой защиты от переполюсовки. Если при подключении такой платы случайно (или специально, как я это сделал для исследования) перепутать плюс и минус питания, то датчик моментально выйдет из строя, испустив из окошка в корпусе красивый сизый дымок. Поэтому будьте внимательны при осуществлении соединений.
Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Добавить комментарий:
Сортировка комментариев: Последние сверху | Первые сверху
2022-01-25 22:41:32 | Алексей
Значит, я был прав что контроллер ранее не имел вообще поддержки HTU31D, в том числе он у меня не определялся с помощью I2C Scan). А теперь будет определяться или там совсем все по другому нежели чем в обычных устройствах I2C?
2022-01-26 10:05:34 | Andrey_B
Поддержка HTU31D добавлена в 4.55b9. Ранее эта поддержка не декларировалась. Как и указано в статье, датчик HTU31D не отвечает на стандартную процедуру сканирования "I2C Scan", которая реализована в контроллере.
2022-03-08 14:04:02 | Igor
На прошивке 4.56b1 датчик htu31d не корректно считает влажность. Если искусственно повысить влажность он начинает выдавать не корректные данные. В начале temp:22.18/hum:4294967262.4294967275
Потом temp:27.92/hum:0.00
2022-04-17 00:00:00 | Andrey_B
Igor, поправил в 4.56b2
2022-09-04 23:38:27 | Igor
Ошибка в публикуемом json в mqtt
Должно быть
{"port":36,"value": {"temp":24.38, "hum":47.37}}
Публикует
{"port":31,"value":"{"temp":12.32, "hum":86.64"}
2022-09-05 15:58:42 | Andrey_B
Igor, исправлено в 4.58b4.