DHT11 - температура / влажность

Внешний вид датчика и схема подключения к микроконтроллеру


Внешний вид датчика и схема подключения к микроконтроллеру
DHT11 цифровой датчик температуры и влажности является составным датчиком, который выдаёт калиброванный цифровой выходной сигнал с показаниями температуры и влажности. Он имеет высокую надежность и превосходную долговременную стабильность работы. Датчик включает в себя резистивный сенсор влажности и компонент NTC структуры для измерения температуры.
Технические характеристики датчика:
Относительная влажность
Разрешение: 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 секунд
Протокол датчика DHT:
Выходом датчика является цифровой сигнал. Температура и влажность передаются по одному сигнальному проводу (S). DHT11 общается с принимающей стороной по собственному протоколу. Коммуникация двунаправлена и в общих чертах выглядит так:
Шаг №1. Инициализация.


Процесс инициализации начинается с подтягивания линии на 18 мс, далее отпускаем на 20-40 мкс и переводим ножку микроконтроллера в режим чтения.
Шаг№2. Подтверждение.


После того как контроллер переведён в режим чтения, ждем когда появится 0, далее задержка и проверка на высокое состояние.
Шаг №3. Прием данных.


Суммарно временная диаграмма обмена данными между микроконтроллером и DHT11 выглядит следующим образом:

Данные от датчика передаются в виде посылки, состоящих из 40 бит идущих в таком порядке:
8 бит целая часть влажности + 8 бит десятая часть влажности + 8 бит целая часть температуры + 8 бит десятая часть температуры + 8 бит контрольной суммы.
- Code: Select all
'************************************************* ***************
'* Name : DHT11_A *
'* Version : 1.1 *
'* Notes : Compiler Version 3.5.5.5 *
'* : *
'************************************************* ***************
;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these settings
Device = 16F628A
Config FOSC_HS, WDTE_OFF, PWRTE_ON, MCLRE_ON, BOREN_ON, LVP_OFF, CPD_OFF, CP_OFF
;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------
Xtal = 16
Declare LCD_Interface = 4
Declare LCD_DTPin PORTB.4
Declare LCD_ENPin PORTB.2
Declare LCD_RSPin PORTB.0
Declare LCD_Lines = 2
Declare LCD_Type = 0
All_Digital = true
' Special LCD Character Definitions
Print $FE,$40,$07,$05,$05,$07,$00,$00,$00,$00 '0 - Degree
Dim DataIn As Byte 'hi pulse from sensor
Dim ChkSum As Byte
Dim Index As Byte
Dim SenData As Dword
While
SenData=0:ChkSum=0
TRISA.0 = 0 'portb o/p
PORTA.0=1 'make high
DelayMS 50 'wait for a while
PORTA.0=0:DelayMS 18 'send 18ms low
PORTA.0=1:DelayUS 30 'send 30us hi
DataIn = PulsIn PORTA.0,1 'wait for hi
If DataIn < 33 Then
Cls
Print At 1,1, "Sensor not ready" ' if < 80us loop
GoTo SNR
EndIf
For Index = 31 To 0 Step -1
DataIn = PulsIn PORTA.0,High 'recieve pulses from sensor
If DataIn > 18 Then SetBit SenData,Index
Next Index
For Index = 7 To 0 Step -1
DataIn = PulsIn PORTA.0,High
If DataIn > 18 Then SetBit ChkSum,Index
Next Index
Cls
Print At 1,1,"Check Sum = ",Dec ChkSum
Print At 2,1,"H:",Dec SenData.Byte3," %"
Print At 2,10,"T:",Dec SenData.Byte1,0,"C"
SNR:
DelayMS 1000
Wend
Литература:
1. Фирменная документация.
На главную