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

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

DHT11 и DHT22 — датчики влажности и температуры Aosong с цифровым выходом по одному проводу: в корпусе ёмкостный элемент влажности, термистор и 8-битный микроконтроллер с калибровкой. Внешне они почти одинаковы, но различаются диапазонами, точностью, форматом температуры и таймингом стартового импульса. Разбираем по документации производителя, чем они отличаются и как правильно их читать.

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

DHT11 и DHT22 (Aosong, торговая марка ASAIR, Гуанчжоу) — модули в пластиковом корпусе с решёткой, внутри которых ёмкостный датчик относительной влажности, датчик температуры и 8-битный микроконтроллер с калибровочными коэффициентами. Наружу выходит готовый результат по одному проводу данных с подтягивающим резистором. Название DHT22 в документации производителя — второе имя AM2302. Обзор датчиков влажности с интерфейсом I²C, которые точнее и быстрее, — в статье «Датчики влажности».

Коротко

  • DHT22 (AM2302) — 0–99,9 %RH, ±2 %RH; −40…+80 °C, ±0,5 °C тип. (±1 °C макс.); шаг 0,1; питание 3,3–5,5 В.
  • DHT11 — 5–95 %RH, ±5 %RH; −20…+60 °C, ±2 °C; питание 3,3–5,5 В.
  • Опрос — не чаще раза в 2 с; датчик отдаёт результат предыдущего измерения.
  • Обмен — 40 бит: влажность 16, температура 16, контрольная сумма 8; собственный протокол, не 1-Wire.
  • Подтяжка — 5,1 кОм (DHT22, кабель до 30 м), 4,7 кОм (DHT11, до 5 м).

Выводы

ВыводОбозначениеНазначение
1VDDпитание 3,3–5,5 В (рекомендуется 5 В)
2DATA (SDA)данные, двунаправленная линия с подтяжкой к питанию
3NCне подключён
4GNDобщий провод

Нумерация — слева направо, если смотреть на лицевую сторону с решёткой и выводами вниз (по чертежу на с. 1 документации AM2302). Ранний документ Aosong советует ставить между VDD и GND конденсатор 100 нФ.

Сравнение по документации

ПараметрDHT22 (AM2302, V1.2)DHT11 (V1.3)
Диапазон влажности0–99,9 %RH5–95 %RH
Точность влажности при 25 °C±2 %RH±5 %RH
Повторяемость влажности±0,3 %RH±1 %RH
Диапазон температуры−40…+80 °C−20…+60 °C
Точность температуры±0,5 °C тип., ±1 °C макс.±2 °C при 25 °C
Разрешение0,1 %RH и 0,1 °C1 %RH (дробная часть влажности всегда 0), 0,1 °C
Время отклика (63 %)меньше 5 с (влажность), меньше 10 с (температура)меньше 6 и 10 с
Дрейф влажностименьше 0,5 %RH в годменьше ±0,5 %RH в год
Токсон 10–15 мкА, измерение 500 мкА, в среднем 300 мкА0,06 мА в ожидании, до 1,0 мА при измерении
Период опросаот 2 сбольше 2 с
Стартовый импульс0,8–20 мс (1 мс тип.)18–30 мс (20 мс тип.)
Ожидание после включения2 с1 с

Точность влажности Aosong указывает при 25 °C и 5 В, без учёта гистерезиса и нелинейности, только для среды без конденсации; график на с. 2 документации AM2302 показывает, что у краёв диапазона влажности ошибка растёт.

Формат данных

Датчик передаёт 40 бит старшим битом вперёд: два байта влажности, два байта температуры и байт контрольной суммы. Контрольная сумма — младшие 8 бит суммы первых четырёх байтов.

  • DHT22. Влажность — 16-битное число, равное влажности × 10; температура — 15 бит модуля × 10, а старший бит — знак (1 — ниже нуля). Пример Aosong: 0000 0010 1001 0010 = 658 → 65,8 %RH; 0000 0001 0000 1101 = 269 → 26,9 °C; 1000 0000 0110 0101 → −10,1 °C.
  • DHT11. Первый байт каждой пары — целая часть, второй — десятые; дробная часть влажности всегда 0. Отрицательная температура — старший бит байта десятых равен 1: пример Aosong для −10,1 °C — 0000 1010 1000 0001.

Наш вывод: код, написанный для DHT11, на DHT22 покажет неверные числа (например, 65,8 %RH прочитается как 2 %RH), поэтому тип датчика задают в программе явно.

Обмен по одному проводу

  1. В покое линия подтянута к единице. Микроконтроллер прижимает её к нулю: у DHT22 — на 0,8–20 мс (1 мс типично), у DHT11 — на 18–30 мс.
  2. Микроконтроллер отпускает линию; через 25–45 мкс (DHT22) или 10–20 мкс (DHT11) датчик отвечает нулём около 80 мкс и единицей около 80 мкс.
  3. Каждый из 40 бит начинается нулём около 50 мкс; затем единица длиной 22–30 мкс означает «0», а 68–75 мкс — «1» (у DHT11: 23–27 и 68–74 мкс).
  4. После последнего бита датчик держит ноль около 50 мкс и отпускает линию.
Сигнал, мксDHT22: мин. / тип. / макс.DHT11: мин. / тип. / макс.
Отпускание линии микроконтроллером25 / 30 / 4510 / 13 / 20
Ответ: ноль75 / 80 / 8581 / 83 / 85
Ответ: единица75 / 80 / 8585 / 87 / 88
Ноль перед каждым битом48 / 50 / 5552 / 54 / 56
Единица бита «0»22 / 26 / 3023 / 24 / 27
Единица бита «1»68 / 70 / 7568 / 71 / 74

Наш вывод: бит различают по длительности единицы, и порог около 40–50 мкс оставляет запас с обеих сторон. На загруженном прерываниями микроконтроллере чтение делают с запретом прерываний или аппаратно — таймером захвата либо периферией вроде RMT у ESP32. Это отдельный протокол Aosong, а не 1-Wire, как у DS18B20.

Установка

  • Кабель. Для DHT22 — до 30 м с подтяжкой 5,1 кОм (дальше подтяжку уменьшают). На той же с. 3 документ противоречит сам себе: в тексте 5,1 кОм — до 30 м, а в примечании к рис. 4 для провода длиннее 10 м предложено 1 кОм; наш вывод — от 10 м проверять форму сигнала и уменьшать подтяжку, при питании 3,3 В — не длиннее 100 см. Для DHT11 по редакции V1.3 — до 5 м с подтяжкой 4,7 кОм.
  • Питание. DHT11 V1.3 предупреждает: пульсации питания влияют на температуру, от импульсного источника показания «прыгают».
  • Тепло. Датчик ставят подальше от греющихся деталей и под ними, с хорошей вентиляцией корпуса: относительная влажность сильно зависит от температуры. Как пересчитать влажность и температуру в точку росы — на отдельной странице.
  • Среда. Aosong не рекомендует долгую работу в конденсате, соляном тумане, парах кислот и растворителей: пары спирта в высокой концентрации могут разрушить чувствительный слой.

Аналоги

Если нужна точность лучше ±2 %RH, давление или быстрый обмен, берут датчики с I²C — например, BME280 (влажность, давление и температура) или датчики из статьи «Датчики влажности». Для одной температуры точнее и проще цифровой DS18B20; сравнение способов измерения — в статье «Датчики температуры».

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

Чем DHT22 отличается от DHT11?

По документации Aosong DHT22 (AM2302) меряет влажность 0–99,9 %RH с точностью ±2 %RH и температуру −40…+80 °C с точностью ±0,5 °C (не хуже ±1 °C), передаёт значения с шагом 0,1. DHT11 работает в диапазоне 5–95 %RH с точностью ±5 %RH и −20…+60 °C с точностью ±2 °C. Выводы и формат посылки из 40 бит у них похожи, но числа кодируются по-разному, а стартовый импульс у DHT11 нужен в 18–30 мс, у DHT22 — от 0,8 до 20 мс.

Как часто можно опрашивать DHT22?

Не чаще раза в 2 секунды: Aosong прямо пишет, что при меньшем интервале показания могут быть неточными или обмен не получится. Кроме того, датчик отдаёт результат предыдущего измерения, а новое запускает после чтения, поэтому после долгой паузы первое значение устаревшее — для свежего результата читают два раза подряд с интервалом 2 с.

Какой резистор подтяжки нужен для DHT22 и DHT11?

Для DHT22 (AM2302) Aosong рекомендует 5,1 кОм при кабеле короче 30 м, для DHT11 по редакции V1.3 — 4,7 кОм при кабеле короче 5 м; на более длинной линии сопротивление уменьшают по месту. Документация AM2302 тут непоследовательна: в примечании к схеме для провода длиннее 10 м указан уже 1 кОм. При питании 3,3 В провод к DHT22 должен быть не длиннее 100 см, иначе падение напряжения на нём нарушит работу датчика.

Можно ли читать DHT22 библиотекой для 1-Wire?

Нет. Aosong называет интерфейс однопроводной шиной, но это собственный протокол: без адресов и команд, с длинным стартовым импульсом от микроконтроллера и кодированием бита длительностью высокого уровня. Протокол 1-Wire у DS18B20 устроен иначе, поэтому нужна отдельная библиотека или своя функция чтения.

Источники

  1. 广州奥松电子有限公司 (Aosong). AM2302 产品手册 (温湿度模块), V1.2-20180605 — архивная копия официального файла (Wayback, июль 2019), текст в виде изображений, прочитан по рендеру; с. 1 — выводы, питание 3,3–5,5 В; с. 2 — табл. 2 и 3 (влажность 0–99,9 %RH ±2 %RH, температура −40…+80 °C ±0,5 °C тип., ±1 °C макс.), табл. 4 (токи, уровни, подтяжка 30–60 кОм, период 2 с); с. 3 — подтяжка 5,1 кОм до 30 м, кабель до 100 см при 3,3 В, формат 40 бит; с. 4 — табл. 5, примеры расчёта, знак температуры; с. 5 — табл. 6 таймингов, ожидание 2 с после включения, старт не короче 800 мкс
  2. 广州奥松电子有限公司 (Aosong). DHT11 产品手册, V1.3_20170331 — архивная копия официального файла (Wayback, май 2022); с. 1 — выводы; с. 2 — табл. 1–3: влажность 5–95 %RH ±5 %RH, температура −20…+60 °C ±2 °C, питание 3,3–5,5 В, ток 0,06–1,0 мА, период больше 2 с; с. 3 — подтяжка 4,7 кОм до 5 м, формат 40 бит, знак температуры; с. 4–6 — табл. 4 таймингов, старт 18–30 мс, ожидание 1 с после включения
  3. Aosong Electronics. Digital-output relative humidity & temperature sensor/module DHT22 (DHT22 also named as AM2302) — ранний англоязычный документ производителя (копия на сайте SparkFun) — подтверждает, что DHT22 и AM2302 — одно изделие Aosong; более ранние цифры (питание 3,3–6 В, старт не короче 1 мс) расходятся с редакцией V1.2 — в карточке используются числа V1.2

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