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

AHT20 — цифровой датчик влажности и температуры Aosong (ASAIR)

AHT20 — недорогой датчик влажности и температуры Aosong (марка ASAIR) в корпусе 3 × 3 мм с выходом I²C. Он стоит на многих модулях для Arduino, часто в паре с BMP280. Разбираем по даташиту производителя выводы, питание, точность, порядок опроса и пересчёт кодов — и отмечаем места, где английский перевод даташита путает читателя.

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

AHT20 содержит ёмкостный МЭМС-датчик относительной влажности, датчик температуры и специализированную микросхему, которая калибрует результат на заводе и отдаёт его по I²C. Даташит Aosong — перевод с китайского: таблицы в нём частично нарисованы картинками, а несколько ссылок и подписей перепутаны; ниже — только то, что в документе написано однозначно, а нестыковки собраны в последнем разделе. Как AHT20 соотносится с другими датчиками влажности — в статье «Датчики влажности» и в карточке SHT31.

Коротко

  • Питание — 2,2–5,5 В (тип. 3,3 В); предел тоже 5,5 В.
  • Интерфейс — I²C до 400 кГц, адрес 0x38, CRC-8 в конце кадра.
  • Влажность — 0–100 %, ±2 % тип., разрешение 0,024 %, отклик τ63 — 8 с.
  • Температура — −40…85 °C, ±0,3 °C тип., разрешение 0,01 °C, отклик 5–30 с.
  • Ток — 980 мкА при измерении, до 250 нА во сне (3,3 В, ниже 60 °C).
  • Измерение — 80 мс после команды 0xAC; готовность — через 100 мс после включения.
  • Корпус — 3 × 3 × 1,0 мм, шесть контактов снизу.

Выводы

ВыводОбозначениеНазначение
1NCне подключён
2VDDпитание 2,2–5,5 В
3SCLтактовый сигнал I²C
4SDAданные I²C, двунаправленный
5GNDобщий
6NCне подключён

Нумерация — по таблице 5 даташита, вид сверху: выводы 1–3 идут по одной стороне корпуса, 4–6 — по другой в обратную сторону, ключ у вывода 1. Типовая схема (рис. 16) такая: между VDD и GND — конденсатор развязки 10 мкФ как можно ближе к датчику, питание подано через резистор R1 330–390 Ом, который вместе с конденсатором образует RC-фильтр, а SCL и SDA подтянуты резисторами 4,7 кОм к тому же питанию. В тексте допустимый диапазон подтяжек — 2,0–4,7 кОм; подобрать номинал под ёмкость шины поможет калькулятор подтяжки I²C.

Порядок включения важен: VDD подают раньше SCL и SDA или одновременно с ними, иначе ток через выводы шины может запустить кристалл в нерабочем состоянии. На рис. 15 Aosong показывает и питание датчика от вывода микроконтроллера — так его можно перезапустить, сняв питание; наш расчёт: при токе измерения 980 мкА на R1 = 390 Ом падает около 0,38 В, поэтому от 3,3 В на датчике остаётся около 2,9 В — выше минимума 2,2 В (без учёта падения на выводе микроконтроллера). Под датчиком не прокладывают дорожки и полигоны, а от тёплых деталей его отделяют прорезью в плате.

Параметры

По таблицам 1–3, 6–8 даташита. Точность измерена при питании 3,3 В и 25 °C, без учёта гистерезиса и нелинейности, в отсутствие конденсации.

ПараметрМин.Тип.Макс.Условия
Питание2,2 В3,3 В5,5 В
Ток во сне——250 нА3,3 В, ниже 60 °C
Ток при измерении—980 мкА—
Влажность: точность—±2 %по рис. 225 °C
Влажность: повторяемость / гистерезис—±0,1 % / ±1 %—
Влажность: отклик (63 %)—8 с—25 °C, обдув 1 м/с
Влажность: дрейф—менее 1 %/год—
Температура: точность—±0,3 °Cпо рис. 3
Температура: повторяемость / гистерезис—±0,1 °C / ±0,1 °C—
Температура: отклик (63 %)5 с—30 с
Температура: дрейф—менее 0,1 °C/год—
Питание, предельное−0,3 В—5,5 В
Напряжение на SDA и SCL, предельное−0,3 В—VDD + 0,3 В
Низкий уровень выхода SDA——0,4 В3,3 В, ток до 4 мА
Низкий уровень входа VIL0—30 % VDD
Высокий уровень входа VIH70 % VDD—VDD
Частота SCL0—100 / 400 кГцStandard / Fast mode

Нормальный рабочий диапазон влажности — 0–80 %. После 60 часов при высокой влажности показания уходят примерно на 3 % и потом медленно возвращаются; ускорить восстановление можно сушкой при 60–85 °C и влажности ниже 5 % в течение 2–10 часов. После пайки оплавлением полимеру нужна перегидратация: 12–72 часа при 25 °C и влажности выше 75 % либо 2–6 часов при 60–85 °C и влажности выше 85 %.

Порядок опроса

  1. После включения подождать не меньше 100 мс.
  2. Прочитать байт состояния (байт адреса на чтение — 0x71). Бит 7 — «занят», бит 3 — «откалиброван». Если состояние & 0x18 ≠ 0x18, датчик инициализируют записью в регистры 0x1B, 0x1C, 0x1E по примеру с сайта Aosong — сам даташит процедуру не раскрывает. Проверка нужна только после включения.
  3. Через 10 мс отправить команду измерения: 0xAC, 0x33, 0x00.
  4. Подождать 80 мс и прочитать байт состояния: при бите 7, равном 0, данные готовы, при 1 — ждать дальше.
  5. Прочитать шесть байт: состояние, два с половиной байта влажности и два с половиной байта температуры. Седьмой байт — контрольная сумма; если она не нужна, мастер отвечает NACK после шестого байта.

Контрольная сумма — CRC-8 с полиномом 1 + x⁴ + x⁵ + x⁸ и начальным значением 0xFF. Наш вывод: это тот же полином 0x31 и то же начальное значение, что у Sensirion SHT3x, так что для проверки годится одна функция и калькулятор CRC.

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

Влажность и температура приходят 20-битными кодами S. По рисунку на с. 13 код влажности занимает байты 1, 2 и старшие четыре бита байта 3, код температуры — младшие четыре бита байта 3 и байты 4, 5 (байт 0 — состояние):

  • влажность, %: RH = S / 2²⁰ × 100;
  • температура, °C: T = S / 2²⁰ × 200 − 50.

Наш расчёт: пришли байты 0x18, 0x80, 0x00, 0x06, 0x00, 0x00. Состояние 0x18 — не занят, откалиброван. Код влажности 0x80000 = 524 288, RH = 524 288 / 1 048 576 × 100 = 50,0 %. Код температуры 0x60000 = 393 216, T = 393 216 / 1 048 576 × 200 − 50 = 75 − 50 = 25,0 °C.

Наш вывод о разрядности: 20 бит в кадре не означают 20 бит точности. Шаг 20-битного кода — 100 / 2²⁰ ≈ 0,0001 %, а заявленное разрешение влажности — 0,024 %, что соответствует примерно 12 битам (100 / 4096 ≈ 0,024 %). Выводить показания AHT20 с тремя-четырьмя знаками после запятой бессмысленно.

Сравнение с SHT31

AHT20SHT31
Питание2,2–5,5 В2,15–5,5 В
Адреса I²C0x380x44, 0x45
Влажность, тип.±2 %±2 %
Температура, тип.±0,3 °C±0,2 °C (0…90 °C)
Время измерения80 мс (ожидание после команды)2,5–12,5 мс тип.
Ток при измерении980 мкА600 мкА тип.
Нагревательнетесть

Обе микросхемы проверяют кадр одним и тем же CRC-8. Наш вывод: по типичной точности они близки, но SHT31 быстрее, допускает два адреса и подробнее документирован — у Sensirion для каждого исполнения есть графики максимальной погрешности по всему диапазону. AHT20 проще в обмене: один адрес, одна команда измерения. Датчик с собственным однопроводным протоколом — DHT22, а влажность вместе с давлением меряет BME280; на модулях AHT20 часто соседствует с барометром BMP280, и адреса у них не пересекаются. Об адресах на шине — на странице «Адрес I²C», о собственном нагреве датчиков — на странице «Самонагрев».

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

  • «Команда» 0x71. В разделе 7.4 сказано, что байт состояния получают «отправкой 0x71». По рисунку на с. 13 это байт адреса на чтение (адрес 0x38 и бит R = 1 в младшем разряде), а не команда: состояние просто читают.
  • Время запуска. Разделы 7.1 и 7.4 требуют не меньше 100 мс после включения, а примечание к рис. 15 разрешает подавать высокий уровень на SCL и SDA через 5 мс. Наш вывод: первый обмен — не раньше 100 мс.
  • Частота SCL. Раздел 5.2 говорит, что минимальной частоты SCL нет, раздел 4.4 советует 10–400 кГц во время измерения.
  • Подписи и ссылки. В таблице 7 входные уровни VIL и VIH подписаны как выходные; раздел 6.1 и подпись к рис. 7 ссылаются на «таблицу 2» вместо таблицы 3 с электрическими параметрами; сноска 5 к таблице 3 описывает средний ток при измерении раз в 2 с, которого в таблице нет.
  • Площадка снизу. Раздел 4.1 описывает открытую теплоотводящую площадку и трафарет 1,4 × 2,3 мм под неё, но на чертеже корпуса (рис. 1) только шесть контактов. Наш вывод: посадочное место рисуют по рис. 1 и рис. 8, а не по тексту.
  • Диапазоны. Рабочая температура — до 85 °C, а график погрешности температуры (рис. 3) обрывается на 80 °C. Влажность — 0–100 % в таблице 1 и «нормальный диапазон 0–80 %» в сноске 3; там же сдвиг «>3 %» после 60 часов при 90 %, а в разделе 3.1 — «+3 %» после 60 часов при влажности выше 80 %.

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

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

Только 0x38: вывода выбора адреса у AHT20 нет. Байт адреса на запись — 0x70, на чтение — 0x71. Поэтому два AHT20 на одну шину без коммутатора шины или отдельных линий I²C не поставить; соседи с другими адресами, например BMP280 (0x76 или 0x77), не мешают.

Как опросить AHT20?

После включения подождать не меньше 100 мс и прочитать байт состояния. Если биты 3 и 4 не равны единицам (состояние & 0x18 ≠ 0x18), датчик нужно инициализировать — порядок даташит не описывает и отсылает к примеру на сайте Aosong. Затем отправить 0xAC 0x33 0x00, подождать 80 мс, убедиться, что бит 7 состояния равен 0, и прочитать шесть байт данных и, при желании, седьмой — CRC.

Можно ли питать AHT20 от 5 В?

По даташиту — да: рабочее питание 2,2–5,5 В, подтяжки SCL и SDA подключают к тому же VDD. Но предельное напряжение питания в таблице 6 — тоже 5,5 В, то есть запаса до разрушения нет. Наш вывод: от 5-вольтовой линии с выбросами надёжнее питать датчик через стабилизатор 3,3 В — тогда и уровни шины нужно согласовывать.

Почему AHT20 показывает завышенную температуру?

Самонагрев: при измерении датчик потребляет около 980 мкА, и Aosong советует опрашивать его не чаще раза в секунду, чтобы собственный нагрев оставался не больше 0,1 °C. На температуру влияют и детали рядом на плате — даташит рекомендует прорезь в плате вокруг датчика и не прокладывать дорожки и полигоны под ним.

Источники

  1. Aosong (ASAIR). Data Sheet AHT20 Humidity and Temperature Sensor (Version V1.0, May 2021) — с. 1, рис. 1 — корпус 3 × 3 × 1,0 мм; с. 2, табл. 1–2 — влажность и температура: разрешение, точность, повторяемость, гистерезис, отклик, диапазоны, дрейф; с. 3, табл. 3 и сноски 1–6 — питание 2,2–5,5 В, токи 250 нА и 980 мкА, мощность; рабочий диапазон 0–80 %RH; с. 6, разд. 4.1 — перегидратация после пайки; с. 7, разд. 4.4 — самонагрев, опрос не чаще раза в секунду; с. 8, рис. 15 — порядок подачи питания; с. 9, табл. 5, рис. 16 — выводы, 10 мкФ, RC-фильтр, подтяжки 2,0–4,7 кОм; с. 10, табл. 6–7 — предельные режимы, уровни входов и выходов; с. 11, табл. 8 — I²C до 400 кГц, запуск ≥100 мс; с. 12–13, разд. 7.3–8.2 — адрес 0x38, команды 0x71 и 0xAC 0x33 0x00, байт состояния, CRC-8, формулы пересчёта
  2. Sensirion. Datasheet SHT3x-DIS: Humidity and Temperature Sensor (Version 7, December 2022) — для сравнения: питание 2,15–5,5 В, адреса 0x44 и 0x45, ±2 %RH и ±0,2 °C тип. (SHT31), CRC-8 с полиномом 0x31 и начальным 0xFF (табл. 1–3, 8, 20)

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