摘要:DS1820是DALLAS公司生产的单线数字温度传感器,它可以在单片机的控制下组成多点温度测量系统。文章介绍了单线数字式温度传感器DS1820的工作原理,给出了用DS1820和89C51单片机构成的单线多点温度测控系统的应用电路及软件框图。
关键词:数字温度计 单线制 多路温控仪 单片机系统 DS1820
1 概述
DS1820是美国DALLAS公司生产的单线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成串行数字信号供微机处理,而且每片DS1820都有唯一的产品号并可存入其ROM中,以使在构成大型温度测控系统时在单线上挂任意多个DS1820芯片。从DS1820读出或写入DS1820信息仅需要一根口线,共读写及温度变换功率来源于数据总线,该总线本身也可以向所挂接的DS1820供电,而无需额处电源。DS1820能提供九位温度读数,它无需任何外围硬件即可方便地构成温度检测系统。
2 DS1820的工作原理
DS1820采用3脚PR-35封装或8脚SOIC封装,管脚排列如图1所示。图中GND为地,I/O为数据输入/输出端(即单线总线),该脚为漏极开路输出,常态下呈高电平。VDD是外部+5V电源端,不用时应接地。NC为空脚。
图2所示为DS1820的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL解发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。
2.1 寄生电源
寄生电源由二极管VD1、VD2和寄生电容C组成。电源检测电路用于判定供电方式。寄生电源供电时,VDD端接地,器件从单线总线上获取电源。在I/O线呈低电平时,改由C上的电压Vc继续向器件供电。该寄生电源有两个优点:第一,检测远程温度时无需本地电源;第二,缺少正常电源时也能读ROM。若采用外部电源VDD,则通过VD2向器件供电。
2.2 温度测量原理
DS1820测量温度时使用特有的温度测量技术。其测量电路框图如图3所示。DS1820内部的低温度系数振荡器能产生稳定的频率信号f0,高温度系数振荡器则将被测温度转换成频率信号f。当计数门打开时,DS1820对f0计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性予以被偿。测量结果存入温度寄存器中。一般情况下的温度值应为9位(符号点1位),但因符号位扩展成高8位,故以16位被码形式读出,表1给出了温度和数字量的关系。
表1 DS1820温度数字对应关系表
温度℃ | 输出的二进制码 | 对应的十六进制码 |
+125 | 0000000011111010 | 00FAH |
+25 | 0000000000110010 | 0032H |
+1/2 | 0000000000000001 | 0001H |
0 | 0000000000000000 | 0000H |
-1/2 | 1111111111111111 | FFFFH |
-25 | 1111111111001110 | FFCEH |
-55 | 1111111110010010 | FF92H |
2.3 64位激光ROM
64位ROM的结构如下:
表2 DS180的ROM命令
指 令 | 说 明 |
读ROM(33H) | 读DS1820的序列号 |
匹配ROM(55H) | 继读完64位序列号的一个命令,用于多个DS1820时定位 |
跳过ROM(CCH) | 此命令执行后的存储器操作将针对在线的所有DS1820 |
搜ROM(F0H) | 识别总线上各器件的编码,为操作各器件作好准备 |
报警搜索(ECH) | 仅温度越限的器件对此命令作出响应 |
2.4 高速暂存器
它由便笺式RAM和非易失性电擦写
EERAM组成,后者用于存储TH、TL值。数据选写入RAM,经校验后再传给EERAM。便笺式EAM点9个字节,包括温度信息(第1、2字节)、TH和TL值(3、4字节)、计数寄存器(7、8字节)、CRC(第9字节)等,第5、6字节不用。暂存器的命令共6条,见表3所列。
表3 DS1820贮控制命令
指 令 | 说 明 |
温度转换(44H) | 启动在线DS1820做温度A/D转换 |
读数据(BEH) | 从高速暂存器读9bits温度值和CRC值 |
写数据(4EH) | 将数据写入高速暂存器的第2和第3字节中 |
复制(48H) | 将高速暂存器中第2和第3字节复制到EERAM |
读EERAM(B8H) | 将EERAM内容写入高速暂存器中第2和第3字节 |
读电源供电方式(B4H) | 了解DS1820的供电方式 |
在正常测温情况下,DS1820的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:首先用DS1820提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后现用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数部分以0.25℃、0.75℃为进位界限的关系,实际温度Ts可用下式计算:
Ts=(Tz-0.25℃)+(CD-Cs)/CD
2.5 告警信号
DS1820完成温度转换后,就把测得的温度值与TH、TL作比较。若T>TH或T 2.6 CRC的产生 在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS1820中的CRC值作比较,以判断主机收到的ROM数据是否正确。CRC的函数表达式为:CRC=X8+X5+X3+1。此外,DS1820尚需依上式为暂存器中的数据来产生一个8位CRC送给主机,以确保暂存器数据传送无误。 3 多路温度测控仪的电路设计 用单片机控制的多路测度测控仪的电路如图4所示。现用6只DS1820同时测控6路温度(视实际需要还可任意扩展通道数)。图4中采用89C51单片机,其P1.1口接单线总线。DS1820采用寄生电源供电方式。为保证在有效的DS1820时钟周期内能提供足够的电流,图4中采用一个MOSFET管和89C51的H.0口来完成对DS1820的总线上拉。P1.2~P1.7口用来输出温度测控信号,经驱动器MC1413后分别驱动6只固态继电器,通过改变加热或致冷系统的工作状态,可实现对被监测系统的实时控制。 为提高系统的可靠性,该系统设计了由硬件与软件组成的“看门狗”。硬件看门狗由MAX813L及其外围电路组成,同时还具有电源监控和复位功能。P1.1定时输出喂狗,按键S1为手动复位。键盘扫描和动态扫描的显示共用一片可编程接口芯征8279,显示采用8位共阴极LED数码管,它可用来显示通道数、温度测量值以及TH、TL的值。 需要注意的是,在系统安装及工作之前应将主机逐个与DS1820挂接,以读出其序列号。其工作过程为:主机发出一个脉冲,待“0”电平大于480μs后,复位DA1820,在DS1820所发响应脉冲由主机接收后,主机再发读ROM命令代码33H,然后发一个脉冲(15μs),并接着读取DS1820序列号的一位。用同样方法读取序列号的56位。另外,由于DS1820单线通信功能是分时完成的,遵循严格的时隙概念,因此,系统对DS1820和各种操作必须按协议进行,即:初始化DS1820(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。系统对DS1820操作的总体流程图如图5所示。
上一篇:利用80C31单片机串行口实现多个LED显示的一种简单方法
下一篇:基于PIC单片机的智能IC卡燃气表电控系统设计