STM32开发板DS18B20的温度数据为固定值

                            STM32(野火指南者)_DS18B20的温度数据为固定值

问题现象:开发板为野火指南者,使用配套的DS18B20串口打印温度例程,初始温度一直为85度,且改变环境温度数据无变化,如下图所示(下面会解释为什么图片是28.1度):

                                                  

问题分析:从DS18B20的数据上手册上查到,温度数据转换需要时间,如下图所示,使用12位采集精度时温度数据转换时间最大为750ms。

如果在温度数据转换的过程中没有充分延时,数据就不能正常写入温度寄存器。野火的DS18B20串口打印温度例程中,数据转换程序后无延时程序,所以DS18B20的寄存器中一直是原始数据85℃,下图为数据手册上的原话“上电复位时温度寄存器中的值为+85℃”。文章开头的图片是因为添加了延时程序,温度数据正常转换,温度寄存器中缺省值85℃被覆盖,之后又屏蔽了延时程序,所以显示是28.1℃。

 

                            

解决方法:

参考另一位博主关于DS18B20初始化时候读出85摄氏度(51系列)的解释:

原文出处:https://blog.csdn.net/hubukaixuan/article/details/7933575

在dsp_ds18b20.c的float DS18B20_GetTemp_MatchRom ( uint8_t * ds18b20_id )函数中,在温度数据转换程序后加入延时程序,添加位置如下图所示:

                

实验效果:使用手指轻捏传感器,观察数据变化,如下图所示:

                                

注意事项:

(1)注意延时程序添加位置

(2)关于延时时间,ms级的延时,时间越小温度反馈越滞后。经测试延时100ms时,温度反馈比较理想。下图是延时10ms时的温度反馈(串口打印速率500ms)

                                      

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值