Главная » 2014 » Ноябрь » 20 » DHT11 цифровой датчик температуры и влажности
10:15
DHT11 цифровой датчик температуры и влажности

Сенсор DHT11 для измерения температуры и относительной влажности окружающего воздуха — отлично откалиброванный, стабильный и энергоэффективный датчик.

 

 

 

 

Характеристики:

Относительная влажность

  • Разрешение: 16Bit
  • Повторяемость: ± 1% относительной влажности
  • Точность: На 25 ℃ ± 5% относительной влажности
  • Взаимозаменяемость: полностью взаимозаменяемы
  • Время отклика: 1 / е (63%) из 25 ℃ 6s      1 м / с воздуха 6s
  • Гистерезис: <± 0,3% RH
  • Долгосрочная стабильность: <± 0,5% RH / год в

Температура

  • Разрешение: 16Bit
  • Повторяемость: ± 0,2 ℃
  • Диапазон: На 25 ℃ ± 2 ℃
  • Время отклика: 1 / е (63%) 10S

Электрические характеристики

  • Питание: DC 3,5 ~ 5,5 В
  • Ток питания: измерение 0.3mA ожидания 60μ
  • Период выборки: более 2 секунд

Схема подключения

  Если используется датчик не распаянный на плате то рекомендуемый номинал резистора 10 кОм , если расстояние от датчика к ардуино не большое, для расстояния больше 20 метров, рекомендуется резистор номиналом 5,1 кОм. Если используется модуль с распаянным датчиком на плате, то там уже установлен резистор.

 

 

Сам датчик и его распиновка

 

 

 

 

Как происходит обмен DHT11 с Arduino. Логически, это представляется такой последовательностью:
  1. Arduino запускает считывание показаний, переводя свой пин в режим выхода - как минимум на 18 миллисекунд переводит его в LOW, затем на 40 мкс в HIGH - и, после этого, переключает его в режим входа;
  2. Через 20..40 мкс DHT11 отвечает подтверждением, также сначала переводя шину в LOW на 80 мкс, а затем в HIGH на 80 мкс;
  3. DHT11 начинает побитную передачу информации, каждый бит начинается с уровня LOW в течение 50 мкс, и затем HIGH разной продолжительности: если 26-28 мкс, то это ноль, если же 70 мкс - единица;
  4. По окончании передачи 40 бит информации DHT11 "на прощание" еще раз переводит шину в LOW на 50 мкс и освобождает ее.
Полученная от DHT11 пачка из 40 бит представляется в виде последовательности из 5 байт следующего содержания:
  1. Целая часть значения влажности;
  2. Дробная часть значения влажности;
  3. Целая часть значения температуры;
  4. Дробная часть значения температуры;
  5. Контрольная сумма.

Как всегда, можно воспользоваться готовой библиотекой, которая считывает показания и вычисляет контрольную сумму для проверки. Что характерно, байты с дробной частью приходят всегда нулевые - пусть вас это не смущает, так и задумано

Документация на DHT11 а также SDK под Arduino, AVR & PIC от Sunrom Technologies

 

 

 

 

 

 

Библиотека под Arduino

// Пример использования датчика влажности и температуры DHT11
//
// на основе Arduino Playground:
// http://playground.arduino.cc/Main/DHT11Lib
//
// http://mk90.ru/blog

#include <dht11.h>

dht11 sensor;

#define DHT11PIN 8

void setup()
{
  Serial.begin(115200);
  Serial.println("DHT11 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
}

void loop()
{
  Serial.println("\n");

  int chk = sensor.read(DHT11PIN);

  Serial.print("Read sensor: ");
  switch (chk)
  {
    case DHTLIB_OK:
        Serial.println("OK");
        break;
    case DHTLIB_ERROR_CHECKSUM:
        Serial.println("Checksum error");
        break;
    case DHTLIB_ERROR_TIMEOUT:
        Serial.println("Time out error");
        break;
    default:
        Serial.println("Unknown error");
        break;
  }

  Serial.print("Humidity (%): ");
  Serial.println(sensor.humidity);

  Serial.print("Temperature (oC): ");
  Serial.println(sensor.temperature);
 
  delay(2000);
}

 

 

И последняя версия библиотеки с автоматическим определением типа датчика (DHT11 или DHT22, AM2302, RHT03) и возможностью определения отрицательной температуры
Внимание! перед установкой этой библиотеки удалите старые библиотеки DHT

В ардуино IDE заходим Файл->Примеры->DHT->DHT_test, получаем следующий код

 
#include "DHT.h"

DHT dht;

void setup()
{
  Serial.begin(9600);
  Serial.println();
  Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");

  dht.setup(2); // data pin 2
}

void loop()
{
  delay(dht.getMinimumSamplingPeriod());

  float humidity = dht.getHumidity();
  float temperature = dht.getTemperature();

  Serial.print(dht.getStatusString());
  Serial.print("\t");
  Serial.print(humidity, 1);
  Serial.print("\t\t");
  Serial.print(temperature, 1);
  Serial.print("\t\t");
  Serial.println(dht.toFahrenheit(temperature), 1);
}

 

Категория: Электроника | Просмотров: 932 | Добавил: graftsv | Теги: датчик влажности, DHT11, датчик температуры
Всего комментариев: 0
avatar