Измерение температуры и влажности при помощи датчика DHT11.

Статья в PDF 

Catcatcat_dht-11_150DHT11 недорогой цифровой датчик температуры и влажности. Он использует емкостной датчик влажности и терморезистор для измерения температуры окружающего воздуха, данные выдает в цифровой форме по шине типа 1-wire. В использовании он довольно прост, но требует точного определения длительности временных сигналов, чтобы декодировать данные. Единственный недостаток это возможность получения данных не чаще 1 раза в две секунды.

Особенности.
· Температурная компенсация во всем диапазоне работы
· Измерение относительной влажности и температуры
· Калиброванный цифровой сигнал
· Отличная долгосрочная стабильность показаний
· Не требуются дополнительные компоненты
· Возможность передачи данных на большое растояние
· Низкое энергопотребление
· 4-контактный корпус и полностью взаимозаменяемы

Детали.
Для преобразования данных внутри датчика используется 8-битный микроконтроллер, В процессе производства датчики калибруются и калибровочная константа записывается вместе с программой в память микроконтроллера. Однопроводный последовательный интерфейс дает возможность быстрой интеграции в устройство. Его небольшие размеры, низкое энергопотребление и до-20-метром передачи сигнала, что делает его привлекательным выбором для различных приложений.

Диапазон измеряемых параметров.

Обзор:

Параметр Диапазон измерения Точность Разрешение
Влажность 20-90% ±5% 1
Температура 0-50°С ±2°С 1

Подробные спецификации:

Параметр Условия Минимальное Типичное Максимальное
Влажность
Разрешение 1% 1% 1%
8 бит
Стабильность ±1%RH
Точность 25°С ±4%RH
0-50°С ±5%RH
Взаимозаменяемость  полностью взаимозаменяемы
Диапазон
измерения
 0°С 30%RH 90%RH
 25°С 20%RH 90%RH
50°С 20%RH 80%RH
Время отклика
(в секундах)
1/e(63%)25℃,
1m/s Air
6 10 15
Гистерезис ±1%RH
Долговременная
стабильность
типичная ±1%RH/year
Температура  1°С  1°С  1°С
Разрешение 8 бит 8 бит 8 бит
Стабильность ±1°С
Точность ±1°С ±2°С
Диапазон
измерения
0°С 50°С
Время отклика
(в секундах)
6 30

Электрические параметры:

Параметр Режим Мин Типовое Макс Ед.изм.
Напряжение питания DC 3 5 5.5 V
Ток потребления Измерение 0.5 2.5 mA
Ожидание 100 150 uA
Среднее 0.2 1 mA

Габаритные размеры и подключение:

Catcatcat_dht-11_01a

Питание DHT11 составляет 3-5.5V DC. После подачи питания на датчик, необходимо выдержать паузу длительностью не менее 1 секунды перед началом считывания данных. Для фильтрации напряжения питания можно добавить один конденсатор 0,1 мкФ между Vdd и Vss.

Последовательный интерфейс (Single-Wire Двусторонний)

Весь обмен данными выполняется по одной одному проводу (шине). На шине может присутствовать только один датчик. Для получения высокого уровня используется подтягивающий резистор (5-10 кОм), т.е в пассивном состоянии на шине высокий уровень. Формат обмена данными может быть разделен на три этапа:

1) Инициализации.
2) Преамбула.
3) Передача данных.

Инициализация.

Процесс чтения данных начинается с импульса инициализации который формирует микроконтроллер. Он должен установить на шине низкий уровень на время не менее 18 mS, для инициализации  DHT-11.

Catcatcat_dht-11_02n

Преамбула.

Микроконтроллер после формирования импульса инициализации должен сразу перевести порт в режим чтения (режим приема данных). Если датчик готов к передачи данных, он ответит сформировав преамбулу. Один период меандра длительностью ~160 us.

Catcatcat_dht-11_02b

Микроконтроллер получив ответ от датчика, может начать чтение данных.

Передача данных.

Данные представляют собой 5 байт данных, которые читаются по битно микроконтроллером, т.е всего 40 бит.

Catcatcat_dht-11_04

Первые два байта данные влажности (относительная влажность), целая и дробная часть. Третий и четвертый температура (градусы Цельсия), целая и дробная часть и пятый последний байт контрольная сумма, которая равна сумме первых 4 байт. К сожалению хотя и присутствуют байты отвечающие за десятые доли градуса и процента, реально контроллер датчика их не вычисляет (хотя это и понятно при такой точности это бесполезно), поэтому  в них всегда присутствуют нули. Если реально считывать эти байты то мы увидим, например:

bait0 = 41    // влажность
bait1 = 0
bait2 = 31    // температура
bait3 = 0
bait4 = 72    // контрольная сумма

Но нет худа без добра, если в этих байтах всегда нули, то можно это значение (аналогично как для контрольной суммы) использовать для достоверности передачи данных.

Данные кодируются длительностью высокого уровня в каждом бите, бит начинается стробом низкого уровня длительностью приблизительно 50-54uS, после строба идет высокий уровень, если длительность высокого уровня в пределах 24 uS, то это передается “0”, если в пределах 70 uS – передается “1”.

Бит ‘0 ‘:

Catcatcat_dht-11_09
Бит ‘1 ‘:

Catcatcat_dht-11_10

Catcatcat_dht-11_11

По окончанию передачи данных датчик передает последний строб, устанавливает на шине высокий уровень и переходит в спящий режим.

Логика чтения данных может быть следующая.

Вид передачи полностью:

Catcatcat_dht-11_12

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

Для демо проекта используем плату ILLISSI_B4_primum с установленным микроконтроллером PIC16F1936. Для индикации данные будем выводить, через USB порт на терминал программы AN1310 Microchip.

Catcatcat_dht-11_13

Вариант построение программа для чтения данных с датчика для компилятора MPLAB® XC8 Compiler v1.20. Для измерение длительности мы применим таймер Timer0. А для контроля моментов изменения сигнала на входах будем использовать возможность микроконтроллера формировать прерывания по изменению состояния на входах. Всё декодирование данных будет выполняться в прерывании (благо там минимум работы), поэтому для основной программы остается только дать “толчек” для выдачи данных и обработать их когда данные будут готовы.

Настройка прерывание для работы с датчиком

Функция запуска измерения (её можно в ставить в главный цикл для постоянного получения данных)

Вариант обработки прерываний

Вывод: простой недорогой датчик влажности и температуры, для проектов бытового назначения.

[box title=”Файлы для загрузки” color=”#521BDE”] Демонстрационный проект, MPLAB® X IDE v1.85MPLAB® XC8 Compiler v1.20

[/box]



Это может быть интересно


  • LCD драйвер – UC1601sLCD драйвер – UC1601s
    http://svetomuzyka.narod.ru/project/UC1601s.html Читайте обновление на http://catcatcat.d-lan.dp.ua/?page_id=178 В данный момент можно приобрести в ООО “Гамма” несколько типов индикаторов на драйвере UC1601s. RDX0048-GC, RDX0077-GS, RDX0154-GC и RDX0120-GC выполнены по технологии COG. Метки:UC1601s
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
     Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для города и …
  • HVLD модуль на примере PIC24FJ128GA204HVLD модуль на примере PIC24FJ128GA204
    HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что необходимо выполнить …
  • APA102 – светодиоды со встроенным драйвером и SPI интерфейсомAPA102 – светодиоды со встроенным драйвером и SPI интерфейсом
    APA102 В 2014 году фирма Shenzhen Led Color Optoelectronic Co., Ltd http://www.szledcolor.com/ начала производство светодиодов на драйвере APA102. Это серия так называемых светодиодов со встроенным драйвером. Основной особенностью этих светодиодов, что …
  • MPLAB® Harmony – или как это просто! Часть 2.MPLAB® Harmony – или как это просто! Часть 2.
    Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из трудоемкого варианта …
  • Система AT команд версии V2.0 для ESP8266 и ESP32Система AT команд версии V2.0 для ESP8266 и ESP32
    Появление нового модуля на базе ESP32 заставило систематизировать систему AT команд, а так же систему обновления и для модулей на базе ESP8266. Начиная с версии v2.0 в ESP8266 внедряется прошивка …
  • Moving average – скользящее среднееMoving average – скользящее среднее
    Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания краткосрочных колебаний …
  • Индикатор температурыИндикатор температуры
    Проект для начинающих, на демо плате BB-2T3D-01. Простой индикатор температуры. Проект никак не задумывался, просто на витрину магазин Ворон нужна была демонстрационная модель на макетной плате, чего нибудь работающего. Остановились на индикаторе температуре. Нужен был какой нибудь выводной …
  • Audio-bluetooth modules BK8000L (noname)Audio-bluetooth modules BK8000L (noname)
    Еще один вариант, так сказать недоразумения Audio-bluetooth modules BK8000L (noname). Его отличительной маркировкой служат два отверстия в плате и надпись R2. Отличают его от модулей на чипе BK8000L, что у …
  • LED драйвер TM1639LED драйвер TM1639
    TМ1639 позволяет работать на матрицу 8*8 или 8 семисегметных индикаторов. Может работать как на индикаторы с общим катодом, но и есть возможность подключать общим анодом. Для управления драйвером используется трех …



Translate »

Copyright © Catcatcat electronics 2013-2020. Все права защищены.
Копирование разрешается только с указанием активной ссылки на правообладателя.

e-mail: catcatcat.electronics@gmail.com