微型温度测量的数字化方案_传感与控制论文
关键词:数字温度传感器 ds18b20u “一线”总线 网关
随着技术的发展,各种惯性器件的性能在不断提高,体积也在不断小型化。对于惯性器件(如加速度计、陀螺)性能的提高,温度补偿作为一种重要的修正方式越来越引起人们的注意,因此如何在惯性器件极小的空间内精确地测量、传输、处理温度,成了能否使其性能和体积优势进一步提高的关键问题。
1 ds18b20u和“一线”总线
在研制新一代的微型mms加速度计时,温度测量的难题以一次摆在人们的面前。在3~4cm3的空间内放置一个传统的so-8或to-92封装的器件都显得拥挤,更何况还要旋转一个非主要功能的温度传感器了。
纵观国际上现有的温度传感器的变化,总的趋势是从模拟向数字转变,相应的体积也在不断减小。在体积非常苛刻的惯性器件中使用高精度、数字输出型的温度传感器,maxim公司的ds18b20u最为符合要求。ds1820u是ds18b20系列产品中的一种。与以往模拟温度信号的输出不同,ds18b20的数字温度输出通过“一线”总线(1-wire是被maxim公司收购的dallas公司新拥有的一种独特的数字信号总线协议,它将独特的电源线和信号线复合在一起,仅使用一条口线;每个芯片唯一编码,支持联网寻址、零功耗等待等,是所需硬件连线最少的一种总线)这种独特的方式,使多个ds18b20u方便地组建成传感器网络,为整个测量系统的建立和组合提供了更大可能性。
ds18b20真正令人惊奇的是其μsop封装,这种封装只有3.0mm×6.4mm的水平尺寸,高度小于1.2mm。这样可以节省更多的印刷电路板空间,非常适合于集成度高、对尺寸要求严格的惯性器件电路。因此在本加速度计的狭窄空间中使用,它是最为合适的内嵌式温度传感器件。
ds18b20温度传感器的主要性能指标为:
*“一线”总线接口令需一个端口进行通讯。
*简单的多点分布应用。
*可通过数据线供电。
*测温范围为-55~+125℃,在-10~+85℃的范围内,精度为±0.5℃。
*温度以9~12位数字量读出,分辨率为0.0625℃。
*u型产品采用超小型的μsop封装,大大减小了体积。
以下介绍ds18b20u的一些使用要点,更详细的可以参考maxim公司网站提供的ds18b20的datasheet(版)。
1.1 ds18b20u的温度测量时间
ds18b20u作为温度传感器。
1.2 ds18b20u的“一线”总线标识序号
每一个ds18b20u都有一个唯一的64位的“一线”总线标识序号,存放在ds18b20u的内部rom(只读存储器)中。开始8位是产品类型编码(ds18b20编码均为28h),接着的48位是每个器件的唯一序号,最后8位是前面56位的crc(循环冗余校验)码。
1.3 ds18b20u的温度数据表示格式
ds18b20u中有用于存储测得温度值的两个8位寄存器,它们存储的温度数据由两个字节组成,分别为ls byte(低字节)和ms byte(高字节),ms byte的高5位存放温度值的符号,如果温度为负(℃),则ms byte的高5位全为1,否则全为0。ls byte的8位和ms byte的低3位用于存放温度值的补码,lsb(最低位)为0.0625℃。将寄存器中的二进制数求补,就得到了被测温度值(-55℃~+125℃)。
1.4 ds18b20u的供电方式
ds18b20可以设置成两种供电方式,即数据总线供电方式和外部供电方式。采取数据总线供电方式可以节省一根导线,但由此带来的缺点是完成温度测量的时间较长;而采取外部供电方式则多用一根导线,但测量速度较快。注意:采用超小型μsop封装的ds18b20u不适合使用数据总线供电方式。
1.5 ds18b20u的多路同步测量
每一片ds18b20在其rom中都存在唯一的48位序列号,在出厂前已写入片内rom中。
如图1所示,当主机需要对众多在线ds18b20中的某一个进行操作时,首先发出匹配rom命令(命令代号55h),紧接着主机提供64位序列号(包括该ds18b20的48位序列号),之后的操作就是针对该ds18b20的。但是ds18b20的命令中允许对所有在线节点进行统一操作,利用的是跳过rom命令(命令代号cch)。而所谓路过rom命令即可:之后的操作是面对总线上所有ds18b20的。命令序列先跳过rom,启动总线上所有ds18b20进行温度测量,然后通过匹配rom再逐一地读回每个ds18b20的温度数据。这种方式使采集的温度数据具有很好的同步性,而且节省时间。
2 “一线”网关的硬件设计
为了收集ds18b20u器件采集的温度信息,需要控制挂接在“一线”总线网络上的ds18b20u芯片,所以需要研制“一线”网关。“一线”网关的主要功能就是面对试验人员,把“一线”总线上的ds18b20u的信息转换成异步串口232接口中的,这相当于两种类型网络之间的网关,因此叫做“一线”网关。“一线”网关由一个功能强大的8位单片机p89c668组合各种外围芯片构成,各模块之间的关系如图2所示。下面介绍其设计重点。
2.1 宽的工作温度范围
为了不仅能够通过“一线”总线采集温度,而且能够在工作现场或试验现场可靠工作,需要系统至少能勉够在80℃以上的高温环境下可靠工作,因此在设计时应对工作温度范围予以重视。
2.2 强的抗外界电磁干扰性能
工作在现场环境下,总是面对比较强烈的电磁干扰,因而需要采取更有效的措施。
首先,在外部供电的输入接口应加入二极管桥依据电路,防止在一些特殊条件下出现的电流逆向问题,同时也使得内外电路的地线隔离,起到抗干扰作用。
由于系统需要和外部设备进行串口通讯,而232串口的电气接口需要地线作为参考电平(因为外设系统带来的电磁干扰可能通过相连地线传入系统,引起工作异常),因此必须使用完全光耦隔离的方法来提高抗干扰能力。采用光耦隔离器件可抑制电磁干扰,保护系统电路不受网络影响。串口的二线式通讯需要两个光耦节点,节点两侧需有独立的供电电源。光耦器件应该选择高速类型。例如tlp113,以满足在最高通讯速率(115200bps)下的电气性能。电路中还应采用隔离型dc/dc模块向串口收发器电路供电。
2.3 小的系统体积
设备的小型化是每一个项目所追求的目标之一。为了使得设备便于携带、使用方便,在设计的初期就决定使用i2c等串行接口方式,而不使用速度虽然很快,但是却占用大量pcb面积、连接线路以及ic管脚的并口方式。简单的串行接口可以挂接多种不同功能的芯片。因此系统的主芯片选用了具有i2c接口的philips公司生产的p89c668单片机。其内带64kb flash存储器/8kb ram存储器,flash存储器既可以并行编程又可以串行在系统编程(isp),还可以程序自我编程(iap)。由于时钟周期为6个时钟,因此速度是传统51结构的两倍。
大量使用串行接口不仅获得了很小的体积,也使得电路的电气连接简单明了。
3 “一线”网关的软件设计
由于使用了单片机构成嵌入式系统,因此在完成硬件设计后,需要编制相应的程序在单处机系统中运行,这样才能最终完成“一线”网关的设计。由于采用的单片机是与51系列兼容的p89c668,所以使用流行的c51语言编译软件keil c v7.07a编制程序。
系统的核心任务是通过“一线”总线采集总线上的温度传感器数据并转发至串口,特点如下:
(1)利用ds18b20的总线特点,同步所有温度采集节点的采集过程。
在一线总线上发送同步采集指令,可以使系统在同一时刻采集到各个温度测量点的温度数据,而避免“一线”总线本身通讯速率低的难题,而且也不用关心总线上挂接传感器的具体数量。流程图如图3所示。
(2)利用eeprom保存采集节点的温度数据,允许脱机运行。
系统自带的eeprom是掉电数据保存的可靠方式。8k的存储空量和快速的区域写入方式足以实时保存现场采集的测量数据和相应的时间序列。
(3)联机运行时间步采集数据,通过串口上传pc机。
在一般的应用方式下,系统通过串口连接现场的pc机或其它上位设备,通过通讯接收上位机的指令,并进行数据采集、保存和传输。这种工作方式即“一线”总线温度传感器网关的原始设计理念。
(4)联机运行时保存的数据通过串口上传pc机。
由于系统可以保存脱机时采集的温度数据,因此可以在联机工作时接收命令,通过串口把保存在eeprom中的数据上传至上位机,方便了数据的转移、备份和分析。
所以,上位机可以是最普通的pc机(至少具有一个标准232串口),也可以是具有串行232接口的嵌入式系统。
4 温度测量数字化方案的使用实例
本文介绍的技术在某型加速度计的开发、试验中得到了应用。在相关试验中,为配合温度数据采集系统和其它相关设备,编制了应用软件。温度数据采集系统的上位机功能相关程序已经内嵌入该软件之中。
配套开发的pc机(上位机)控制软件,其编程环境为:
系统平台-windows2000 pro sp4中文版
开发平台-visual c++6版
以上方案经过精心设计,在多方努力下成功运用到某新型mems加速度计的研制过程中,取得了良好的效果。