ФОРУМ КУПИТЬ

Последние статьи из блога

ВСЕ СТАТЬИ

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 (влажность)
Графики влажности HTU31D, HTU21D и SHT31

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

MegaD-2561 - SHT31 тестирование (температура)
Графики температуры 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-09-05 15:58:42 | Andrey_B
Igor, исправлено в 4.58b4.


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-04-17 00:00:00 | Andrey_B
Igor, поправил в 4.56b2


2022-03-08 14:04:02 | Igor
На прошивке 4.56b1 датчик htu31d не корректно считает влажность. Если искусственно повысить влажность он начинает выдавать не корректные данные. В начале temp:22.18/hum:4294967262.4294967275
Потом temp:27.92/hum:0.00


2022-01-26 10:05:34 | Andrey_B
Поддержка HTU31D добавлена в 4.55b9. Ранее эта поддержка не декларировалась. Как и указано в статье, датчик HTU31D не отвечает на стандартную процедуру сканирования "I2C Scan", которая реализована в контроллере.


2022-01-25 22:41:32 | Алексей
Значит, я был прав что контроллер ранее не имел вообще поддержки HTU31D, в том числе он у меня не определялся с помощью I2C Scan). А теперь будет определяться или там совсем все по другому нежели чем в обычных устройствах I2C?