Перейти к содержанию

Цифровые датчики влажности: SHT3x, HDC1080, HDC2080 и BME280

Цифровой датчик влажности сам измеряет, калибрует и выдаёт готовое число по I²C. Разбираем по даташитам производителей, чем различаются популярные SHT30–SHT35, HDC1080, HDC2080 и BME280, как их подключить, пересчитать коды и где поставить, чтобы они не врали.

Обновлено Редакция GAW

Внутри каждого датчика — влагочувствительный элемент (у SHT3x и HDC2080 производители прямо называют его ёмкостным), АЦП и калибровочные коэффициенты, записанные на заводе: микросхема сама превращает сигнал в готовые проценты относительной влажности. Рядом на кристалле стоит термометр: относительная влажность сильно зависит от температуры, и без неё число не имеет смысла.

Сравнение

По даташитам производителей:

ПараметрSHT30 / SHT31 / SHT35HDC1080HDC2080BME280
Влажность, типично±2 / ±2 / ±1,5 %±2 %±2 %, максимум ±3 %±3 % (20–80 %, 25 °C)
Температура, типично±0,2 / ±0,2 / ±0,1 °C±0,2 °C, до ±0,4 °C±0,2 °C±0,5 °C при 0–65 °C
Время отклика по влажности (63 %)8 с15 с8 с1 с
Дрейфменьше 0,25 %/год±0,25 %/год±0,25 %/год—
Питание2,15–5,5 В2,7–5,5 В1,62–3,6 В1,71–3,6 В
Адрес I²C0x44 или 0x450x400x40 или 0x410x76 или 0x77
Нагревательесть, 3,6–33 мВтестьестьнет
Ток при измерении раз в секунду1,7 мкА1,3 мкА (11 бит, влажность и температура)0,55 мкА1,8 мкА (влажность и температура)

Погрешность зависит от влажности и температуры: по графикам Sensirion у SHT30 она ±2 % в середине диапазона и до ±4 % около 0 и 100 %, у SHT31 — ±2 % во всём диапазоне 0–100 % при 0–80 °C, у SHT35 — ±1,5 % и до ±2 % при высокой влажности. BME280 заметно быстрее остальных откликается на изменение влажности и заодно измеряет давление — подробнее о нём в статье «Датчики давления». HDC2080 умеет сам опрашивать датчик по таймеру и будить микроконтроллер прерыванием при выходе за пороги.

Подключение

Все четыре работают по I²C. Вывод выбора адреса подключают к общему проводу или к питанию: оставлять его свободным Sensirion запрещает, у HDC2080 неподключённый вывод даёт адрес 0x40. Два одинаковых датчика на одной шине разводят этим выводом; адреса всех популярных устройств — в статье об адресах I²C.

SHT3x и HDC1080 работают от 5 В, поэтому с платой Arduino на 5 В их соединяют напрямую, подтягивая шину к тому же питанию. HDC2080 и BME280 — только до 3,6 В. Подтягивающие резисторы считают как для любой шины — в калькуляторе подтяжек I²C.

Пересчёт кодов

ДатчикВлажность, %Температура, °C
SHT3x100 · S / 65535−45 + 175 · S / 65535
HDC1080100 · S / 65536165 · S / 65536 − 40

S — 16-битный код из датчика. SHT3x добавляет к каждой паре байтов контрольную сумму CRC-8 с полиномом 0x31 и начальным значением 0xFF; пример из даташита — CRC(0xBEEF) = 0x92. Проверить свою реализацию можно в калькуляторе CRC, это пресет CRC-8/NRSC-5. Время измерения SHT3x зависит от выбранной повторяемости: 2,5, 4,5 или 12,5 мс типично. У HDC1080 по регистру 0xFE читается идентификатор производителя 0x5449, по 0xFF — идентификатор устройства 0x1050: так проверяют, что на шине именно этот датчик.

Размещение и условия работы

Рекомендуемый диапазон. Sensirion рекомендует 5–60 °C и 20–80 % влажности. Долгое пребывание при высокой влажности сдвигает показания — например, на +3 % после 60 часов выше 80 %; вернувшись в нормальные условия, датчик постепенно восстанавливается сам.

Нагрев. Датчик измеряет влажность воздуха при своей температуре. Если его греет стабилизатор, микроконтроллер или он сам из-за частых измерений, относительная влажность у него получится ниже, чем в комнате. Датчик выносят на край платы, подальше от тёплых компонентов, и не опрашивают чаще, чем нужно.

Загрязнения. И Sensirion, и TI предупреждают: пары растворителей, клейкие ленты, клеи и упаковочные материалы ускоряют дрейф. Датчик не заливают компаундом и не закрывают лентой — нужен свободный доступ воздуха через защитную мембрану или отверстия в корпусе.

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

Другие датчики — в разделе «Датчики».

Частые вопросы

Какой датчик влажности самый точный из популярных?

Из рассмотренных — SHT35: по Sensirion ±1,5 % типично и ±0,1 °C в диапазоне 20–60 °C. SHT30, SHT31, HDC1080 и HDC2080 дают ±2 % типично, BME280 — ±3 %. Но на практике точность чаще портит не датчик, а его размещение: нагрев от платы и плохой обмен воздухом.

Какой адрес I²C у SHT31?

0x44, если вывод ADDR соединён с общим проводом, и 0x45, если с питанием. Оставлять ADDR свободным Sensirion запрещает. У HDC1080 адрес один — 0x40, у HDC2080 — 0x40 или 0x41 по выводу ADDR, у BME280 — 0x76 или 0x77.

Можно ли подключить SHT31 к Arduino на 5 В?

Да: SHT3x работает от 2,15 до 5,5 В, HDC1080 — от 2,7 до 5,5 В, поэтому их можно питать от 5 В вместе с подтяжками шины. HDC2080 и BME280 рассчитаны только до 3,6 В — им нужны стабилизатор и согласование уровней.

Почему датчик влажности показывает завышенную влажность после тумана или душа?

После долгого пребывания при влажности выше 80 % показания сдвигаются: Sensirion приводит пример +3 % после 60 часов, а затем датчик сам медленно возвращается к калибровке. Конденсат на датчике сгоняют встроенным нагревателем — он есть у SHT3x, HDC1080 и HDC2080.

Источники

  1. Sensirion. Datasheet SHT3x-DIS: Humidity and Temperature Sensor (Version 7, December 2022) — табл. 1, 2 — точность SHT30, SHT31, SHT35, отклик, дрейф; разд. 1.1 — рекомендуемые условия 5–60 °C и 20–80 %; разд. 2 — питание 2,15–5,5 В, токи, нагреватель, время измерения; табл. 8 — адреса 0x44 и 0x45; табл. 20 — CRC-8; разд. 4.13 — пересчёт кодов
  2. Texas Instruments. HDC1080 Low Power, High Accuracy Digital Humidity Sensor with Temperature Sensor (SNAS672A, revised January 2016) — ±2 % RH, ±0,2 °C, 2,7–5,5 В, адрес 0x40, отклик 15 с, дрейф ±0,25 %/год, нагреватель; разд. 8.6 — регистры и формулы пересчёта
  3. Texas Instruments. HDC2080 Low-Power Humidity and Temperature Digital Sensor (SNAS678C, revised July 2021) — ±2 % типично и ±3 % максимум, 1,62–3,6 В, адреса 0x40 и 0x41, отклик 8 с, нагреватель 90 мА, прерывания по порогам
  4. Bosch Sensortec. BME280 Combined humidity and pressure sensor: Data sheet (BST-BME280-DS001-24, February 2024) — влажность ±3 % при 20–80 % и 25 °C, гистерезис ±1 %, отклик 1 с; питание 1,71–3,6 В

Нашли ошибку?