DHT11温湿度传感器应用及感受
时间:04-07 18:47 阅读:1550次
*温馨提示:点击图片可以放大观看高清大图
简介:朋友送的DHT11传感器,用于湿度和温度测量,网上找了资料看,相对的控制较为简单,花了点时间把程序写了出来,用1602做显示,单总线控制的器件,基本上没什么指令,只有一个启动信号,然后是连续读出40bit的数据,程序没难度,一次成功,随后加上了防死循环的检测,元器件的精度是温度正负2度,湿度正负5%,相对来说精度不怎么高,但是应用于日常生活还是足够的。
元件测出温度值与18B20相比大约差1度,考虑到18B20的误差,基本上精度在其所标示的正负2度内。湿度与家里用的电子湿度计比较,基本上一致,还是不错的器件。
优点:接口简单,单总线,占用1个IO口,控制指令简单,精度可以接受,一次数据读取仅需要22ms。价格低,淘宝售价约6元。是业余制作民用级产品的优选对象。
缺点:体积略大,控制指令过于简单,在某些场合不利于分时控制。
程序思路:与红外解码基本相似,需要主机发送一个启动信号,然后等待器件响应后,连续读出40位数据,每位数据以低电平50us开头,然后维持高电平26-28us或70us以区分数据0或1,以读取高电平发生后第38us电平高低来判断。数据以高位在前低位在后分别读取,最后一个为校验数据。做相应的校验后显示数值。
使用感受:元器件整个读取操作需要一次完成,时间约需要4ms,加上启动指令最少18ms,则一次操作需要约22ms,虽然不长,但在一些场合应用中,需要分时分步执行一些固定程序时,比如数码管动态扫描显示,则在读取过程中要么造成数据丢失,要么显示屏闪动,据资料显示该元器件内部集成8位MCU处理数据,如果增加指令,除启动指令外还增加一个读数据指令,并调整指令长度,比如以主机拉低500us则视为启动指令,以300us视为读数据指令,这样在发起启动指令后,元件内部完成数据转换,然后等待外部读数据指令,每一个读指令则输出一个8位数据,这样处理后,有利于在程序中分步读取数据,每次读取1字节数据最多不超过500us。则在动态显示中采用分步读取,不会影响动态扫描。