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.
Выводы
| Вывод | Обозначение | Назначение |
|---|---|---|
| 1 | SDA | данные I²C, вход/выход с открытым стоком |
| 2 | ADDR | выбор адреса: VSS — 0x44, VDD — 0x45; не оставлять свободным |
| 3 | ALERT | сигнал тревоги, выход; если не нужен — оставить свободным |
| 4 | SCL | тактовый сигнал I²C |
| 5 | VDD | питание |
| 6 | nRESET | сброс, активный ноль; внутри подтяжка 50 кОм к VDD |
| 7 | R | электрически не используется, соединить с VSS |
| 8 | VSS | общий |
Нумерация в таблице 7 даташита дана в «прозрачном» виде сверху: выводы 1–4 слева сверху вниз, 5–8 справа снизу вверх. Площадка в центре соединена с VSS внутри; паять её Sensirion рекомендует ради механической прочности. На питании — конденсатор 100 нФ как можно ближе к датчику. Неиспользуемый nRESET оставляют свободным или подключают к VDD через резистор не меньше 2 кОм; для сброса хватает импульса от 1 мкс.
Подтяжки SCL и SDA обязательны; в качестве примера Sensirion приводит 10 кОм и советует считать их по ёмкости шины и частоте — в калькуляторе подтяжки I²C. Для полного аппаратного сброса снимают питание не только с VDD, но и с SDA, SCL и ADDR, иначе датчик питается через защитные диоды.
Параметры
По таблицам 1–4 и 21 даташита. Типичные значения — при 25 °C, минимумы и максимумы токов — для −40…125 °C, времена — для питания 2,4–5,5 В.
| Параметр | Мин. | Тип. | Макс. | Условия |
|---|---|---|---|---|
| Питание VDD | 2,15 В | 3,3 В | 5,5 В | |
| Порог включения VPOR | 1,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/год | |
| Низкий уровень входа VIL | 0 | — | 0,3 VDD | |
| Высокий уровень входа VIH | 0,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 | Без растяжения |
|---|---|---|
| высокая | 0x2C06 | 0x2400 |
| средняя | 0x2C0D | 0x240B |
| низкая | 0x2C10 | 0x2416 |
Периодический режим запускают командами 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
| SHT31 | AHT20 | BME280 | |
|---|---|---|---|
| Питание | 2,15–5,5 В | 2,2–5,5 В | 1,71–3,6 В |
| Адреса I²C | 0x44, 0x45 | 0x38 | 0x76, 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-8 | CRC-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 мВт в зависимости от питания. На время работы нагревателя показания температуры и влажности окружающего воздуха не верны (наш вывод).
Источники
- 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 — заказные номера
- 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)
- 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)
Нашли ошибку?
Смотрите также
- Микросхемы датчиковТок, давление, влажность, температура, свет, ИК: карточки и статьи
- Датчики влажности SHT3x, HDC1080, HDC2080, BME280Точность, адреса, питание, отклик, дрейф, нагреватель, пересчёт и размещение
- Датчики температуры: NTC, Pt100, термопара, DS18B20, TMP117Термистор, Pt100, термопара, микросхемы и датчик МК: точность, подключение, самонагрев
- AHT20Влажность и температура по I²C: выводы, адрес 0x38, опрос командой 0xAC, пересчёт, CRC
- BME280Давление, влажность, температура: питание, адреса, точность, режимы
- DHT11 и DHT22Датчики влажности по одному проводу: точность, формат 40 бит, тайминги, подтяжка
- Относительная влажностьПар к насыщенному пару при той же температуре: формула и пример
- Точка росыТемпература насыщения: формула, примеры, конденсат на электронике
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- CRCЦиклический избыточный код для обнаружения ошибок
- Растягивание такта I²CВедомое держит SCL в нуле: зачем, ограничения SMBus, совместимость
- Калькулятор CRCCRC-8, CRC-16, CRC-32, Modbus, блок CRC STM32, код на C
- Подтягивающие резисторы I²CДиапазон Rp по напряжению, скорости и ёмкости шины