Датчики температуры и влажности DHT11 и DHT22

Для измерения температуры, расстояния, вибрации, звука, влажности, движения, магнитного поля и т.д.
Правила форума
Андрюино
Сообщения: 231
Зарегистрирован: 20 июл 2016, 07:53
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Датчики температуры и влажности DHT11 и DHT22

Сообщение Андрюино » 08 авг 2016, 12:27

32-1.jpg

Существуют две версии сенсоров DHT. Выглядят они почти одинаково. Распиновка тоже одинаковая. Основные отличия - в технических характеристиках:

DHT11:
Очень дешевый.
Питание от 3 до 5В.
Максимально потребляемый ток - 2.5мА при преобразовании (при запросе данных).
Рассчитан на измерение уровня влажности в диапазоне от 20% до 80%. При этом точность измерений находится в диапазоне 5%.
Измеряет температуру в диапазоне от 0 до 50 градусов с точностью плюс-минус 2%.
Частота измерений не более 1 Гц (одно измерение в секунду).
Размер корпуса: 15.5 мм x 12 мм x 5.5 мм.
4 коннектора. Расстояние между соседними - 0.1".

DHT22:
Дешевый.
Питание от 3 до 5В.
Максимально потребляемый ток - 2.5мА при преобразовании (при запросе данных).
Рассчитан на измерение уровня влажности в диапазоне от 0% до 100%. При этом точность измерений находится в диапазоне 2%-5%.
Измеряет температуру в диапазоне от -40 до 125 градусов с точностью плюс-минус 0.5 градусов по Цельсию.
Частота измерений до 0.5 Гц (одно измерение за 2 секунды).
Размер корпуса: 15.1 мм x 25 мм x 7.7 мм.
4 коннектора. Расстояние между соседними - 0.1".
Как видите, DHT22 более точный и имеет больший диапазон измеряемых значений. Оба датчика имеют по одному цифровому выходу. Запросы к ним можно отправлять не чаще чем один в секунду или две.

Подключение датчиков DHT к Arduino

Подключаются датчики легко. Так как у них достаточно длинные коннекторы 0.1", можно устанавливать их непосредственно на макетную или монтажную плату (смотрите на рисунке ниже).

32-2.jpg

Непосредственное подключение к Arduino тоже простое. На сенсоре 4 коннектора:

Питание (VCC) - от 3 до 5 В.
Вывод данных.
Не подключается.
Земля.
Коннектор 3 просто игнорируйте, он не подключается. Желательно подключить подтягивающий резистор на 10 кОм между питанием и сигналом. На Arduino есть встроенные резисторы, но их номинал 100кОм нам не подойдет.

На рисунке ниже приведена схема подключения DHT11 к Arduino. Подключите сигнал с датчика к пину 2, чтобы схема соответствовала примеру скетча, который приведен ниже. Этот пин можно изменить с соответствующими правками в коде.

32-3.gif

Считывание данных с датчиков DHTxx

Для проверки скетча мы используем Arduino. Можно использовать любой другой микроконтроллер, который поддерживает тайминг в микросекундах.

Для начала скачайте библиотеку для работы с DHT датчиками здесь: Github. Для загрузки нажмите кнопку DOWNLOADS в верхнем правом углу.

Переименуйте папку DHT и убедитесь, что в ней есть файл dht.cpp и другие. После этого переместите папку DHT в папку arduinosketchfolder/libraries/ . Возможно вам придется создать подпапку для библиотек, если вы впервые интегрируете библиотеку. Перезагрузите Arduino IDE.

Теперь загрузите скетч: Examples->DHT->DHTtester. Выглядит программа примерно так:
32-4.gif

Если вы используете датчик модели DHT11, закомментируйте строку, которая устанавливает тип:

//#define DHTTYPE DHT22 // DHT 22 (AM2302)

И снимите комментарий со строки:

#define DHTTYPE DHT11 // DHT 11

Эти настройки помогают снимать правильные значения именно с вашей модели датчика. В окне серийного монитора этобудет выглядеть примерно так:
32-5.gif

Вы должны увидеть показания температуры и влажности. Подышав на датчик, можно отследить изменения показаний. В этом случае уровень влажности должен увеличиться.

Если Вам необходимы даташиты на датчики, скачать их можно по ссылкам ниже:
DHT11.pdf
(466.5 КБ) 56 скачиваний

DHT22.pdf
(896.87 КБ) 50 скачиваний


  1. #include "DHT.h"   // подключаем библиотеку
  2. #define DHTPIN 2     // вывод, к которому подключается датчик
  3. DHT dht(DHTPIN, DHT22); // определяем тип датчика: 22 или 11
  4.  
  5. void setup() {
  6.   Serial.begin(9600);
  7.   dht.begin();  // датчик передает данные
  8. }
  9.  
  10. void loop() {
  11.  
  12.   delay(2000); // ждем пару секунд перед началом измерений
  13.  
  14.   // считывание температуры или влажности занимает примерно 250 мс!
  15.   // считанные показания могут отличаться от актуальных примерно на 2 секунды (это очень медленный датчик)
  16.   float h = dht.readHumidity(); // показания влажности в переменную h
  17.   // Считывание температуры в цельсиях
  18.   float t = dht.readTemperature();  // показания температуры в переменную t
  19.  
  20.   // проверяем, были ли ошибки при считывании и, если были, начинаем заново
  21.   if (isnan(h) || isnan(t)) {
  22.     Serial.println("Failed to read from DHT sensor!");
  23.     return;
  24.   }  
  25.  
  26.   Serial.print("Humidity: ");
  27.   Serial.print(h);
  28.   Serial.print(" %\t");
  29.   Serial.print("Temperature: ");
  30.   Serial.print(t);
  31.   Serial.println(" *C ");
  32.  }

Андрюино
Сообщения: 231
Зарегистрирован: 20 июл 2016, 07:53
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: Датчики температуры и влажности DHT11 и DHT22

Сообщение Андрюино » 08 авг 2016, 13:40

Вот как я реализовал с помощью бредборда указанную схему. Датчик DHT22 (AM2302) и резистор на 10 кОм

P_20160808_1832241.jpg


В результате на экран выводится такая техническая информация.

P_20160808_1832242.jpg


Вернуться в «Сенсоры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей