DS18B20温度传感器简介
DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点
测温范围:-55°C 到 +125°C
通信接口:1-Wire(单总线)
其它特征:可形成总线结构、内置温度报警功能、可寄生供电
64-BIT ROM:作为器件地址,用于总线通信的寻址
SCRATCHPAD(暂存器):用于总线的数据交互
EEPROM:用于保存温度触发阈值和配置参数
单总线介绍(1-Wire BUS)
一根通信线:DQ,Q是queue的缩写,DQ表示数据队列。异步,半双工。
单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线
设备的DQ均要配置成开漏输出模式
DQ添加一个上拉电阻,阻值一般为4.7KΩ左右
若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路
单总线时序结构
初始化:主机将总线拉低至少480us,然后释放总线,等待15~60us后,存在的从机会拉低总线60~240us以响应主机,之后从机将释放总线
这里采用了绝对时间(不能用上升沿or下降沿,因为只有一根线)
发送一位:主机将总线拉低60~120us,然后释放总线,表示发送0;主机将总线拉低1~15us,然后释放总线,表示发送1。从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us
接收一位:主机将总线拉低1~15us,然后释放总线,并在拉低后15us内读取总线电平(尽量贴近15us的末尾),读取为低电平则为接收0,读取为高电平则为接收1 ,整个时间片应大于60us
现在接收一位是相对的,这个单总线上一共有两位机器(假设),有一个主机和一个从机.此时从机想要和主机发消息,则主机线把总线拉低15us左右来听从机发消息,此时就算是主机将总线拉回去,总线也无法复位,因为现在从机正在发消息。如果从机发送0那么从机就会一直拉低电平,所以主机在15微秒时读取的低电平。如果从机发送1那么从机就会一直保持高电平,所以主机释放为高电平后,电平会立即变为高电平
不会混淆读和写的原因:默认为写,有读的迹象才让读
发送一个字节:连续调用8次发送一位的时序,依次发送一个字节的8位(低位在前)
接收一个字节:连续调用8次接收一位的时序,依次接收一个字节的8位(低位在前)
初始化:从机复位,主机判断从机是否响应
ROM操作:ROM指令+本指令需要的读写操作
功能操作:功能指令+本指令需要的读写操作
温度变换:初始化→跳过ROM →开始温度变换
温度读取:初始化→跳过ROM →读暂存器→连续的读操作
(温度是两个字节存储:)
温度存储格式
负数就是用的补码形式存储