本项目介绍如何使用DS18B20传感器进行精准的温度数据采集,并通过串行接口将数据传输至计算机或其他设备上。
DS18B20是一种单总线数字传感器,支持六种信号类型:复位脉冲、应答脉冲、写入0、写入1、读取0以及读取1。除了应答脉冲之外,所有这些信号均由主机发出同步信号,并且发送的所有命令和数据都是以字节的低位在前的形式传输。
以下是各个信号的时间序列:
**初始化序列**
- 主机输出低电平至少480微秒(us),产生复位脉冲。紧接着释放总线,在上拉电阻的作用下,单总线上升至高电平。
- DS18B20随后在60到240微秒内将信号拉低以响应主机的请求,并保持此状态至少480微秒。
**写入时序**
包括两种情况:写入“1”和写入“0”。所有操作均需至少持续60微秒,两次独立的操作之间需要最少1微秒的时间间隔恢复。
- 写入1: 主机将信号拉低2微秒后释放总线,并保持高电平状态直到第60微秒结束。
- 写入0: 与写“1”相反,在主机输出持续的低电压达到60us之后再释放,紧接着是短暂的2us恢复期。
**读取时序**
当主机需要获取传感器的数据时会触发此过程。所有此类操作至少需保持60微秒,并且两次独立的操作之间最少间隔1微秒。
- 主机将信号拉低至少1微秒后进入输入模式,等待直到第2us结束以准备接收数据;然后持续读取总线状态长达58us。
**温度读取流程**
为了从DS18B20传感器获取当前的温度值,请按照以下步骤操作:
- 执行初始化序列(复位)。
- 发送跳过ROM命令(0XCC)以避免使用特定设备地址。
- 发送开始转换指令 (0X44),让传感器启动测量过程。
- 等待一段时间,确保数据已经准备就绪。
- 再次执行初始化序列进行后续通信确认。
- 重复发送跳过ROM命令(0XCC)来重新定位到目标设备上。
- 发送读取存储器指令 (0XBE)以指示传感器传输温度值信息。
- 最后连续两次从DS18B20中读出数据字节,从而得到完整的温度测量结果。