一、DS18B20温度传感器

1.DS18B20介绍

· DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点 · 测温范围 :- 55℃到+125℃ · 通信接口:1-Wire(单总线) · 其它特征:可形成总线结构、内置温度报警功能、可寄生供电

2.引脚及应用电路

本开发板原理图如图:

本开发板的IO口已经外接了一个电阻了(与AT24C02类似),所以这个就没有再单独接一个电阻

3.内部结构框图

parasite power circuit:是寄生电路部分,也就是说DS18B20可以不用通过VDD来进行供电,通过DQ口接电源也可以进行供电。DQ为高电平时,会对电容CPP进行充电,DQ为低电平时,电容会进行供电。 64-BIT ROM:作为器件地址,用于总线通信的寻址 MEMORY CONTROL LOGIC: 存储控制逻辑,用于控制数据的传输 SCRATCHPAD(暂存器):用于总线的数据交互(RAM) TEMPERATURE SENSOR:模拟温度传感器 ALARM HIGH TRIGGER REGISTER:报警高位触发寄存器,存储温度上限阈值 ALARM LOW TRIGGER REGISTER: 报警低位触发寄存器,存储温度下限阈值 CONFIGURATION REGISTER:配置寄存器,用于设置分辨率(精度) EEPROM: 用于保存温度触发阈值和配置参数 8-BIT CRC GENERATOR: 8位CRC生成器(CRC,循环冗余码,一种校验码)

存储器结构: Byte0和Byte1分别存储温度的低位和高位,默认为85

不能直接读写EEPROM,需要先将数据写入存储器,然后通过通信,将数据在写入EEPROM,读出数据同理

Byte5、Byte6和Byte7为保留字段

4.单总线介绍

·单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线 ·一根通信线:DQ ·异步、半双工 ·单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线

单总线电路规范 ·设备的DQ均要配置成开漏输出模式(类似于IIC)

·DQ添加一个上拉电阻,阻值一般为4.7KΩ左右(类似于IIC)

·若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路(像读EEPROM等耗电操作仅仅靠弱上拉是不行的)

单总线时序结构 ·初始化:主机将总线拉低至少480us,然后释放总线,等待15 ~ 60us后,存在的从机会拉低总线60 ~ 240us以响应主机,之后从机将释放总线(实际写程序中,一般取中间值)

·发送一位:主机将总线拉低60 ~ 120us,然后释放总线,表示发送0;主机将总线拉低1 ~ 15us,然后释放总线,表示发送1。从机将在总 线拉低30us后(典型值)读取电平,整个时间片应大于60us

也就是说,在30us这个时间点,读取总线的电平状态,如果是高电平,则表示发送1,如果是低电平,则表示发送0 · 接收一位:主机将总线拉低1~15us,然后释放总线,并在拉低后15us内读取总线电平(尽量贴近15us的末尾),读取为低电平则为接收0,读取为高电平则为接收1,整个时间片应大于60us DS18B20操作流程

·初始化:从机复位,主机判断从机是否响应

·ROM操作:ROM指令+本指令需要的读写操作

·功能操作:功能指令+本指令需要的读写操作

ROM操作就是访问64位ROM,功能操作就是访问暂存器 本实验使用SKIP ROM,因为本开发板从机只有一个DS18B20,不需要ROM来进行寻址

DS18B20数据帧 · 温度变换:初始化→跳过ROM→开始温度变换 · 温度读取:初始化→跳过ROM→读暂存器→连续的读操作 温度存储格式 其中S是符号位,温度为负,则BIT11-15全为1,温度为正,则BIT11-15全为0

BITO-10为温度数据(补码),举例如下:

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: