一:前言
DS18B20是一款最典型的利用单总线进行通讯的数字温度传感器,其测温范围-55-125摄氏度。网上关于这款传感器资料很多,而这边主要记录自己调试该款传感器遇到的问题。
二:项目需求
驱动DS18B20,用于检测环境温度。
三:硬件电路设计
一般DS18B20存在两种供电方式,一种是恒定电源供电,即VDD供电。
另一种是寄生供电,VDD和GND接地,通过Open-drain方式对数据端DQ的上拉通道对内部电容预充电。
项目中即使用了第二种“寄生供电”的硬件设计方案,实际过程中,一端MOS接某IO口,该IO口控制DS18B20充电过程,在需要DS18B20工作时需提前对其充电。
四:软件代码设计
可参考正点原子关于DS18B20库函数的用例,由于实例中使用恒定电源供电,因此需在其中加入充电部分,增加一个GPIO控制。
具体代码就是
GPIO_SET(0) //充电,电路中低电平充电
delay(N)//控制充电时间N,在转换时候充电不够会导致异常
GPIO_SET(1) //结束充电,否则VCC接在DQ端,不能被拉低,导致单行线时序混乱。
五:总线
学习电路基础知识和单行线时序。
参考链接,【STM32与DS18B20数字温度传感器寄生供电方式的优化方案与1-wire总线程序设计 - CSDN App】http://t.csdnimg.cn/hAxep