最近弄一个设备对温度要求比较高,必须要实现多点检测,一个设备上面至少有15路温度,以前采用的是NTC但是由于NTC每次采集的温度不是很准确而且使用范围窄,每个ADC口只能读取一个NTC,则需要15个或者更多的ADC口(由于单片机检测NTC的是靠ADC采样的,单片机的基准电压和,NTC的供电电压都会有些误差,再加上NTC是靠电阻去查表方式实现的温度读取,等原因造成种种的不准确);
由于以上种种的原因所以想到了单IO口数据的方式;在网上查了很多资料,发现DS18B20有这种奇葩的功能,开始在网上找资料的时候他们那些大神们吹的需要填写ID才能达到那种效果;当时我就头疼了啊,这是做产品而不是做玩具,那么多个需要每一个每一个的去写ID,而且每个板子只能用指定的DS18B20这不是坑爹啊,然后下定决心一查到底,到官方去找了点资料,到各各地方收集了很多很多有用没用的资料之后终于在官方的手册的帮助下顺利给解决了,就是查找ID;详细步骤见文档中的“Example of a ROM Search”;本人时间测试10个是完全没有问题的,如果要使用此程序建议硬件工程师把上面的上拉电阻4.7K的换小,我使用的是2K的,不然读取不到数据。不废话了上料;
查找DS18B20
在每次查找完成后更具查找到的ID去读取相对应的DS18B20数据
注意:建议每次执行完一个读取数据周期之后要从新查找一下,防止DS18B20某个断线,这样就可以防止错误;
本人使用的STM32F107
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>