DS18B20数字温度传感器介绍
目前常用的微机与外设之间进行的数据通信的串行总线主要有 I 2C 总线, SPI 总线等。其中 I 2C 总线以同步串行 2 线方式进行通信(一条时钟线,一条数据线), SPI 总线则以同步串行 3 线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线)。这些总线至少需要两条或两条以上的信号线。而单总线( 1-wire bus ),采用单根信号线,既可传输数据,而且数据传输是双向的, CPU 只需一根端口线就能与诸多单总线器件通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。 因而,这种单总线技术具有线路简单,硬件开销少,成本低廉,软件设计简单,便于总线扩展和维护。同时,基于单总线技术能较好地解决传统识别器普遍存在的携带不便,易损坏,易受腐馈,易受电磁干扰等不足,因此,单总线具有广阔的应用前景,是值得关注的一个发展领域。
单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。主机或从机通过一个漏极开路或三态端口连至数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线。单总线通常要求外接一个约为 4.7K 的上拉电阻,这样,当总线闲置时其状态为高电平。
DS18B20 数字式温度传感器,与传统的热敏电阻有所不同的是,使用集成芯片,采用单总线技术,其 能够有效的减小外界的干扰,提高测量的精度,同时,它 可以直接将被测温度转化成串行数字信号供微机处理,接口简单, 使数据传输和处理简单化。 部分功能电路的集成,使总体硬件设计更简洁,能 有效地降低成本, 搭建电路和焊接电路时更快,调试也更方便简单化,这也就 缩短了开发的周期 。
DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点:
( 1 )采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
( 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C 范围内,精度为 ± 0.5°C 。
( 3 )在使用中不需要任何外围元件。
( 4 )持多点组网功能 多个 DS18B20 可以并联在惟一的三线上,实现多点测温。
( 5 )供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。
( 6 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12 位。
( 7 ) 负压特性 电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
( 8 )掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。
DS18B20的内部结构
DS18B20测温原理
DS18B20 的内部测温电路框图
低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器 1 ,为计数器提供一频率稳定的计数脉冲。高温度系数晶振随温度变化其震荡频率明显改变,很敏感的振荡器,所产生的信号作为减法计数器 2 的脉冲输入,为计数器 2 提供一个频率随温度变化的计数脉冲。图中还隐含着计数门,当计数门打开时, DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将 -55 ℃ 所对应的基数分别置入减法计数器 1 和温度寄存器中,减法计数器 1 和温度寄存器被预置在 -55 ℃ 所对应的一个基数值。减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1 的预置值减到 0 时温度寄存器的值将加 1 ,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值。
DS18B20 的管脚排列及封装图
DQ 为数字信号输入 / 输出端; GND 为电源地; VDD 为外接供电电源输入端,电源供电 3.0~5.5V (在寄生电源接线方式时接地)。
寄生电源工作方式
外接电源工作方式
注意:当温度高于 100℃ 时,不能使用寄生电源,因为此时器件中较大的漏电流会使总线不能可靠检测高低电平,从而导致数据传输误码率的增大。
DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM 、温度传感器、非挥发的温度报警触发器 TH 和 TL 、配置寄存器。
光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码。 64 位光刻 ROM 的排列是:开始 8 位(地址: 28H )是产品类型标号,接着的 48 位是该 DS18B20 自身的序列号,并且每个 DS18B20 的序列号都不相同,因此它可以看作是该 DS18B20 的地址序列码;最后 8 位则是前面 56 位的循环冗余校验码( CRC=X8+X5+X4+1 )。由于每一个 DS18B20 的 ROM 数据都各不相同,因此微控制器就可以通过单总线对多个 DS18B20 进行寻址,从而实现一根总线上挂接多个 DS18B20 的目的。
64 b 闪速 ROM
DS18B20 中的温度传感器用于完成对温度的测量,它的测量精度可以配置成 9 位, 10 位, 11 位或 12 位 4 种状态。温度传感器在测量完成后将测量的结果存储在 DS18B20 的两个 8BIT 的 RAM 中,单片机可通过单线接口读到该数据,读取时低位在前,高位在后数据的存储格式如下表(以 12 位转化为例):
温度信号寄存器格式
这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0 ,这 5 位为 0 ,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0 ,这 5 位为 1 ,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。
例如: + 125 ℃ 的数字输出为07D0H , + 25.0625 ℃ 的数字输出为0191H , -25.0625 ℃ 的数字输出为 FF6FH , -55 ℃ 的数字输出为 FC90H 。
DS18B20 完成温度转换后,就把测得的温度值与 TH , TL 作比较,若 T>TH 或 T<TL, 则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只 DS18B20 同时测量温度并进行告警搜索。
DS18B20 温度传感器的存储器
DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可电擦除的 E2RAM, 后者存放高温度和低温度触发器 TH 、 TL 和结构寄存器。数据先写入 RAM ,经校验后再传给 E2RAM 。
暂存存储器包含了 8 个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位 TL ,第二个字节是温度的高八位 TH 。第三个和第四个字节是 TH 、 TL 的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节,可用来保证通信正确。 DS18B20 的分布如下:
寄存器内容
地址
温度的低八位数据
0
温度的高八位数据
1
高温阀值
2
低温阀值
3
保留
4
保留
5
计数剩余值
6
每度计数值
7
CRC 校验
8
DS18B20 的暂存寄存器分布
在 64 b ROM 的最高有效字节中存储有循环冗余校验码( CRC )。主机根据 ROM 的前 56 位来计算 CRC 值,并和存入 DS18B20 中的 CRC 值做比较,以判断主机收到的 ROM 数据是否正确。
设置寄存器
设置寄存器位于高速闪存的低5个字节,这个寄存器中的内容被用来确定温度的转换精度。寄存器各位的内容如下:
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
TM
R1
R0
1
1
1
1
1
DS18B20 的设置寄存器各位内容
该寄存器的低五位一直都是 1 , TM 是测试模式位,用于设置 DS18B20 在工作模式还是在测试模式。在 DS18B20 出厂时该位被设置为 0 ,用户不要去改动。 R1 和 R0 用来设置分辨率,如下表所示:( DS18B20 出厂时被设置为 12 位)
R1
R0
分辨率
温度最大转换时间
0
0
9 位
93.75 ms
0
1
10 位
187.5 ms
1
0
11 位
375 ms
0
0
12 位
750 ms
分辨率设置
由表可知,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。
DS18B20 的温度测量
1-WIRE 网络具有严谨的控制结构,其结构如下图所示,一般通过双绞线与 1-WIRE 元件进行数据通信,它们通常被定义为漏极开路端点,主 / 从式多点结构,而且一般都在主机端接上一个上拉电阻 +5V 电源。通常为了给 1-WIRE 设备提供足够的电源,需要一个 MOSFET 管将 1-WIRE 总线上拉至 +5V 电源。
DS18B20 组成的 1-WIRE 网络
1-WIRE 网络通信协议是分时定义的,有严格的时隙概念,下图是复位脉冲的时隙。
1-WIRE 协议的复位脉冲时隙
1-WIRE 读写“ 0/ 1 ” 时隙
DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱, 1-WIRE 器件将不响应主机,因此读写时序很重要。系统对 DS18B20 的各种操作必须按协议进行。根据 DS18B20 的协议规定,微控制器控制 DS18B20 完成温度的转换必须经过以下 4 个步骤 :
(1)每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500ms ,然后释放, DS18B20 收到信号后等待 16ms~60ms 左右,然后发出 60ms~240ms 的存在低脉冲,主 CPU 收到此信号后表示复位成功。
(2)发送一条 ROM 指令,如下表所示:
指令名称
指令代码
指令功能
读 ROM
33H
读 DS18B20ROM 中的编码(即读 64 位地址)
ROM 匹配(符合 ROM )
55H
发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与编码相对应 DS18B20 使之作出响应,为下一步对该 DS18B20 的读写作准备
搜索 ROM
0F0H
用于确定挂接在同一总线上 DS18B20 的个数和识别 64 位 ROM 地址,为操作各器件作好准备
跳过 ROM
0CCH
忽略 64 位 ROM 地址,直接向 DS18B20 发温度变换命令,适用于单片机工作
警报搜索
0ECH
该指令执行后,只有温度超过设定值上限或下限的片子才做出响应
DS18B20 的 ROM 指令集
(3)发送存储器指令,如下表所示:
指令名称
指令代码
指令功能
温度变换
44H
启动 DS18B20 进行温度转换,转换时间最长为 500ms (典型为 200ms ),结果存入内部 9 字节 RAM 中
读暂存器
0BEH
读内部 RAM 中 9 字节的内容
写暂存器
4EH
发出向内部 RAM 的第 3 , 4 字节写上,下限温度数据命令,紧跟该命令之后,是传送两字节的数据
复制暂存器
48H
将 RAM 中第 3 , 4 字节的内容复制到 EEPROM 中
重调 EEPROM
0B8H
EEPROM 中的内容恢复到 RAM 中的第 3 , 4 字节
读供电方式
0B4H
读 DS18B20 的供电模式,寄生供电时 DS18B20 发送“ 0 ”,外接电源供电 DS18B20 发送“ 1 ”
DS18B20 的存储器指令集
(4)进行数据通信。
DS18B20 使用中注意事项
DS1820 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
( 1 )每一次读写之前都要对 DS18B20 进行复位,复位成功后发送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。复位要求主 CPU 将数据线下拉 500 微秒,然后释放, DS18B20 收到信号后等待 16 ~ 60 微秒左右,后发出 60 ~ 240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。(所有的读写时序至少需要 60us ,且每个独立的时序之间至少需要 1us 的恢复时间。在写时序时,主机将在下拉低总线 15us 之内释放总线,并向单总线器件写 1 ;若主机拉低总线后能保持至少 60us 的低电平,则向单总线器件写 0 。单总线仅在主机发出读写时序时才向主机传送数据,所以,当主机向单总线器件发出读数据指令后,必须马上产生读时序,以便单总线器件能传输数据。)
( 2 )在写数据时,写 0 时单总线至少被拉低 60US, 写 1 时 ,15US 内就得释放总线。
( 3 )转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0 ,这 5 位为 0 ,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0 ,这 5 位为 1 ,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。
( 4 )较小的硬件开销需要相对复杂的软件进行补偿,由于 DS1820 与微处理器间采用串行数据传送,因此,在对 DS1820 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用 PL/M 、 C 等高级语言进行系统程序设计时,对 DS1820 操作部分最好采用汇编语言实现。
(5) 在 DS1820 的有关资料中均未提及单总线上所挂 DS1820 数量问题,容易使人误认为可以挂任意多个 DS1820 ,在实际应用中并非如此。当单总线上所挂 DS1820 超过 8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
(6) 连接 DS1820 的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过 50m 时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达 150m ,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用 DS1820 进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。测温电缆线建议采用屏蔽 4 芯双绞线,其中一对线接地线与信号线,另一组接 VCC 和地线,屏蔽层在源端单点接地。
( 7 )在 DS1820 测温程序设计中,向 DS1820 发出温度转换命令后,程序总要等待 DS1820 的返回信号,一旦某个 DS1820 接触不好或断线,当程序读该 DS1820 时,将没有返回信号,程序进入死循环。这一点在进行 DS1820 硬件连接和软件设计时也要给予一定的重视。