温度传感器DS18B20使用

  因为一个项目用到了DS18B20温度传感器,刚开始使用之处,第一次对单线传感器进行控制,毫无经验,也是碰了一头灰,摔了一些坑。总结一下使用心得。

   DS18B20是单线数字化温度传感器。温度采集的控制接口为1位,通过该位可进行温度数据的读取,以及9~12位分辨率的设置,对应的精度为0.5°C ~0.01625°C。

  下面是初始化的时序图。


初始化DS18B20模块,首先通过拉低模块配置信号dq,拉低时间大于480us,完成DS18B20的初始化,检测到DS18B20反馈的存在脉冲之后,开始配置DS18B20。

由于我在使用过程中是单独对一个18B20片子进行操作,因此跳过rom序列的查找功能。整体操作流程如下:

 1) 通过模块配置信号dq写入CC命令,跳过DS18B20的rom匹配,由于此应用中一根dq配置线只接了一个DS18B20温度转换器,不需查找匹配rom序列。

 2)通过模块配置信号dq写入44命令,启动温度转换。

 3)系统采用DS18B20默认的12位精度,温度转换所需时间最大750ms,因此通过状态机等待750ms,等待转换完毕。

 4)通过模块配置信号dq写入BE命令,读取DS18B20中暂存寄存器内的温度数据。

 5) 暂存寄存器值送入CRC校验模块,检测CRC校验模块反馈标志,若CRC校验正确,则更新温度数据,否则,不更新温度数据。

其中注意:

   检测反馈回来的存在脉冲,可采取多次采集,3取2的方式滤波,滤掉毛刺或虚假信号。

 写时间片注意:

    1、dq输出低电平保持79us,然后dq输出高阻状态2us;(dq被拉低的79us状态,完成写0的操作);

    2、dq输出低电平保持9us,然后dq输出高阻状态73us;(释放总线的同时,18b20通过上拉电阻拉高dq总线,完成写1的操作)。

读时间片:

  拉低dq总线5us,然后释放dq总线5us,读取18b20反馈到dq总线上的温度数据;


严格按照DS18B20时序(可适当放宽时序,不过要注意在正确区间取数)进行读写操作以及流程控制。



  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值