传感器与数字电子系统设计温度度传感器DS18B20的温度采集

(1)设计要求

传感器检测技术与数字电子系统设计两门课程联合完成对温度传感器DS18B20的温度采集并在开发板的数码管上实时显示温度值。

(2)设计原理(介绍DS18B20的工作原理、工作时序);

温度传感器(temperature transducer)是指能感受温度并转换成可用输出信号的传感器,是各种传感器中最常用的一种。早期使用的是模拟温度传感器,如热敏电阻,随着环境温度的变化,其阻值也随之发生变化,用处理器采集电阻两端的电压,然后根据给定的公式就可计算出当前环境温度。随着科技的进步,现代的温度传感器已经走向数字化,外形小,接口简单,广泛应用在生产实践的各个领域,为我们的生活提供便利。随着现代仪器的发展,微型化、集成化、数字化正成为传感器发展的一个重要方向。美国DALLAS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即与FPGA接口仅需占用一个I/O端口,无须任何外部元件,直接将环境温度转化成数字信号,以数字码方式串行输出,从而大大简化了传感器与FPGA的接口设计。DS18B20测量温度范围为-55~+125℃,精度为±0.5℃。现场(实时) 温度直接以“单总线”的数字方式传输,大大提高了系统的抗干扰性。它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~l2位的数字值读数方式。它工作在3~5.5V的电压范围,采用多种封装形式,从而使系统设计灵活、方便,设定分辨率及用户设定的报警温度存储在EEPROM中,掉电后依然保存。其内部结构如图 所示:

       DS18B20中的温度传感器可以完成对温度的测量。其温度转换可由用户自定义(改变配置寄存器中R0与R1的值)为 9、 10、11、 12 位,精度分别为 0.5℃、 0.25℃、 0.125℃、 0.0625℃分辨率,若不设置则默认为 12位的转换精度。符号标志位(S)温度的正负极性:若 S=0,则为正数;若 S=1,则为负数。

 若要测量温度,主设备必须向 DS18B20 发送温度转换命令[44h]才能开始温度转换。温度转换后,转换的温度值将会保存在高速缓存器的温度寄存器中。只有通过读高速缓存器命令[BEh]才能将数据读出,数据通过 1-Wire 总线传输,传输顺序为低位到高位依次传输。如果 DS18B20 被定义为 12 位的转换精度,温度寄存器中所有位都将包含有效数据。若定义为 11 位转换精度,则 bit 0(最低位)为未定义的。若定义为 10 位转换精度,则 bit 0 和 bit 1 为未定义的。若定义 9 位转换精度,则 bit 0、 bit 1 和 bit 2 为未定义的。

待输出的数据是以二进制补码的形式存储在温度寄存器中的,所以要求温度值先得求原码再转化为十进制后乘以精度。正数的原码反码补码都是一样的,而负数的补码就是对反码加一。当温度为负数时,需先求得其原码(补码先减一再取反即为其原码)然后转换为十进制后乘以精度。例如数据输出为1111_1111_0101_1110,高六位全为1故判断此数为负数,将11_0101_1110减一后取反得到00_10100010,再将其转换为十进制得到162,乘以0.0625,填上负号最后算的温度为 -10.125摄氏度。 这里特别说明的是符号位只代表数据的正负,无论是取反还是求值它都是不算在里面的。另外上电复位时寄存器中的初始值为+85℃。

  DS18B20 采用严谨的 1-Wire 总线通信协议来保证数据的完整性。该协议定义多个信号形式:复位脉冲,存在脉冲,写 0,写 1,读 0,读 1 。除了存在脉冲由从设备发出,其他信号都由主设备控制。

step 1: 初始化时序

由上图可知,主机通过判断有无存在脉冲响应来判断有无传感器可以进行数据交互。

step 2: 写时序

主设备通过写时隙将命令写入 DS18B20 中,写时隙有两种:写“1”和写“0”时隙。主设备通过写 1 时隙来向 DS18B20 中写入逻辑 1,通过写 0 时隙来向 DS18B20 中写入逻辑 0。

 当主设备将总线从高电平拉至低电平时,启动写时隙,所有的写时隙持续时间最少为 60us,每个写时隙间的恢复时间最少为 1us。

如果要产生写 1 时隙,必须先将总线拉至逻辑低电平然后释放总线,允许总线在写时隙开始后 15us 内上拉至高电平。若要产生写 0 时隙,必须将总线拉至逻辑低电平并保持不变最少 60us。当总线(DQ)拉低后, DS18B20 在 15us 至 60us 之间对总线进行采样,如果采的 DQ为高电平则发生写 1,如果为低电平则发生写 0,如下图所示。

step 3: 读时序

 当我们发送完读取供电模式[B4h]或读高速缓存器[BEh]命令时,必须及时地生成读时隙,只有在读时隙 DS18B20 才能向主设备传送数据。

       每个读时隙最小必须有 60us 的持续时间以及每个读时隙间至少要有 1us 的恢复时间。当主设备将总线从高电平拉至低电平超过 1us,启动读时隙

       当启动读时隙后, DS18B20 将会向主设备发送“0”或者“1”。 DS18B20 通过将 DQ 引脚上的上拉电阻将总线在开始的15us内拉高发送“1”,不拉高发送“0”。主设备在读时隙开始后的 15us 内必须释放总线,并且对总线进行采样。时序图如下。

(3)状态图

 跳过 ROM 命令和温度跳转命令都是写 0,写 1 的时序,过程是一样的所以我们让其在同一个状态进行写入。同理可以让跳过 ROM 和读温度命令也在同一个状态写入,相关的状态描述,如下表所示。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值