数字温湿度传感器DHT11详解及例程利用串口显示.docx
- 文档编号:29959384
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:20
- 大小:1.01MB
数字温湿度传感器DHT11详解及例程利用串口显示.docx
《数字温湿度传感器DHT11详解及例程利用串口显示.docx》由会员分享,可在线阅读,更多相关《数字温湿度传感器DHT11详解及例程利用串口显示.docx(20页珍藏版)》请在冰豆网上搜索。
数字温湿度传感器DHT11详解及例程利用串口显示
数字温湿度传感器DHT11
1、概述
DHTxx系列数字温湿度传感器就是一款含有已校准数字信号输出得温湿度复合传感器。
它应用专用得数字模块采集技术与温湿度传感技术,确保产品具有极高得可靠性与卓越得长期稳定性。
传感器包括一个电阻式测湿元件与一个NTC测温元件,并与一个高性能8位单片机相连接。
因此,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHTxx传感器都在极为精确得湿度校验室中进行校准。
校准系数以程序得形式储存在OTP内存中,传感器内部在检测信号得处理过程中要调用这些校准系数。
单线制串行输出接口,使系统集成变得简易快捷。
超小得体积、极低得功耗,使其成为各类应用甚至最为苛刻得应用场合得最佳选则。
本产品为4针单排引脚封装,特殊封装形式可根据用户需求而提供。
2、产品特性
湿温度传感器得一体化结构能相对得同时对相对湿度与温度进行测量。
数字信号输出,从而减少用户信号得预处理负担。
单总线结构输出有效得节省用户控制器得I/O口资源。
并且,不需要额外电器元件。
独特得单总数据传输线协议使得读取传感器得数据更加便捷。
全部校准。
编码方式为8位二进制数。
40bit二进制数据输出。
其中湿度整数部分占1Byte,小数部分1Byte;温度整数部分1Byte,小数部分1Byte。
其中,湿度为高16位。
最后1Byte为校验与。
卓越得长期稳定性,超低功耗。
4引脚安装,超小尺寸。
各型号管脚完全可以互换。
测量湿度范围从20%RH到90%RH;测量温度范围从0℃到50℃。
适用范围包括恒湿控制,消费家电类产品,温湿度计等领域。
3、外型与引脚排列
引脚说明:
Vcc正电源
Dout输出
NC空脚
GND地1
图3、0DHT外型及管脚
4、详细引脚说明:
传感器管脚方向识别:
正面(有通气孔得一面)瞧过去,从左到右依次为1、2、3、4脚。
表4、0:
引脚说明
引脚号
引脚名称
类型
引脚说明
1
VCC
电源
正电源输入,3V5、5VDC
2
Dout
输出
单总线。
数据输入/输出引脚
3
NC
空
空脚。
扩展未用
4
GND
地
电源地
电源引脚,DHTxx得供电电压为3、5~5、5V。
传感器上电后,要等待1s以越过不稳定状态在此期间不要发送任何指令。
电源引脚(VDD,GND)之间可增加一个100nF得电容,用以去耦滤波。
5、订货信息
型号
测量范围
测湿精度
测温精度
分辨力
封装
DHT11
20-90%RH0-50℃
±5%RH
±2℃
1
4针单排直插
6、传感器性能说明
参数
条件
Min
Typ
Max
单位
湿度
分辨率
1
1
1
%RH
8
Bit
重复性
±1
%RH
精度
25℃
±4
%RH
0-50℃
±5
%RH
互换性
可完全互换
量程范围
0℃
30
90
%RH
25℃
20
90
%RH
50℃
20
80
%RH
响应时间
1/e(63%)25℃,1m/s空气
6
10
15
S
迟滞
±1
%RH
长期稳定性
典型值
±1
%RH/yr
温度
分辨率
1
1
1
℃
8
8
8
Bit
重复性
±1
℃
精度
±1
±2
℃
量程范围
0
50
℃
响应时间
1/e(63%)
6
30
S
7、连接接口说明
DHTxx数字湿温度传感器连接电路简单,只需要占用控制器一个I/O口即可完成上下位得连接。
典型应用电路如下图所示。
另外,建议连接线长度短于20时用5K上拉电阻,大于20米时根据实际情况使用合适得上拉电阻,如图5、0所示。
图5、0典型电路连接
8、数据格式及处理
8、1、格式
数字湿温度传感器采用单总线数据格式。
即,单个数据引脚端口完成输入输出双向传输。
其数据包由5Byte(40Bit)组成。
一次通讯时间最大3ms,数据分小数部分与整数部分,具体格式在下面说明。
DATA用于微处理器与DHTxx之间得通讯与同步,采用单总线数据格式,当前小数部分用于以后扩展,现读出为0。
操作流程如下:
一次完整得数据传输为40bit,高位先出。
数据格式:
8bit湿度整数数据+8bit湿度小数数据
+8bit温度整数数据+8bit温度小数数据
+8bit校验与
校验与数据为前四个字节相加。
具体见表6、1:
湿度
温度
校验
整数
小数
整数
小数
8Bit
8Bit
8Bit
8Bit
8Bit
8、2、数据编码及处理
传感器数据输出得就是未编码得二进制数据。
数据(湿度、温度、整数、小数)之间应该分开处理。
如果,某次从传感器中读取如下5Byte数据:
byte4byte3byte2byte1byte0
001011010000000000
整数小数整数小数校验与
湿度温度校验与
由以上数据就可得到湿度与温度得值,计算方法:
humi(湿度)=byte4、byte3=45、0(%RH)
temp(温度)=byte2、byte1=28、0(℃)
jiaoyan(校验)=byte4+byte3+byte2+byte1=73
9、时序
DHTxx传感器就是通过奥松电子有限公司开发得单总线协议与上位机(控制器)进行数据通信。
DHTxx传感器需要严格得读写协议来确保数据得完整性。
整个读写分为,上位机发送起始信号,上位机接收下位机发来得握手响应信号,读‘0’,与读‘1’四个步骤。
所有得信号除主机启动复位信号外,全部都由DHTxx产生。
通过单总线访问DHTxx顺序归纳如下:
主机发开始信号
主机等待接收DHTxx响应信号
主机连续接收40Bit得数据与校验与
数据处理
9、1、主机复位信号与DHT响应信号
图7、1DHT复位时序
用户主机发送一次开始信号(低电平)DHT从低速模式转换到高速模式,等待主机开始信号结束(拉高)后,DHT发送响应信号,送出40bit得数据,并触发一次信号采集,用户可选择读取部分数据。
注意:
总线线空闲状态为高电平,主机把总线线拉低等待DHT响应,主机把总线线拉低必须大于18毫秒,保证DHT能检测到起始信号。
DHT接收到主机得开始信号后,等待主机开始信号结束,然后发送低电平响应信号。
主机发送开始信号结束后,延时等待2040us后,读取DHT得回应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线线由上拉电阻拉高。
9、2、DHT开始发送数据流程
图7、2读DHT数据流程
主机发送开始信号后,延时等待20us40us后读取DHT得回应信号,读取总线为低电平,说明DHT发送响应信号,DHT发送响应信号后,再把总线拉高,准备发送数据,每一bit数据都以低电平开始,格式见下面图示。
如果读取响应信号为高电平,则DHT没有响应,请检查线路就是否连接正常。
9、3、数字‘0’信号表示方法
图7、3信号‘0’时序图
数字‘0’表示方法为,首先DHT把总线拉低1214us然后拉高,高电平保持时间在2628us这个范围内。
则此比特为‘0’电平。
9、4、数字‘1’信号表示方法
图7、4信号‘1’时序图
数字‘1’表示方法为,首先DHT把总线拉低1214us然后拉高,高电平保持时间在116118us这个范围内。
则此比特为‘1’电平。
10、测量分辨率
测量分辨率分别为8bit(温度)、8bit(湿度)。
11、电气特性
VDD=5V,T=25℃,除非特殊标注
参数
条件
min
typ
max
单位
供电
DC
3
5
5、5
V
供电电流
测量
0、5
2、5
mA
平均
0、2
0、5
mA
待机
100
150
uA
采样周期
秒
1
次
注:
采样周期间隔不得低于1秒钟。
12、应用信息
12、1工作与贮存条件
超出建议得工作范围可能导致高达3%RH得临时性漂移信号。
返回正常工作条后,传感器会缓慢地向校准状态恢复。
要加速恢复进程/可参阅7、3小节得“恢复处理”。
在非正常工作条件下长时间使用会加速产品得老化过程。
12、2暴露在化学物质中
电阻式湿度传感器得感应层会受到化学蒸汽得干扰,化学物质在感应层中得扩散可能导致测量值漂移与灵敏度下降。
在一个纯净得环境中,污染物质会缓慢地释放出去。
下文所述得恢复处理将加速实现这一过程。
高浓度得化学污染会导致传感器感应层得彻底损坏。
12、3恢复处理
置于极限工作条件下或化学蒸汽中得传感器,通过如下处理程序,可使其恢复到校准时得状态。
在5060℃与<10%RH得湿度条件下保持2小时(烘干);随后在2030℃与>70%RH得湿度条件下保持5小时以上。
12、4温度影响
气体得相对湿度,在很大程度上依赖于温度。
因此在测量湿度时,应尽可能保证湿度传感器在同一温度下工作。
如果与释放热量得电子元件共用一个印刷线路板,在安装时应尽可能将DHT11远离电子元件,并安装在热源下方,同时保持外壳得良好通风。
为降低热传导,DHT11与印刷电路板其它部分得铜镀层应尽可能最小,并在两者之间留出一道缝隙。
12、5光线
长时间暴露在太阳光下或强烈得紫外线辐射中,会使性能降低。
12、6配线注意事项
DATA信号线材质量会影响通讯距离与通讯质量,推荐使用高质量屏蔽线。
13、封装信息
14、焊接信息
手动焊接,在最高260℃得温度条件下接触时间须少于10秒。
15、注意事项
(1)避免结露情况下使用。
(2)长期保存条件:
温度10-40℃,湿度60%以下。
例程:
//****************************************************************//
//DHT21使用范例
//单片机:
AT89S52或STC89C52RC
//功能:
串口发送温湿度数据波特率9600
//硬件连接:
P2、0口为通讯口连接DHT11,DHT11得电源与地连接单片机得电源与地,单片机串口加MAX232连接电脑
//****************************************************************//
#include
#include
//
typedefunsignedcharU8;/*definedforunsigned8bitsintegervariable无符号8位整型变量*/
typedefsignedcharS8;/*definedforsigned8bitsintegervariable有符号8位整型变量*/
typedefunsignedintU16;/*definedforunsigned16bitsintegervariable无符号16位整型变量*/
typedefsignedintS16;/*definedforsigned16bitsintegervariable有符号16位整型变量*/
typedefunsignedlongU32;/*definedforunsigned32bitsintegervariable无符号32位整型变量*/
typedefsignedlongS32;/*definedforsigned32bitsintegervariable有符号32位整型变量*/
typedeffloatF32;/*singleprecisionfloatingpointvariable(32bits)单精度浮点数(32位长度)*/
typedefdoubleF64;/*doubleprecisionfloatingpointvariable(64bits)双精度浮点数(64位长度)*/
//
#defineucharunsignedchar
#defineuintunsignedint
#defineData_0_time4
////
//IO口定义区//
////
sbitP2_0=P2^0;
sbitP2_1=P2^1;
sbitP2_2=P2^2;
sbitP2_3=P2^3;
////
//定义区//
////
U8U8FLAG,k;
U8U8count,U8temp;
U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
U8U8data;
U8outdata[5];//定义发送得字节数
U8indata[5];
U8count,count_r=0;
U8str[5]={"RS232"};
U16U16temp1,U16temp2;
SendData(U8*a)
{
outdata[0]=a[0];
outdata[1]=a[1];
outdata[2]=a[2];
outdata[3]=a[3];
outdata[4]=a[4];
count=1;
SBUF=outdata[0];
}
voidDelay(U16j)
{U8i;
for(;j>0;j)
{
for(i=0;i<27;i++);
}
}
voidDelay_10us(void)
{
U8i;
i;
i;
i;
i;
i;
i;
}
void(void)
{
U8i;
for(i=0;i<8;i++)
{
U8FLAG=2;
//
P2_1=0;//T
P2_1=1;//T
//
while((!
P2_0)&&U8FLAG++);
Delay_10us;
Delay_10us;
//Delay_10us;
U8temp=0;
if(P2_0)U8temp=1;
U8FLAG=2;
while((P2_0)&&U8FLAG++);
//
P2_1=0;//T
P2_1=1;//T
//
//超时则跳出for循环
if(U8FLAG==1)break;
//判断数据位就是0还就是1
//如果高电平高过预定0高电平值则数据位为1
U8data<<=1;
U8data|=U8temp;//0
}//rof
}
//
//湿度读取子程序
//
//以下变量均为全局变量
//温度高8位==U8T_data_H
//温度低8位==U8T_data_L
//湿度高8位==U8RH_data_H
//湿度低8位==U8RH_data_L
//校验8位==U8checkdata
//调用相关子程序如下
//Delay;,Delay_10us;,;
//
voidRH(void)
{
//主机拉低18ms
P2_0=0;
Delay(180);
P2_0=1;
//总线由上拉电阻拉高主机延时20us
Delay_10us;
Delay_10us;
Delay_10us;
Delay_10us;
//主机设为输入判断从机响应信号
P2_0=1;
//判断从机就是否有低电平响应信号如不响应则跳出,响应则向下运行
if(!
P2_0)//T!
{
U8FLAG=2;
//判断从机就是否发出80us得低电平响应信号就是否结束
while((!
P2_0)&&U8FLAG++);
U8FLAG=2;
//判断从机就是否发出80us得高电平,如发出则进入数据接收状态
while((P2_0)&&U8FLAG++);
//数据接收状态
;
U8RH_data_H_temp=U8data;
;
U8RH_data_L_temp=U8data;
;
U8T_data_H_temp=U8data;
;
U8T_data_L_temp=U8data;
;
U8checkdata_temp=U8data;
P2_0=1;
//数据校验
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
{
U8RH_data_H=U8RH_data_H_temp;
U8RH_data_L=U8RH_data_L_temp;
U8T_data_H=U8T_data_H_temp;
U8T_data_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
}//fi
}//fi
}
//
//main功能描述:
AT89C5111、0592MHz串口发
//送温湿度数据,波特率9600
//
voidmain
{
U8i,j;
//ucharstr[6]={"RS232"};
/*系统初始化*/
TMOD=0x20;//定时器T1使用工作方式2
TH1=253;//设置初值
TL1=253;
TR1=1;//开始计时
SCON=0x50;//工作方式1,波特率9600bps,允许接收
ES=1;
EA=1;//打开所以中断
TI=0;
RI=0;
SendData(str);//发送到串口
Delay
(1);//延时100US(12M晶振)
while
(1)
{
//
//调用温湿度读取子程序
RH;
//串口显示程序
//
str[0]=U8RH_data_H;
str[1]=U8RH_data_L;
str[2]=U8T_data_H;
str[3]=U8T_data_L;
str[4]=U8checkdata;
SendData(str);//发送到串口
//读取模块数据周期不易小于2S
Delay(20000);
}//elihw
}//main
voidRSINTRinterrupt4using2
{
U8InPut3;
if(TI==1)//发送中断
{
TI=0;
if(count!
=5)//发送完5位数据
{
SBUF=outdata[count];
count++;
}
}
if(RI==1)//接收中断
{
InPut3=SBUF;
indata[count_r]=InPut3;
count_r++;
RI=0;
if(count_r==5)//接收完4位数据
{
//数据接收完毕处理。
count_r=0;
str[0]=indata[0];
str[1]=indata[1];
str[2]=indata[2];
str[3]=indata[3];
str[4]=indata[4];
P0=0;
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 温湿度 传感器 DHT11 详解 例程 利用 串口 显示