1.2 DS18B20U的“一线”总线标识序号
每一个DS18B20U都有一个唯一的64位的“一线”总线标识序号,存放在DS18B20U的内部ROM(只读存储器)中。开始8 位是产品类型编码(DS18B20编码均为28H),接着的48位是每个器件的唯一序号,最后8位是前面56 位的CRC(循环冗余校验)码。
1.3 DS18B20U的温度数据表示格式
DS18B20U中有用于存储测得温度值的两个8 位寄存器,它们存储的温度数据由两个字节组成,分别为 LS Byte(低字节)和 MS Byte(高字节),如表2所示。MS Byte的高5位存放温度值的符号,如果温度为负(℃),则MS Byte的高5位全为1, 否则全为0。LS Byte的8位和MS Byte的低3位用于存放温度值的补码,LSB(最低位)为1表示0.0625 ℃。将寄存器中的二进制数求补,就得到了被测温度值(-55℃~+125℃) 。
表3举例说明了寄存器值和温度之间的对应关系。
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芯片,所以需要研制“一线”网关[2~3]。“一线”网关的主要功能就是面对试验人员,把“一线”总线上的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结构的两倍[4]。
整个系统使用的总线接口如表4所示。
大量使用串行接口不仅获得了很小的体积,也使得电路的电气连接简单明了。
3 “一线”网关的软件设计
由于使用了单片机构成嵌入式系统,因此在完成硬件设计后,需要编制相应的程序在单片机系统中运行,这样才能最终完成 “一线”网关的设计。由于采用的单片机是与51系列兼容的P89C668,所以使用流行的C51语言编译软件Keil C V7.07a编制程序。
系统的核心任务是通过“一线”总线采集总线上的温度传感器数据并转发至串口,特点如下[5~6]:
(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加速度计的研制过程中,取得了良好的效果。
参考文献
1 Datasheet for DS18B20.MAXIM,2002
2 刘 波.数字式温度传感器与仪表的智能化设计.仪表技术,2002(2)
3 赵望达.DS1820数字温度传感器在机械设备温度监控中的应用.制造业自动化, 2001(5)
4 Datasheet for P89C668.Philips,2001.7
5 Application Note 153:Using and Programming the I 2 C BUS.Keil,2000.6
6 Application Note:Design Showcase-微控制器和1-Wire传感器的软件接口.MAXIM,2002