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

SHT31 (SHT3x-DIS) — цифровой датчик влажности и температуры Sensirion

SHT31 — датчик относительной влажности и температуры Sensirion в корпусе DFN 2,5 × 2,5 мм с выходом I²C. Он работает от 2,15 до 5,5 В, поэтому подключается к 5-вольтовой Arduino без преобразователя уровней. Разбираем по даташиту SHT3x-DIS выводы, адреса, точность трёх исполнений, команды, пересчёт кодов и контрольную сумму.

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

SHT31 входит в семейство SHT3x-DIS: SHT30, SHT31 и SHT35 одинаковы по выводам и командам и различаются точностью. Внутри — ёмкостный датчик относительной влажности, датчик температуры, АЦП и память калибровки; наружу выходят готовые 16-битные коды, уже линеаризованные и скомпенсированные по температуре и питанию. Сравнение с HDC1080, HDC2080 и BME280 — в статье «Датчики влажности», выбор термометра — в статье «Датчики температуры».

Коротко

  • Питание — 2,15–5,5 В (тип. 3,3 В), предел 6 В; на выводах — не выше VDD + 0,3 В.
  • Интерфейс — I²C от 0 до 1000 кГц, адреса 0x44 и 0x45, CRC-8 после каждых двух байт.
  • Влажность — 0–100 %, ±2 % тип. (SHT35 — ±1,5 %), разрешение 0,01 %, отклик τ63 — 8 с.
  • Температура — −40…125 °C, ±0,2 °C тип. при 0…90 °C (SHT31), разрешение 0,01 °C.
  • Измерение — 2,5; 4,5 или 12,5 мс тип. в зависимости от повторяемости.
  • Ток — 600 мкА при измерении, 0,2 мкА в покое, 1,7 мкА в среднем при одном измерении в секунду с низкой повторяемостью.
  • Корпус — DFN-8 2,5 × 2,5 × 0,9 мм, шаг 0,5 мм, площадка снизу соединена с VSS.

Выводы

ВыводОбозначениеНазначение
1SDAданные I²C, вход/выход с открытым стоком
2ADDRвыбор адреса: VSS — 0x44, VDD — 0x45; не оставлять свободным
3ALERTсигнал тревоги, выход; если не нужен — оставить свободным
4SCLтактовый сигнал I²C
5VDDпитание
6nRESETсброс, активный ноль; внутри подтяжка 50 кОм к VDD
7Rэлектрически не используется, соединить с VSS
8VSSобщий

Нумерация в таблице 7 даташита дана в «прозрачном» виде сверху: выводы 1–4 слева сверху вниз, 5–8 справа снизу вверх. Площадка в центре соединена с VSS внутри; паять её Sensirion рекомендует ради механической прочности. На питании — конденсатор 100 нФ как можно ближе к датчику. Неиспользуемый nRESET оставляют свободным или подключают к VDD через резистор не меньше 2 кОм; для сброса хватает импульса от 1 мкс.

Типовая схема включения SHT3x-DIS по шине I²CВывод 5 (VDD) датчика подключён к питанию 2,15–5,5 В, между питанием и общим проводом рядом с датчиком — конденсатор 100 нФ. Линии SCL (вывод 4) и SDA (вывод 1) идут к микроконтроллеру и подтянуты к питанию резисторами Rp, например по 10 кОм. Вывод ADDR (2) соединён с VSS — адрес 0x44, выводы VSS (8) и R (7) — с общим проводом. Выводы nRESET (6) и ALERT (3) оставляют свободными или подключают к микроконтроллеру.SHT3x-DISnRESET6ALERT3ADDR2VSS8VDD5SCL4SDA1R7МКSCLSDAVDD2,15–5,5 В100 нФRpRpк МК или свободенк МК или свободенADDR на VSS → 0x44Rp — например 10 кОм (Sensirion), номинал зависит от ёмкости шины и частоты; ADDR не оставлять свободным
Типовая схема SHT3x-DIS по рис. 11 даташита Sensirion: 100 нФ между VDD и VSS у датчика, подтяжки Rp на SCL и SDA, ADDR на VSS — адрес 0x44

Подтяжки SCL и SDA обязательны; в качестве примера Sensirion приводит 10 кОм и советует считать их по ёмкости шины и частоте — в калькуляторе подтяжки I²C. Для полного аппаратного сброса снимают питание не только с VDD, но и с SDA, SCL и ADDR, иначе датчик питается через защитные диоды.

Параметры

По таблицам 1–4 и 21 даташита. Типичные значения — при 25 °C, минимумы и максимумы токов — для −40…125 °C, времена — для питания 2,4–5,5 В.

ПараметрМин.Тип.Макс.Условия
Питание VDD2,15 В3,3 В5,5 В
Порог включения VPOR1,8 В2,10 В2,15 В
Ток в покое—0,2 мкА2,0 мкАрежим single shot, 25 °C; до 6,0 мкА при 125 °C
Ток в покое—45 мкА—периодический режим
Ток при измерении—600 мкА1500 мкА
Средний ток—1,7 мкА—1 измерение в секунду, низкая повторяемость
Мощность нагревателя3,6 мВт—33 мВтзависит от питания
Время включения tPU—0,5 мс1 мсот VPOR до готовности
Время измерения—2,5 / 4,5 / 12,5 мс4 / 6 / 15 мснизкая / средняя / высокая повторяемость
Повторяемость влажности—0,21 / 0,15 / 0,08 %—3σ, три режима
Повторяемость температуры—0,15 / 0,08 / 0,04 °C—3σ, три режима
Гистерезис влажности—±0,8 %—25 °C
Отклик (63 %)—8 с / >2 с—влажность / температура
Дрейф влажности—менее 0,25 %/годменее 0,5 %/год
Дрейф температуры——менее 0,03 °C/год
Низкий уровень входа VIL0—0,3 VDD
Высокий уровень входа VIH0,7 VDD—VDD
Ёмкость шины——400 пФ

Ниже 2,4 В время измерения дольше: до 4,5; 6,5 и 15,5 мс. Лучше всего датчик работает при 5…60 °C и 20–80 % влажности; после 60 часов при влажности выше 80 % показания сдвигаются примерно на +3 % и затем сами возвращаются к калибровке. Наш расчёт энергии: 600 мкА × 2,5 мс раз в секунду дают 1,5 мкА плюс 0,2 мкА покоя — ровно 1,7 мкА из таблицы; при высокой повторяемости (12,5 мс) получится около 7,7 мкА. Наш вывод: для батарейного устройства нужен режим single shot — в периодическом режиме ток покоя больше в 225 раз (45 / 0,2).

Команды

Все команды — 16-битные, и между ними нужна пауза не меньше 1 мс. В режиме single shot одна команда запускает одно измерение. С растяжением SCL датчик держит SCL в нуле, пока измеряет; без растяжения он отвечает NACK на попытку чтения, пока данных нет.

ПовторяемостьС растяжением SCLБез растяжения
высокая0x2C060x2400
средняя0x2C0D0x240B
низкая0x2C100x2416

Периодический режим запускают командами 0x20xx–0x27xx на 0,5; 1; 2; 4 или 10 измерений в секунду (например, 0x2130 — одно измерение в секунду с высокой повторяемостью), а результаты забирают командой 0xE000. При 10 измерениях в секунду Sensirion предупреждает о самонагреве. Прочие команды: 0x2B32 — режим ART (ускоренный отклик, 4 Гц), 0x3093 — остановка периодического режима, 0x30A2 — программный сброс, 0x306D и 0x3066 — включение и выключение нагревателя, 0xF32D — чтение регистра статуса, 0x3041 — его очистка. Сброс общим вызовом I²C (байты 0x00, 0x06) сбросит все устройства на шине, которые поддерживают general call.

Пересчёт кодов и контрольная сумма

Датчик отдаёт шесть байт: два байта температуры, байт CRC, два байта влажности, байт CRC. Коды S — беззнаковые 16-битные числа:

  • влажность, %: RH = 100 × S / (2¹⁶ − 1);
  • температура, °C: T = −45 + 175 × S / (2¹⁶ − 1).

Наш расчёт: пришли байты 0x66 0x66 и 0x80 0x00. Код температуры 0x6666 = 26 214, T = −45 + 175 × 26 214 / 65 535 = −45 + 70,0 = 25,0 °C. Код влажности 0x8000 = 32 768, RH = 100 × 32 768 / 65 535 ≈ 50,0 %.

Контрольная сумма — CRC-8 с полиномом 0x31 (x⁸ + x⁵ + x⁴ + 1), начальным значением 0xFF, без отражения и без финального XOR; она считается по двум предыдущим байтам. Пример из даташита: CRC(0xBEEF) = 0x92 — его удобно повторить в калькуляторе CRC. При записи CRC обязательна: датчик не принимает данные с неверной суммой. Точку росы по показаниям считают отдельно — см. статью «Точка росы».

Чем SHT31 отличается от AHT20 и BME280

SHT31AHT20BME280
Питание2,15–5,5 В2,2–5,5 В1,71–3,6 В
Адреса I²C0x44, 0x450x380x76, 0x77
Влажность, тип.±2 %±2 %±3 % (20–80 %, 25 °C)
Температура, тип.±0,2 °C (0…90 °C)±0,3 °C±0,5 °C (0…65 °C)
Отклик влажности (63 %)8 с8 с1 с
Давлениенетнетесть
Контрольная суммаCRC-8CRC-8нет

Данные — из даташитов каждой микросхемы. Наш вывод: SHT31 удобнее остальных двух там, где нужны два адреса на выбор, питание от 5 В и максимальные допуски, которые производитель показывает на графиках; AHT20 обходится одним адресом и одной командой измерения, но его даташит заметно беднее; BME280 быстрее откликается и меряет давление, но только при питании до 3,6 В. Старые датчики с собственным однопроводным протоколом — в карточке DHT11 и DHT22, об адресах на общей шине — на странице «Адрес I²C».

Расхождения в документации

  • Нагрузочная способность ALERT. В таблице 3 указано «1.5x VDD mA» без минимума и максимума, хотя раздел 3.5 отсылает к этой строке за допустимой нагрузкой. Наш вывод: ALERT используют только для управления входом микроконтроллера или транзистором — Sensirion сам предупреждает, что ток через этот вывод греет датчик.
  • Частота I²C. Раздел 3.2 требует соответствия Fast Mode для частот до 400 кГц, а таблица 21 и раздел 4 допускают до 1000 кГц, не называя режим Fast-mode Plus. Наш вывод: выше 400 кГц ориентируйтесь на тайминги таблицы 21, а не на спецификацию шины.
  • Нижняя граница питания. Минимум питания 2,15 В совпадает с максимальным порогом включения VPOR 2,15 В — запаса между ними нет. Наш вывод: от источника, который может проседать ниже 2,4 В, датчик работает, но с увеличенным временем измерения (таблица 5) и риском сброса.

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

Чем отличаются SHT30, SHT31 и SHT35?

Только точностью — выводы, адреса и команды у них общие. Типичная погрешность влажности: SHT30 и SHT31 — ±2 %, SHT35 — ±1,5 %; температуры: SHT30 — ±0,2 °C при 0…65 °C, SHT31 — ±0,2 °C при 0…90 °C, SHT35 — ±0,1 °C при 20…60 °C. Разница видна и на графиках Sensirion: у SHT30 типичная погрешность влажности у краёв шкалы растёт до ±4 %, а у SHT31 типичные ±2 % держатся во всём диапазоне 0–100 % при 0…80 °C.

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

0x44, если вывод ADDR (2) соединён с общим проводом, и 0x45, если с питанием. Оставлять ADDR свободным нельзя. Адрес можно менять на ходу, переключая уровень ADDR между обменами: так Sensirion предлагает ставить на одну шину больше двух датчиков — каждому свой провод ADDR.

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

Да: рабочее питание 2,15–5,5 В, поэтому датчик питают от 5 В и подтягивают SCL и SDA к тем же 5 В. Нельзя другое — питать датчик от 3,3 В и оставлять подтяжки к 5 В: напряжение на выводах не должно превышать VDD + 0,3 В. У готовых модулей, кроме самого датчика, бывает свой стабилизатор — это проверяют по схеме модуля.

Зачем в SHT31 нагреватель?

По даташиту — только для проверки достоверности: включённый командой 0x306D нагреватель поднимает температуру датчика на несколько градусов; по тому, что показания при этом сдвинулись, судят об исправности датчика (наш вывод). Мощность нагревателя — от 3,6 до 33 мВт в зависимости от питания. На время работы нагревателя показания температуры и влажности окружающего воздуха не верны (наш вывод).

Источники

  1. Sensirion. Datasheet SHT3x-DIS: Humidity and Temperature Sensor (Version 7, December 2022) — с. 1 — питание 2,15–5,5 В, I²C до 1 МГц, DFN 2,5 × 2,5 × 0,9 мм; с. 2, табл. 1–2 — точность SHT30/SHT31/SHT35, повторяемость, разрешение, гистерезис, отклик, дрейф; с. 3–5, рис. 2–10 — максимальные допуски; с. 6, разд. 1.1 и табл. 3 — рекомендуемые условия, VPOR, токи, нагреватель; с. 7, табл. 4–6 — время включения, сброса и измерения, предельные режимы; с. 8–9, табл. 7–8, рис. 11 — выводы, подтяжки, адреса 0x44 и 0x45, Alert, nRESET; с. 9–13, табл. 9–19 — команды, статус; с. 14, табл. 20–21, разд. 4.13 — CRC-8, формулы пересчёта, уровни и тайминги I²C; с. 17, табл. 22 — шаг 0,5 мм; с. 19, табл. 23 — заказные номера
  2. Aosong (ASAIR). Data Sheet AHT20 Humidity and Temperature Sensor (Version V1.0, May 2021) — для сравнения: питание 2,2–5,5 В, адрес 0x38, ±2 %RH и ±0,3 °C тип., отклик 8 с, 20-битные коды (с. 2, 3, 12–13)
  3. Bosch Sensortec. BME280 Combined humidity and pressure sensor: Data sheet (BST-BME280-DS001-24, revision 1.24, February 2024) — для сравнения: VDD 1,71–3,6 В, ±3 %RH, отклик 1 с, температура ±0,5 °C при 0–65 °C, адреса 0x76 и 0x77 (табл. 1, 2, 4; разд. 6.2)

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