elchupanibrei (elchupanibrei) wrote,
elchupanibrei
elchupanibrei

Category:

Датчик температуры и влажности HTU21D/SHT21/Si7021 - убийца народного DHT22

Si70xx и его клоны подключаются по I²C и нормально работают с другими датчиками. В результате меньше цирка с проводами и освобождаются две ноги микроконтроллера. Достоинства нового сенсора - скорость измерения, точность измерения благодаря индивидуальной заводской калибровке и цена. Всего на $1 дороже DHT22. Недостаток - без танцев больше одного сенсора на I²C шину не повесишь.



Начнем как всегда со схемы

HTU21D_sheild_schematic
схема SHT21, DTT21, Si7021

Радует согласование уровней на полевиках. Очень огорчает стабилизатор 3.3в расположенный очень близко к сенсору. После часа работы температура уплывает на 1°C. Красная плата лишена этого недостатка. Внимание: на плате установлен китайский стабилизатор Torex XC6206-3.3 с максимальным входным напряжением 7 вольт.

Внешний вид брутален.

HTU21D_shield
внешний вид SHT21, DTT21, Si7021


На Github и в сети как всегда одна сплошная копипаста. Народ тупо передирает друг у друга говонокод с ошибками и выдает за свой. Пришлось писать самому, покуривая мануалы. Библиотека поддерживает все плюшки сенсора:

- чтение влажности для SHT21/HTU21D и скомпенсированную влажности для Si70xx
- расчет скомпенсированной влажности для Si70xx, увеличивается точность для RH в диапазоне температур 0°C..80°C
- чтение температуры для SHT21/HTU21D/Si70xx или извлечение температуры от прошлого измерения влажности для Si70xx
- изменение разрешающей способности, баловство - даже на максимальном разрешении сенсор выдает данные как пулемет
- сброс, внимание - сброс регистра нагревателя при этом не происходит, он будет жарить дальше
- статус батареи: больше/меньше 2.25в для SHT21/HTU21D и больше/меньше 1.9в для Si70xx
- вкл./выкл. встроенного нагревателя 5mW, datasheet рекомендует трогать для удаления росы или после длительного воздействия влажности больше 80%

Теперь немножко про особенность сенсора. Я уже собрался выкладывать библиотеку как словил глюк - при записи в некоторые регистры, сенсор вешался и начинал молчать как партизан. Вечер ушел на поиск проблемы. Виноваты были BMP085 и BH1705 сидевшие на той же шине и пытавшиеся говорить одновременно. Перевод HTU21D в режим измерения - HTU21D_TRIGGER_TEMP_MEASURE_HOLD и HTU21D_TRIGGER_HUMD_MEASURE_HOLD, решило проблему. Теперь эти режимы используется по умолчанию, на свой страх и риск их можно поменять назад на HTU21D_TRIGGER_TEMP_MEASURE_NOHOLD и HTU21D_TRIGGER_HUMD_MEASURE_NOHOLD.

Как всегда забирать тут: https://github.com/enjoyneering/HTU21D

UPD. Я так понял единицы смотрят код библиотеки, поэтому расскажу про скрытые плюшки. Датчик умеет отдавать контрольную сумму в формате CRC-8. Библиотека рассчитывает контрольную сумму для принятых данных и сравнивает с полученной. Если суммы не сходятся или во время чтения/записи на шине возникает проблема, библиотека вместо данных выдаёт 255/HTU21D_ERROR, как бы намекая вам что у вас беда.

UPD2: У HTU21D появился клон Si7021 от компании Silicon Labs. Стоит $1 дешевле и имеет защитную пластинку от пыли.

UPD3: В сети появилась отличная статья о всех популярных датчиках: DHT22, AM2302, AM2320, AM2321, SHT71, HTU21D, Si7021, BME280. Победителем стал BME280. На втором месте Si7021 и его клоны. Сенсор SHT71 на третьем. Всеми любимые китайские DHT21, AM2302, AM2320, AM2321 оказались полным шлаком.

UPD4​: Уважаемый vladikoms провел свое независимое расследование популярных датчиков. Подробности тут.

UDP5: Тест лучших из худших тут.

UDP6: Еще один тест over 100500 датчиков. Результаты спрятаны в менюшках слева.

UDP7: Похоже многие свалились с луны и не знают, что для нормальной работы I²C шины линии SDA и SCL должны быть подтянуты к питанию. Почему, читаем тут и тут.

UDP8: Китайцам удалось сделать сенсор не хуже и еще дешевле. Подробности тут.

UDP9: Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый  интервал между измерениями 10..18 секунд. Конечно, сенсор может и быстрее, но полученным значениям я бы верить не стал.
Tags: #arduino, #define, #товарыизкитая, arduino
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 77 comments