原创 DHT22(AM2302)调试经验

2019-4-2 11:04 6751 17 6 分类: MCU/ 嵌入式 文集: 调试经验
首先,一定要去广州奥松电子官网down官方的使用手册,网上的包括淘宝卖家给的都不是官方的。
第一步:验证硬件电路连接

硬件连接很简单,在模块数据引脚和单片机数据IO口间串上一个上拉电阻,一般5.1K,超过一定距离就要降低了,一般也不会拿去测量很远的地方,如果真的很远,那数据传输不如使用无线方式了。同时还有一个滤波电容,用来增加抗干扰能力。

第二步:分析时序

官方的使用说明上,给了详细的时序说明。

建议按照这个时序说明来写程序,毕竟是官方的。很多其他来源的数据手册和这个相差很大。

关于唤醒从机,即主机先拉低数据线,再拉高这个过程,我个人认为从机被唤醒是检测到了由低到高的上升沿,所以一开始的拉低时间并不需要多精确,大概一个范围就可以,只要保证从机可以获取到数据线当前状态是低电平。DHT22在这里只要1ms左右就可以识别,而DHT11则需要20ms,这就大大提升了测量速度效率。拉低以后再拉高的维持时间,需要按照手册规定的范围来,因为如果太短,可能从机还没检测到这个跳变就没了,类似于数电中的寄存器保持时间Th;如果太长,后面从机的响应信号都已经发来了,你主机还在这拉高数据线,那就乱套了。

第三步:程序代码

以下是我个人的程序驱动代码,经检测切实可用。用的是STM32单片机,不过操作方法在各单片机上是通用的。

个人觉得在写这个时序的时候,最重要的就是简洁,一些判定达到目的就行,正点原子的STM32 开发板上给出的DHT11例程,在时序上多次使用变量retry去计数并且做1us的延时,但是基本上都没用到,那这样的话就白白增加了时间,要知道这些语句的执行时会耽误时间的,这时间还很多,难免会有一些时序上的错乱。

还有就是网上很多人强调的检验和的问题,如果不使用校验和,其实也会有数据出来,但是如果都是正确的操作,校验肯定能通过,注意程序中是(u8)(buf[0]+buf[1]+buf[2]+buf[3])==buf[4])  楼主一度没有前面加上强制转换u8,导致校验未通过没有数据出来。四个八位数相加和大多数超过8位了,有的编译环境可能只留八位,但是楼主用的keil uv5,应该不是默认只留八位,需要自行强制转换。

第四步:结果

这里用的是串口将测出来的数据发送出来,省去小数部分,保留整数。

这里是发送11 03作为检测温湿度的指令来控制电路板检测一次温湿度。返回来的数值,第一个是湿度值,第二个是温度值。

多次测量,并且第5和第6次测量中间间隔时间为半小时,可以看到测量结果较为稳定。这里显示的是16进制,转换以后,湿度大概在50%左右,温度大概在18度左右,基本符合室内环境。

欢迎讨论咨询

作者: 狂野的牛哥, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3867932.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

curton 2019-4-23 15:44

好资源 学习了

狂野的牛哥 2019-4-3 16:53

冰点1128: 这个程序好像没有判断传感器在不在线
读数据的函数里有调用 唤醒器件和检测响应信号 两个子函数,所以检测从器件是否在线我就去掉了。

冰点1128 2019-4-3 16:45

这个程序好像没有判断传感器在不在线
相关推荐阅读
狂野的牛哥 2020-06-12 10:24
DC是怎样综合RTL级设计的?
学习书籍《数字IC设计-方法、技巧与实践》笔记对于软件DC(Design Compiler)而言,综合=翻译+优化+映射。翻译:是将RTL级描述转换成DC常用的布尔表达,优化是根据设计目标优化电路结构...
狂野的牛哥 2019-10-29 11:08
秋招整理
签订三方结束秋招已经快一周了,想着回忆整理一下自己的秋招经历,留作纪念,也希望能帮助需要的人。坐标hf,目的城市hf或者wh,所以找工作的重点其实还是放在wh,hf和长三角区域,诸如北京,珠三角以及其...
狂野的牛哥 2019-08-16 20:55
步进电机驱动芯片TMC260使用经验
项目需要使用步进电机的驱动芯片,几经比较,选用了德国的TMC260,非常好用,工作起来稳健。芯片有两个完整的H桥,所以可用来控制两个直流电机或者一个二相四线步进电机。具体参数查看datasheet,大...
狂野的牛哥 2019-07-25 10:53
时序约束之偏移(OFFSET)约束
笔记本上整理记载了时序约束中的偏移约束,上传图片保存,以备日后查阅使用。...
狂野的牛哥 2019-06-20 16:34
ZYNQ学习笔记之First Project
做了第一个Project该工程功能:PS内部定时器开启定时,PL端GPIO连接按键和LED,通过按键按下产生从PL到PS的中断,中断服务程序是控制LED灯做流水灯闪烁,间隔时间为来自于定时器的1s。同...
狂野的牛哥 2019-06-20 15:30
ZYNQ学习笔记之时钟相关
通常模式下,锁相环PLL是启动的,PS-CLK提供时钟信号,经过三路PLL,分别是:ARM PLL,产生时钟用于CPU和互联;IO PLL,产生时钟用于IO外围设备;DDR PLL,产生时钟用于DDR...
EE直播间
更多
我要评论
3
17
关闭 站长推荐上一条 /3 下一条