DHT12 — это датчик температуры и влажности предназначен для одновременного замера температуры и влажности. Сенсор состоит из емкостного сенсора влажности и термистора, он также содержит в себе простой 8-битовый микроконтроллер, который хранит калибровочные поправки для датчиков и выполняет функцию АЦП. Данный датчик может быть подключен к любому микроконтроллеру, в том числе к Arduino. Этот датчик является обновлённый DHT11, он меньше по размеру и лучше в точности по сравнению с DHT11. Главное отличие данного датчика от DHT11 — это работа по протоколу I2C. Также поддерживается 1-проводная шина, для этого нужно подключить SCL к земле.
Распиновка DHT12
Получить данные с датчика DHT12 можно по I2C и по 1-проводной шине. По умолчанию датчик работает по протоколу I2C. Если подключить SCL к земле, тогда DHT12 работает по 1-проводной шине. Такой вариант подходит, если микроконтроллер не поддерживает протокол I2C.
| Выводы | Описание | |
|---|---|---|
| 1 | VDD | Питание 3-5В |
| 2 | SDA | Линия данных (Serial Data) |
| 3 | GND | Общий/Земля |
| 4 | SCL | Линия тактирования (Serial CLock) |
Технические характеристики DHT12
| Параметры | DHT12 | |
|---|---|---|
| Питание | мин. | 2.7 В |
| макс. | 5.5 В | |
| Потребляемый ток | мин. | 30 мкА |
| макс. | 800 мкА | |
| Измерение влажности | мин. | 20 %RH |
| макс. | 95 %RH | |
| разрешение | 0.1 %RH | |
| точность (60%RH) | ±5 %RH | |
| повторяемость | ±0.3 %RH | |
| Измерение температуры | мин. | -20 °C |
| макс. | +60 °C | |
| разрешение | 0.1 °C | |
| точность (25 °C) | ±0.5 °C | |
| повторяемость | ±0.2 °C | |
| Частота измерений | 0.5 Гц | |
| Расстояние между соседними | 0.1″ | |
Описание регистров
Ниже в таблице представлен перечень регистров цифрового датчика влажности и температуры DHT12:
| Адрес | Описание регистра | Примечание |
|---|---|---|
| 00h | Целая часть влажности | Значения относительной влажности воздуха |
| 01h | Дробная часть влажности | |
| 02h | Целая часть температуры | Значения относительной температуры воздуха |
| 03h | Дробная часть температуры | |
| 04h | Байт четности | Контрольная сумма |
Считывание данных
Данные (все 5 байт) с датчика DHT12 надо считывать последовательно и за одну транзакцию, в противном случае данные не обновляются и вы будите получать одни и те же данные.
Формат данных DHT12
Когда датчик влажности и температуры отправляет данные, он сначала отправляет MSb (Most Significant Bit) — старший значащий бит. Данные от датчика передаются в виде посылки, состоящих из 40 бит данных — это 5 байт из которых первых два влажность, следующие 2 температура и байт четности. Байт четности равен сумме предыдущих байт. 1 и 2 байт содержат соответственно целую и дробную часть информации о влажности, 3 и 4 байт содержат целую и дробную часть информации о температуре. Значение этих байтов заключается в следующем:
- 1-й байт: относительная влажность — целая часть в %;
- 2-й байт: десятая часть относительной влажности в %;
- 3-й байт: целая часть температуры в °C;
- 4-й байт: десятая часть температуры в °C. Старший бит (8-й бит) 4-го байта содержит знак данных температуры. Если бит равен нулю «0» — температура положительная, а если бит равен «1» — отрицательная.;
- 5-й байт: контрольная сумма (последние 8 бит {1-й байт + 2-й байт + 3-й байт + 4-й байт})

















































