DS1820 单线数字温度计
特性
• 独特的单线接口仅需一个端口引脚进行通讯
• 简单的多点分布应用
• 无需外部器件
• 可通过数据线供电
• 零待机功耗
• 测温范围-55~+125℃,以 0.5℃递增。华氏器件-67~+257
0
F,以 0.9
0
F 递增
• 温度以 9 位数字量读出
• 温度数字量转换时间 200ms(典型值)
• 用户可定义的非易失性温度报警设置
• 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件
• 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统
说明
DS1820 数字温度计以 9 位数字量的形式反映器件的温度值。
DS1820 通过一个单线接口发送或接收信息,因此在中央微处理器和 DS1820 之间仅需一条连
接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。
因为每个 DS1820 都有一个独特的片序列号,所以多只 DS1820 可以同时连在一根单线总线上,
这样就可以把温度传感器放在许多不同的地方。这一特性在 HVAC 环境控制、探测建筑物、仪
器或机器的温度以及过程监测和控制等方面非常有用。
引脚说明
16 脚 SSOP PR35 符号 说明
9 1 GND 接地
8 2 DQ
数据输入/输出脚。对于单线操作:漏极开路(见“寄生电源”节)
7 3 VDD
可选的 VDD 引脚。具体接法见“寄生电源”节
DS1820S(16 脚 SSOP):所有上表中未提及的引脚都无连接。
概览
图 1 的方框图示出了 DS1820 的主要部件。DS1820 有三个主要数字部件:1)64 位激光 ROM,
2)温度传感器,3)非易失性温度报警触发器 TH 和 TL。器件用如下方式从单线通讯线上汲
取能量:在信号线处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗
电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。DS1820 也可用外部 5V 电
源供电。
DS1820 依靠一个单线端口通讯。在单线端口条件下,必须先建立 ROM 操作协议,才能进行存
储器和控制操作。因此,控制器必须首先提供下面 5 个 ROM 操作命令之一:1)读 ROM,2)
匹配 ROM,3)搜索 ROM,4)跳过 ROM,5)报警搜索。这些命令对每个器件的激光 ROM 部分
进行操作,在单线总线上挂有多个器件时,可以区分出单个器件,同时可以向总线控制器指
明有多少器件或是什么型号的器件。成功执行完一条 ROM 操作序列后,即可进行存储器和控
制操作,控制器可以提供 6 条存储器和控制操作指令中的任一条。
一条控制操作命令指示 DS1820 完成一次温度测量。测量结果放在 DS1820 的暂存器里,用一
条读暂存器内容的存储器操作命令可以把暂存器中数据读出。温度报警触发器 TH 和 TL 各由
一个 EEPROM 字节构成。如果没有对 DS1820 使用报警搜索命令,这些寄存器可以做为一般用
途的用户存储器使用。可以用一条存储器操作命令对 TH 和 TL 进行写入,对这些寄存器的读
出需要通过暂存器。所有数据都是以最低有效位在前的方式进行读写。
寄生电源
寄生电源的方框图见图 1。这个电路会在 I/O 或 VDD 引脚处于高电平时“偷”能量。当有特
定的时间和电压需求时(见节标题“单线总线系统”),I/O 要提供足够的能量。寄生电源
有两个好处:1)进行远距离测温时,无需本地电源,2)可以在没有常规电源的条件下读 ROM。
要想使 DS1820 能够进行精确的温度转换,I/O 线必须在转换期间保证供电。由于 DS1820 的
工作电流达到 1mA,所以仅靠 5K 上拉电阻提供电源是不行的,当几只 DS1820 挂在同一根 I/O
线上并同时想进行温度转换时,这个问题变得更加尖锐。
有两种方法能够使 DS1820 在动态转换周期中获得足够的电流供应。第一种方法,当进行温度
转换或拷贝到 E
2
存储器操作时,给 I/O 线提供一个强上拉。用 MOSFET 把 I/O 线直接拉到电源
上就可以实现,见图 2。在发出任何涉及拷贝到 E
2
存储器或启动温度转换的协议之后,必须
在最多 10μs 之内把 I/O 线转换到强上拉。使用寄生电源方式时,VDD 引脚必须接地。
另一种给 DS1820 供电的方法是从 VDD 引脚接入一个外部电源,见图 3。这样做的好处是 I/O
线上不需要加强上拉,而且总线控制器不用在温度转换期间总保持高电平。这样在转换期间
可以允许在单线总线上进行其他数据往来。另外,在单线总线上可以挂任意多片 DS1820,而
且如果它们都使用外部电源的话,就可以先发一个 Skip ROM 命令,再接一个 Convert T 命令,
让它们同时进行温度转换。注意当加上外部电源时,GND 引脚不能悬空。
温度高于 100℃时,不推荐使用寄生电源,因为 DS1820 在这种温度下表现出的漏电流比较大,
通讯可能无法进行。在类似这种温度的情况下,强烈推荐使用 DS1820 的 VDD 引脚。
对于总线控制器不知道总线上的 DS1820 是用寄生电源还是用外部电源的情况,DS1820 预备
了一种信号指示电源的使用意图。总线控制器发出一个 Skip ROM 协议,然后发出读电源命令,
这条命令发出后,控制器发出读时间隙,如果是寄生电源,DS1820 在单线总线上发回“0”,
如果是从 VDD 供电,则发回“1”,这样总线控制器就能够决定总线上是否有 DS1820 需要强
上拉。如果控制器接收到一个“0”,它就知道必须在温度转换期间给 I/O 线提供强上拉。这
个命令协议详见“存储器操作命令”节。
测温操作
DS1820 通过一种片上温度测量技术来测量温度。图 4 示出了温度测量电路的方框图。
温度/数据关系(表 1)
温度℃ 数据输出(二进制) 数据输出(十六进制)
+125 00000000 11111010 00FA
+25 00000000 00110010 0032
+1/2 00000000 00000001 0001
0 00000000 00000000 0000
-1/2 11111111 11111111 FFFF
-25 11111111 11001110 FFCE
-55 11111111 10010010 FF92
DS1820 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周
期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55
℃的一个值。如果计数器在门周期结束前到达 0,则温度寄存器(同样被预置到-55℃)的值
增加,表明所测温度大于-55℃。
同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补
偿感温振荡器的抛物线特性。然后计数器又开始计数直到 0,如果门周期仍未结束,将重复
这一过程。
斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过
改变计数器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨力,必
须同时知道在给定温度下计数器的值和每一度的计数值。
DS1820 内部对此计算的结果可提供 0.5℃的分辨力。温度以 16bit 带符号位扩展的二进制补
码形式读出,表 1 给出了温度值和输出数据的关系。数据通过单线接口以串行方式传输。
DS1820 测温范围-55℃~+125℃,以 0.5℃递增。如用于华氏温度,必须要用一个转换因子查
找表。
注意 DS1820 内温度表示值为 1/2℃LSB,如下所示 9bit 格式:
最高有效(符号)位被复制充满存储器中两字节温度寄存器的高 MSB 位,由这种“符号位扩
展”产生出了示于表 1 的 16bit 温度读数。
可用下述方法获得更高的分辨力。首先,读取温度值,将 0.5℃位(LSB)从读取的值中截去,
这个值叫做 TEMP_READ。然后读取计数器中剩余的值,这个值是门周期结束后保留下来的值
(COUNT_REMAIN)。最后,我们用到在这个温度下每度的计数值(COUNT_PER_C)。用户可以
用下面的公式计算实际温度值:
报警搜索操作
DS1820 完成一次温度转换后,就拿温度值和存储在 TH 和 TL 中的值进行比较。因为这些寄存
器是 8 位的,所以 0.5℃位被忽略不计。TH 或 TL 的最高有效位直接对应 16 位温度寄存器的
符号位。如果测得的温度高于 TH 或低于 TL,器件内部就会置位一个报警标识。每进行一次
测温就对这个标识进行一次更新。当报警标识置位时,DS1820 会对报警搜索命令有反应。这
样就允许许多 DS1820 并联在一起同时测温,如果某个地方的温度超过了限定值,报警的器件
就会被立即识别出来并读取,而不用读未报警的器件。
64 位(激)光刻 ROM
每只 DS1820 都有一个唯一的长达 64 位的编码。最前面 8 位是单线系列编码(DS1820 的编码
是 19h)。下面 48 位是一个唯一的序列号。最后 8 位是以上 56 位的 CRC 码。(见图 5)64
位 ROM 和 ROM 操作控制区允许 DS1820 做为单线制器件并按照详述于“单线总线系统”一节的
单线协议工作。只有建立了 ROM 操作协议,才能对 DS1820 进行控制操作。这个协议用 ROM 操
作协议流程图来描述(图 6)。单线总线控制器必须得天独厚提供 5 个 ROM 操作命令其中之
一:1)Read ROM,2)Match ROM,3)Search Rom,4)Skip ROM,5)Alarm Search。成功
进行一次 ROM 操作后,就可以对 DS1820 进行特定的操作,总线控制器可以发出六个存储器和
控制操作命令中的任一个。
CRC 发生器
DS1820 中有 8 位 CRC 存储在 64 位 ROM 的最高有效字节中。总线控制器可以用 64 位 ROM 中的
前 56 位计算出一个 CRC 值,再用这个和存储在 DS1820 中的值进行比较,以确定 ROM 数据是
否被总线控制器接收无误。CRC 计算等式如下:
CRC=X
8
+X
5
+X
4
+1
DS1820 同样用上面的公式产生一个 8 位 CRC 值,把这个值提供给总线控制器用来校验传输的
数据。在任何使用 CRC 进行数据传输校验的情况下,总线控制器必须用上面的公式计算出一
个 CRC 值,和存储在 DS1820 的 64 位 ROM 中的值或 DS1820 内部计算出的 8 位 CRC 值(当读暂
存器时,做为第 9 个字节读出来)进行比较。CRC 值的比较以及是否进行下一步操作完全由
总线控制器决定。当在DS1820中存储的或由其计算的 CRC值和总线控制器计算的值不相符时,
DS1820 内部并没有一个能阻止命令序列进行的电路。
单线 CRC 可以用一个由移位寄存器和 XOR 门构成的多项式发生器来产生,见图 7。