奥松电子有限公司www.aosong.comDHT11数字湿温度传感器的原理和应用范例概述:DHT11是广州奥松有限公司生产的一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11功耗很低,5V电源电压下,工作平均最大电流0.5mA。性能指标和特性如下:工作电压范围:3.5V-5.5V.工作电流:平均0.5mAO湿度测量范围:20一90%RH?温度测量范围:0一50℃?湿度分辨率:1%RH8位?8位温度分辨率:1℃采样周期:1S单总线结构.与TTL兼容(5V)管脚排列如下:AA4引脚说明:aosongDHTXXVcc正电源输出Dout底视图1234空脚NC地GND21、应用电路连接说明DHT11数字湿温度传感器连接方法极为简单。第一脚接电源正,第四脚接电源地端。数据端为第二脚。可直接接主机(单片机)的I/O口。为提高稳定性,建议在数据端和电源正之间接一只4.7K的上拉电阻。第三脚为空脚,此管脚悬空不用。-1-
奥松电子有限公司 www.aosong.com DHT11 数字湿温度传感器的原理和应用范例 概述:DHT11 是广州奥松有限公司生产的一款湿温度一体化的数字传感器。 该传感器包括一个电阻式测湿元件和一个 NTC 测温元件,并与一个高性能 8 位 单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿 度和温度。DHT11 与单片机之间能采用简单的单总线进行通信,仅仅需要一个 I/O 口。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用 校验和方式进行校验,有效的保证数据传输的准确性。DHT11 功耗很低,5V 电 源电压下,工作平均最大电流 0.5mA。 性能指标和特性如下: z 工作电压范围:3.5V-5.5V z 工作电流 :平均 0.5mA z 湿度测量范围:20-90%RH z 温度测量范围:0-50℃ z 湿度分辨率 :1%RH 8 位 z 温度分辨率 :1℃ 8 位 z 采样周期 :1S z 单总线结构 z 与 TTL 兼容(5V) 管脚排列如下: 引脚说明: Vcc 正电源 Dout 输出 NC 空脚 GND 地 1、应用电路连接说明 DHT11 数字湿温度传感器连接方法极为简单。第一脚接电源正,第四脚接电源地端。 数据端为第二脚。可直接接主机(单片机)的 I/O 口。为提高稳定性,建议在数据端和电源 正之间接一只 4.7K 的上拉电阻。第三脚为空脚,此管脚悬空不用。 - 1 -
奥松电子有限公司www.aosong.com2、DHT11数据结构DHT11数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分,具体格式在下面说明。次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和校验和数据为前四个字节相加。传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开处理。如果,某次从传感器中读取如下5Byte数据:byte4byte3byte2bytelbyteo0010110100000000000111000000000001001001整数整数小数小数校验和湿度温度校验和由以上数据就可得到湿度和温度的值,计算方法:humi(湿度)=byte4.byte3=45.0(%RH)temp(温度)=byte2.byte1=28.0(℃)jiaoyan(校验)=byte4+byte3+byte2+byte1=73(=humi+temp)校验正确)注意:DHT11一次通讯时间最大3ms,主机连续采样间隔建议不小于100mS。3、DHT11的传输时序3.1、DHT11开始发送数据流程数据:0主机发开DHT响应始信号输出VCC10GND-拉高并拉高延时单总线数据1延时等待准备输出信号线说明:DHT信号主机信号主机发送开始信号后,延时等待20us-40us后读取DH11T的回应信号,读取总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高,准备发送数据,每一bit数据都以低电平开始,格式见下面图示。如果读取响应信号为高电平则DHT11没有响应,请检查线路是否连接正常。-2-
奥松电子有限公司 www.aosong.com 2、DHT11 数据结构 DHT11数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输 入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分,具 体格式在下面说明。 一次完整的数据传输为40bit,高位先出。 数据格式:8bit湿度整数数据+8bit湿度小数数据 +8bit温度整数数据+8bit温度小数数据 +8bit校验和 校验和数据为前四个字节相加。 传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间 应该分开处理。如果,某次从传感器中读取如下5Byte数据: byte4 byte3 byte2 byte1 byte0 00101101 00000000 00011100 00000000 01001001 整数 小数 整数 小数 校验和 湿度 温度 校验和 由以上数据就可得到湿度和温度的值,计算方法: humi (湿度)= byte4 . byte3=45.0 (%RH) temp (温度)= byte2 . byte1=28.0 ( ℃) jiaoyan(校验)= byte4+ byte3+ byte2+ byte1=73(=humi+temp)(校验正确) 注意:DHT11一次通讯时间最大3ms,主机连续采样间隔建议不小于100ms。 3、DHT11的传输时序 3.1、DHT11 开始发送数据流程 主机发送开始信号后,延时等待 20us-40us 后读取 DH11T 的回应信号,读取 总线为低电平,说明 DHT11 发送响应信号,DHT11 发送响应信号后,再把总线拉 高,准备发送数据,每一 bit 数据都以低电平开始,格式见下面图示。如果读取响应 信号为高电平,则 DHT11 没有响应,请检查线路是否连接正常。 - 2 -
奥松电子有限公司www.aosong.com3.2主机复位信号和DHT11响应信号主机拉高-DHT拉高20-40us40-50usVCC.开始传送数据GNDDHT应信号单总线主机至少拉低18ms40-50us信号线说明:DHT信号主机信号3.3数字“0”信号表示方法26-28us表示0VCC一bit开始GND.1bit开始单总线12-14us信号线说明:DHT信号主机信号3.4数字“1”信号表示方法Co116-118us表示1VCC-下一bit开始...............GND--1Bit开始.单总线12-14us信号线说明:DHT信号主机信号-3 -
奥松电子有限公司 www.aosong.com 3.2 主机复位信号和 DHT11 响应信号 3.3 数字‘0’信号表示方法 3.4 数字‘1’信号表示方法 - 3 -
奥松电子有限公司www.aosong.com4、实例应用4.1硬件描述本项目采用两个三位一体共阳数码管做为湿度,温度显示模块。采用ATMEL公司的ATmega8做为主控芯片,详细如图4.1所示。4.2管脚分配管脚设备传感器(HDT11)PC5LED[1..8]PB[0.7]P3PC3S2(温度显示)P4PD5P5PD4PB[0.7]LED[1.8]P1PD7S1(湿度显示)P2PD6Pm3PDO8temp88LED10.8PBO (ICP)ADCT19107ADC6PBI(OCIAED184PB2 (S/OCIB)AVCOED201I0.65AREFPB3 (MOSI/OC2)123PB4(MISO)GND3PBS (SCK)ED7PB6 (XTALI/TOSC1)PFLEDPB7 (XTAL2/TOSC2)80国安安专23ADOPm3S1PDO(RXD(ADCO)PCOSG302324AD1PDI(TZD)(ADC1)PCI25umidPD2(INTO)PC2(ADC2)HDT11PPD3(INTI)(ADC3)PC34PINPD4 (XCK/TO)(ADC4/SDA) PC4P410.48SecaltPDS(TI)(ADCS/SCL)PCSP210PD6(AINO)CRESETPCERSTPDT(AINI)a-23VOCPmITATMEGA8_TQFP32##HVCCSENSOR_IN图4.1典型实例原理图-4 -
奥松电子有限公司 www.aosong.com 4、实例应用 4.1 硬件描述 本项目采用两个三位一体共阳数码管做为湿度,温度显示模块。采用 ATMEL 公司的 ATmega8 做为主控芯片,详细如图 4.1 所示。 4.2 管脚分配 设备 管脚 传感器(HDT11) PC5 LED[1.8] PB[0.7] P3 PC3 P4 PD5 S2(温度显示) P5 PD4 LED[1.8] PB[0.7] P1 PD7 P2 PD6 S1(湿度显示) Pm3 PD0 图 4.1 典型实例原理图 - 4 -
奥松电子有限公司www.aosong.comR6.31A下测试通过。*//*原程序清单如下所示,本程序在ICCAVR/**本**************事容****本**本***容********编译环境:ICCAVR功能:读取湿温度传感器DTH11数据并显示公司:奥松电子有限公司芯片:Mega8晶振:内部8.0000MHz创建人:木工修改:宁佐文农事事术术*术术术术术水*术*术本**********事**事***中#include<iom8v.h>#include<macros.h>typedef unsignedcharU8;Il defined for unsigned 8-bits integer variablecharS8;typedef signedIl defined for signed 8-bits integer variableU16;typedef unsignedintIl defined for unsigned 16-bits integer variableintS16;typedef signed// defined for signed 16-bits integer variablelongU32;typedef unsignedlldefinedfor unsigned 32-bits integer variabletypedef signedlongS32;//definedfor signed32-bits integer variableF32;typedef floatI/ single precision floating point variable (32bits)F64;typedef double/l doubleprecisionfloatingpointvariable (64bits)/**********★******★★**★**:数码管显示赋值区**事*0x01#define_a_b0x02#define0x04#define_c_d0x08#define#define0x10_ef#define0x20#define0x40_g0x80#define_dpnumoI灭的数码管#define_g#definenuml_aLdelf_g_cLf#definenum2_eLf#definenum3num4#define_aLdLe_bLe#definenums_b#definenum6#definenum7_dLeLfL_g#definenum80x00#definenum9_e#definenum__al_bLcldLef_dp-5-
奥松电子有限公司 www.aosong.com /*原程序清单如下所示,本程序在 ICCAVR 6.31A 下测试通过。*/ /************************************************************************* 编译环境 :ICCAVR 功能:读取湿温度传感器 DTH11 数据并显示 公司:奥松电子有限公司 芯片:Mega 8 晶振:内部 8.0000MHz 创建人:木工 修改 :宁佐文 **************************************************************************/ #include <iom8v.h> #include <macros.h> typedef unsigned char U8; // defined for unsigned 8-bits integer variable typedef signed char S8; // defined for signed 8-bits integer variable typedef unsigned int U16; // defined for unsigned 16-bits integer variable typedef signed int S16; // defined for signed 16-bits integer variable typedef unsigned long U32; // defined for unsigned 32-bits integer variable typedef signed long S32; // defined for signed 32-bits integer variable typedef float F32; // single precision floating point variable (32bits) typedef double F64; // double precision floating point variable (64bits) /************************************************************************** 数码管显示赋值区 ***************************************************************************/ #define _a 0x01 #define _b 0x02 #define _c 0x04 #define _d 0x08 #define _e 0x10 #define _f 0x20 #define _g 0x40 #define _dp 0x80 #define num0 _g //灭的数码管 #define num1 _a|_d|_e|_f|_g #define num2 _c|_f #define num3 _e|_f #define num4 _a|_d|_e #define num5 _b|_e #define num6 _b #define num7 _d|_e|_f|_g #define num8 0x00 #define num9 _e #define num_ _a|_b|_c|_d|_e|_f|_dp - 5 -