DS18B20读数错误排除

描述:

同时测试了好几个板子,都接了DS18B20传感器。但,有的板子读取的DS18B20温度值正确,有的读取错误。

原因查找:

以为是有的传感器坏了,但测试后发现并不是。

又以为是DS18B20需要的启动时间长,因此在给DS18B20芯片供电好长一段时间后,才启动采集程序,但结果还是错误。

但在找问题的过程中,发现调试时的暂停会导致读出正确的DS18B20结果。

因此,怀疑是延时的问题。

解决:

所以在程序中连续读取10次DS18B20数据,并把数据打印出来查看,结果发现:前几次读取的结果是错误的,之后读取的结果就都是对的。

虽然解决了,但并没有找到根源,不求甚解吧。

 

在此,也记录下之前的一个针对错误的处理语句(已经看不明白当时为何要这么处理了,但感觉该处理目前似乎用不上了,因此删除掉了)

if ((fabs(g_fSoilTemp - 85) > 1) && (fabs(g_fSoilTemp - 127.9) > 1))
{
break;
}

posted on 2017-11-21 15:35  坚强地活着  阅读(3557)  评论(0编辑  收藏  举报

导航