DS18B20 工作原理及时序
DS18B20 原理与分析
DS18B20 是美国 DALLAS 半导体公司继 DS1820 之后最新推出的一种改进
型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且
可根据实际要求通过简单的编程实现 9~12 位的数字值读数方式。可以分别
在 93.75 ms 和 750 ms 内完成 9 位和 12 位的数字量,并且从 DS18B20 读出的
信息或写入 DS18B20 的信息仅需要一根口线(单线接口)读写,温度变换功率来
源于数据总线,总线本身也可以向所挂接的 DS18B20 供电,而无需额外电
源。因而使用 DS18B20 可使系统结构更趋简单,可靠性更高。他在测温精
度、转换时间、传输距离、分辨率等方面较 DS1820 有了很大的改进,给用
户带来了更方便的使用和更令人满意的效果。
1.DS18B20 简介
(1)独特的单线接口方式:DS18B20 与微处理器连接时仅需要一条口线即可
实现微处理器与 DS18B20 的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:+3.0~ +5.5 V。
(4)测温范围:-55 ~+125 ℃。固有测温分辨率为 0.5 ℃。
(5)通过编程可实现 9~12 位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个 DS18B20 可以并联在惟一的三线上,实现多
点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工
作。
DS18B20 的测温原理
DS18B20 的测温原理如图 2 所示,图中低温度系数晶振的振荡频率受温度
的影响很小〔1〕,用于产生固定频率的脉冲信号送给减法计数器 1,高温度
系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器 2
的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20 就对低温度
系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启
时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数
分别置入减法计数器 1 和温度寄存器中,减法计数器 1 和温度寄存器被预置
在 -55 ℃ 所对应的一个基数值。减法计数器 1 对低温度系数晶振产生的脉
冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时温度寄存器的值将
加 1,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度
系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器 2 计数到 0
时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图
2 中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减
法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器
值达到被测温度值,这就是 DS18B20 的测温原理。
另外,由于 DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,
因此读写时序很重要。系统对 DS18B20 的各种操作必须按协议进行。操作协
议为:初始化 DS18B20(发复位脉冲)→发 ROM 功能命令→发存储器
操作命令→处理数据。各种操作的时序图与 DS1820 相同,可参看文献
〔2〕。
DS18B20 工作过程及时序
DS18B20 内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡
器,为计数器 1 提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器 2 提
供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器 1 从预置数开始减计数到
0 时,温度寄存器中寄存的温度值就增加 1℃,这个过程重复进行,直到计数
器 2 计数到 0 时便停止。
初始时,计数器 1 预置的是与-55℃相对应的一个预置值。以后计数器 1 每
一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性
性,斜率累加器提供的预置数也随温度相应变化。计数器 1 的预置数也就是
在给定温度处使温度寄存器寄存值增加 1℃计数器所需要的计数个数。
DS18B20 内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效
位。在计数器 2 停止计数后,比较器将计数器 1 中的计数剩余值转换为温度
值后与 0.25℃进行比较,若低于 0.25℃,温度寄存器的最低位就置 0;若高于
0.25℃,最低位就置 1;若高于 0.75℃时,温度寄存器的最低位就进位然后置
0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最
后位代表 0.5℃,四舍五入最大量化误差为±1/2LSB,即 0.25℃。
温度寄存器中的温度值以 9 位数据格式表示,最高位为符号位,其余 8 位
以二进制补码形式表示温度值。测温结束时,这 9 位数据转存到暂存存储器
的前两个字节中,符号位占用第一字节,8 位温度数据占据第二字节。
DS18B20 测量温度时使用特有的温度测量技术。DS18B20 内部的低温度系
数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转
换成频率信号。当计数门打开时,DS18B20 进行计数,计数门开通时间由高
温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以
补偿。测量结果存入温度寄存器中。一般情况下的温度值应该为 9 位,但因
符号位扩展成高 8 位,所以最后以 16 位补码形式读出。
DS18B20 工作过程一般遵循以下协议:初始化 ROM 操作命令存储器操作
命令处理数据
① 初始化
单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出
一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道
DS1820 在总线上且已准备好操作。
② ROM 操作命令
一旦总线主机检测到从属器件的存在,它便可以发出器件 ROM 操作命令
之一。所有 ROM 操作命令均为 8 位长。这些命令列表如下:
Read ROM(读 ROM)[33h]
此命令允许总线主机读 DS18B20 的 8 位产品系列编码,唯一的 48 位序列
号,以及 8 位的 CRC。此命令只能在总线上仅有一个 DS18B20 的情况下可
以使用。如果总线上存在多于一个的从属器件,那幺当所有从片企图同时发
送时将发生数据冲突的现象(漏极开路会产生线与的结果)。
Match ROM( 符合 ROM)[55h]
此命令后继以 64 位的 ROM 数据序列,允许总线主机对多点总线上特定的
DS18B20 寻址。只有与 64 位 ROM 序列严格相符的 DS18B20 才能对后继的
存贮器操作命令作出响应。所有与 64 位 ROM 序列不符的从片将等待复位脉
冲。此命令在总线上有单个或多个器件的情况下均可使用。
Skip ROM( 跳过 ROM )[CCh]
在单点总线系统中,此命令通过允许总线主机不提供 64 位 ROM 编码而访
问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在
Skip ROM 命令之后发出读命令,那幺由于多个从片同时发送数据,会在总
线上发生数据冲突(漏极开路下拉会产生线与的效果)。
Search ROM( 搜索 ROM)[F0h]
当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知
道其 64 位 ROM 编码。搜索 ROM 命令允许总线控制器用排除法识别总线上
的所有从机的 64 位编码。
Alarm Search(告警搜索)[ECh]
此命令的流程与搜索 ROM 命令相同。但是,仅在最近一次温度测量出现
告警的情况下,DS18B20 才对此命令作出响应。告警的条件定义为温度高于
TH 或低于 TL。只要 DS18B20 一上电,告警条件就保持在设置状态,直到
另一次温度测量显示出非告警值或者改变 TH 或 TL 的设置,使得测量值再一
次位于允许的范围之内。贮存在 EEPROM 内的触发器值用于告警。
③ 存储器操作命令
Write Scratchpad(写暂存存储器)[4Eh]
这个命令向 DS18B20 的暂存器中写入数据,开始位置在地址 2。接下来写
入的两个字节将被存到暂存器中的地址位置 2 和 3。可以在任何时刻发出复
位命令来中止写入。
Read Scratchpad(读暂存存储器)[BEh]
这个命令读取暂存器的内容。读取将从字节 0 开始,一直进行下去,直到
第 9(字节 8,CRC)字节读完。如果不想读完所有字节,控制器可以在任何时
间发出复位命令来中止读取。
Copy Scratchpad(复制暂存存储器)[48h]
这条命令把暂存器的内容拷贝到 DS18B20 的 E2 存储器里,即把温度报警
触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出
读时间隙,而 DS18B20 又正在忙于把暂存器拷贝到 E2 存储器,DS18B20 就
会输出一个 0,如果拷贝结束的话,DS18B20 则输出 1。如果使用寄生电
源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持 10ms。
Convert T(温度变换)[44h]
这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后
DS18B20 保持等待状态。如果总线控制器在这条命令之后跟着发出读时间
隙,而 DS18B20 又忙于做时间转换的话,DS18B20 将在总线上输出 0,若温
度转换完成,则输出 1。如果使用寄生电源,总线控制器必须在发出这条命
令后立即起动强上拉,并保持 500ms。
Recall E2(重新调整 E2)[B8h]
这条命令把贮存在 E2 中温度触发器的值重新调至暂存存储器。这种重新
调出的操作在对 DS18B20 上电时也自动发生,因此只要器件一上电,暂存存
储器内就有了有效的数据。在这条命令发出之后,对于所发出的第一个读数
据时间片,器件会输出温度转换忙的标识:0=忙,1=准备就绪。
Read Power Supply(读电源)[B4h]
对于在此命令发送至 DS18B20 之后所发出的第一读数据的时间片,器件都
会给出其电源方式的信号:0=寄生电源供电,1=外部电源供电。
④ 处理数据
DS18B20 的高速暂存存储器由 9 个字节组成,其分配如图 3 所示。当温度
转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存
储器的第 0 和第 1 个字节。单片机可通过单线接口读到该数据,读取时低位
在前,高位在后。
DS18B20 温度数据表
上表是 DS18B20 温度采集转化后得到的 12 位数据,存储在 DS18B20 的两
个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于
或等于 0,这 5 位为 0,只要将测到的数值乘于 0.0625 即可得到实际温度;如
果温度小于 0,这 5 位为 1,测到的数值需要取反加 1 再乘于 0.0625 即可得
到实际温度。
温度转换计算方法举例:
例如当 DS18B20 采集到+125℃的实际温度后,输出为 07D0H,则:
实际温度=07D0H╳0.0625=2000╳0.0625=1250C。
例如当 DS18B20 采集到-55℃的实际温度后,输出为 FC90H,则应先将 11
位数据位取反加 1 得 370H(符号位不变,也不作为计算),则:
实际温度=370H╳0.0625=880╳0.0625=550C。
本文来源:https://www.2haoxitong.net/k/doc/570d92b94531b90d6c85ec3a87c24028915f8591.html
文档为doc格式