摘要: 介绍了单总线原理及单总线数字式温度传感器ds1820的工作原理、结构,并给出了用ds1820和89c52单片机构成的单线多点温度测控系统的硬件应用电路及软件框图。
关键词:单总线; 数字温度传感器; 多点温度测控
1 前言
随着科学技术的发展,特别是现代仪器的发展,微型化、集成化、数字化正成为传感器发展的一个重要方向[1]。美国dallas半导体公司推出的数字化温度传感器ds1820采用单总线协议,即与微机接口仅需占用一个i/o端口,无需任何外部元件,直接将温度转化成数字信号,以9位数字码方式串行输出,从而大大简化了传感器与微处理器的接口。
2 工作原理
目前大多数传感器系统都采用放大--传输--数模转换这种处理模式。这种模式一般要占用数条数
据/控制线,限制了单片机功能的扩展。而一线总线技术则很好地解决了这个问题。
一线总线技术就是在一条总线上仅有一个主系统和若干个从系统组成的计算机应用系统。由于总线上的所有器件都通过一条信号线传输信息,总线上的每个器件在不同的时间段驱动总线,这相当于把数据总线、地址总线和控制总线合在了一起。所以整个系统要按单总线协议规定的时序进行工作。为了使其它设备也能使用这条总线,一线总线协议采用了一个三态门,使得每一个设备在不传送数据时空出该数据线给
其它设备。一线总线在外部需要一个上拉电阻器,所以在总线空闲时是高电平。
挂在单总线上的器件称为单总线器件,为了区分总线上的不同器件,生产单总线器件时,厂家都刻录了一个64位的二进制rom代码作为芯片的唯一序列号。这样通过寻址就可以把每个器件识别出来。64位rom的结构如下:开始8位是产品类型的编号(ds1820为10h),接着是每个器件的唯一的序号,共
有48位,最后8位是前56位的crc校验码,这也是多个ds1820可以采用一线进行通信的原因。 3 ds1820介绍
ds1820是美国dallas半导体公司推出的第一片支持"一线总线"接口的温度传感器。它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供微机处理[2]。
ds1820的工作原理是:ds1820采用3脚pr-35封装或8脚soic封装,其中 gnd为地;i/o为数据输入/输出端(即单线总线),该脚为漏极开路输出,常态下呈高电平;vdd是外部+5v电源端,不用时应接地;nc为空脚。图1 所示为ds1820的内部框图,它主要包括寄生电源、温度传感器、64位激光rom单线接口、存放中间数据的高速暂存器(内含便笺式ram),用于存储用户设定的温度上下限值的th和tl解发器存储与控制逻辑、8位循环冗余校验码(crc)发生器等七部分。300)this.width=300'>300)this.width=300" border=0>
ds1820 特点如下:硬件接口简单,性能稳定,单线接口,仅需一根口线与mcu连接无需外围元件;由总线提供电源;测温范围为-55~75℃;精度为0.5℃;9位温度读数;a/d变换时间为200ms;用户自设定温度报警上下限,其值是非易失性的;报警搜索命令可识别那片ds1820超温度限。
ds1820的温度测量原理如下[3]:ds1820测量温度时使用特有的温度测量技术,其测量电路框图如图2所示。内部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时,振荡器的脉冲无法通过门电路。计数器设置为-55℃时的值,如果计数器到达0之前,门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于-55℃。同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。如果门电路仍然未关闭,则重复以上过程。温度表示值为9bit,高位为符号位。300)this.width=300'>300)this.width=300" border=0>
4 温度检测系统设计
由于每片ds1820含有唯一的硅串行数,所以在一条总线上可挂接多个ds1820芯片。从ds1820读出的信息或写入ds1820的信息,仅需要一根口线(单线接口)。读写及温度变换功率来源于数据总线,总线本身也可以向所挂接的ds1820供电,而无需额外电源。ds1820提供9位温度读数,构成多点温度检测系统而无需任何外围硬件。对ds1820的使用,多采用单片机实现数据采集。处理时,将ds1820信号线与单片机一位口线相连,单片机可挂接多片ds1820,从而实现多点温度检测系统。由于ds1820只有三个引脚,其中两根是电源线vdd和gnd,另外两根用作总线dq(data in/out),由于其输出和输入均是数字信号且与ttl电平兼容,因此其可以与微处理器直接进行接口,从而省去了一般传感器所必需的中间转换环节。
本设计中以ds1820为传感器、at89c52单片机为控制核心组成的多点温度测试系统如图3所示[4]。用6只ds1820同时测控6路温度(视实际需要还可扩展通道数)。89c52单片机p1.1口接单线总线。ds1820采用寄生电源供电方式。为保证在有效的ds1820时钟周期内能提供足够的电流,图3中采用一个mosfet管和89c52的h.0口来完成对ds1820的总线上拉。键盘扫描和动态扫描的显示共用一片可编程接口芯片8279,显示采用8位共阴极led数码管,它可用来显示通道数、温度测量值以及th、tl的值。
300)this.width=300'>300)this.width=300" border=0>
程序处理是整个系统的关键,即简洁的硬件结构是靠复杂的软件来支持的。多个器件挂在一条总线上为了识别不同的器件,在程序设计过程中一般有四个步骤:初始化命令;传送rom命令;传送ram命令;数据交换命令。
需要注意的是,无论是单点还是多点温度检测,在系统安装及工作之前,应将主机逐个与ds1820挂接,读出其序列号。其工作过程为:主机发出一个脉冲,待 "0"电平大于480μs后,复位da1820,在ds1820所发响应脉冲由主机接收后,主机再发读rom命令代码33h,然后发一个脉冲(15μs),并接着读取ds1820序列号的一位。用同样方法读取序列号的56位。另外,由于ds1820单线通信功能是分时完成的,遵循严格的时隙概念,因此,系统对ds1820和各种操作必须按协议进行,即初始化ds1820(发复位脉冲)→发rom功能命令→发存储器操作命令→处理数据。系统对 ds1820操作的总体流程图如图4所示。
在正常测温情况下,ds1820的测温分辨力为0.5℃。采用下述方法可获得高分辨率的温度测量结果:首先用ds1820提供的读暂存器指令(beh)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(lsb),得到所测实际温度的整数部分tz,然后再用beh指令取计数器1的计数剩余值cs和每度计数值cd。考虑到ds1820测量温度的整数部分以0.25和0.75℃为进位界限的关系.
300)this.width=300'>300)this.width=300" border=0>
结束语
对应于传统概念,这一粒三极管一样的传感器相当于传统的温度传感器+ 数字化+ cpu+ 总线协议及接口。一线器件采用单条连线,解决了控制、通信和供电等问题,降低了系统成本,并简化了设计,为未来传感器的发展和应用开辟了新的领域。