DS1820与Lon
Works现场总线测温系统
高剑鸣
摘要:本文介绍了单线制数字式温度传感器DS1820的测温原理、测温步骤以及工程应用中的几个实际问题,并结合Lon
Works现场总线节点给出一个测量单点温度的例子,然后阐明了测量多点温度的方法。此实例可进一步推广到适合传感器温度量程的其它温度控制系统中去。
关键词:温度检测;Lon Works现场总线;DS1820
中图分类号:TP212.11 文献标识码:A
文章编号:1006-883X(2003)03-0030-04
一、Lon
Works现场总线概述
Lon
Works是当今最流行的现场总线之一,是由美国Echelon公司推出并且与Motorola、Toshiba共同倡导,在1990年正式公布而形成的。它采用了OSI参考模型标准的七层通信协议,其通信速率范围在300bps至1.5Mbps之间,并支持双绞线、电力线、光纤和红外线等多种通信介质,被誉为是通用控制网络。
Lon
Works技术是将Neuron芯片置入到传统的测量控制设备当中,使它们具有了数字计算和通信的能力,再通过一定的通信介质把多个分散的现场设备连接成网络,并按照规范的Lon
Talk协议进行通信,实现现场设备的数据传输与信息交换,形成符合实际要求的控制网络系统,也就是现在流行的现场总线控制系统(FCS)。这种控制系统已被广泛应用在工业过程控制、楼宇、交通等领域的现场智能设备中。
二、DS1820数字温度传感器简介
DS1820是美国Dallas
Semiconductor公司推出的数字式温度传感器,它支持Dallas触摸(Touch)接口,遵循单线协议,可以与处理器进行双向数字通信,是一种使用起来非常方便的温度传感器。
DS1820的输出值是一个9位的二进制数值,其测温范围在-55°C~125°C之间,当温度值在-10°C~85°C范围时,误差为±0.5°C。它的方便之处在于单线接口设计,使处理器只需要接一条数据线就能对它进行全部的操作,实现操作指令和测量数据的传输。每一片DS1820都有一个唯一的序列码,所以多个器件可以连在处理器的同一条数据线上,节省处理器资源,同时有利于多点温度测量的实现。另外,它内部的报警指令、搜寻命令以及可自定义的温度报警值使它在过程监控系统中得到广泛应用。
<![endif]> 1、DS1820的测温原理
DS1820测温原理如图1所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1,而高温度系数晶振的振荡频率随温度变化明显,它产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55°C所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1
,计数器1的预置值重新装入,并再次对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数减到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图1中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
2、DS1820的基本操作指令
DS1820的操作指令分为ROM操作命令和存储器操作命令。
(1)、ROM操作命令及其含义
Read
ROM指令代码(33h):如果只有一片DS1820,可用此命令读出其序列号,若在线DS1820多于一个,将发生冲突。
Match
ROM指令代码(55h):多个DS1820在线时,可用此命令匹配一个给定序列号的DS1820,此后的命令就针对该DS1820。
Skip
ROM指令代码(CCh):此命令执行后的存储器操作将针对在线的所有DS1820。
Search
ROM指令代码(F0h):用以读出在线的DS1820的序列号。
Alarm
Search指令代码(ECh):当温度值高于TH或低于TL中的数值时,此命令可以读出报警的DS1820。
(2)、存储器操作指令代码及其含义
Write
Scratchpad指令代码(4Eh):写两个字节的数据到温度寄存器。
Read
Scratchpad指令代码(BEh):读取温度寄存器的温度值。
Copy
Scratchpad指令代码(48h):将温度寄存器的数值拷贝到EERAM中,保证温度值不丢失。
Convert
T指令代码(44h):启动在线DS1280做温度A/D转换。
Recall
E2指令代码(B8h):将EERAM中的数值拷贝到温度寄存器中。
Read
Power Supply指令代码(B4h):在本命令送到DS1280之后的每一个读数据间隙,指出电源模式:“0”为寄生电源;“1”为外部电源。
3、温度测量的步骤
(1).
Read
ROM(33
h),每次对DS1820进行操作之前都要对它进行初始化,主要目的在于确定传感器已经连接到单总线上。
(2).
Search
ROM(F0h),这条指令使处理器用排除的方法去辨别总线上的DS1820。
(3).
Match
ROM(55h),只有准确的符合64位ROM序列的DS1820才能响应其后的指令,当然,单点测温时可以使用Skip
ROM(CCh)指令来跳过这一步。
(4).
Convert
T(44h),发完指令后应查询总线上的电平,当电平位高时温度转换完成。
(5).
Read
Scratchpad(BEh),将读指令发出后,就可从总线上读得表示温度的2字节二进制数。
三、温度测量范例
<![endif]> 如图2所示,测温系统的硬件配置为:处理器采用Neuron芯片TMPN3150B1F,片内包括E2PROM和RAM,外接ROM,使用MC14489辅助显示,温度传感器为DS1820,可以看出测温部分的线路是非常简单的。系统软件采用Neuron
C编写,Node
Builder调试。
程序中对DS1820的操作主要有下面几个步骤:
(1) 初始化;
(2) 查找DS1820
;
(3) 匹配DS1820;
(4) 发送温度转换指令;
(5) 读取温度值。
为实现测温和显示功能,程序中定义了触摸对
象temp、位输出对象boutput、同步全双工串行通信对象display_pin并且令它工作在主控方式下,以及内部定时器sample_timer和数据存储单元。
元器件的初始化程序:
void
display_config(unsigned int config_data) //初始化温度显示子程序
{
io_out(display_pin,&config_data,8);
}
...
when(reset)
{
io_out(boutput,1);
//初始化DS1820
display_config(0xc1);
//初始化MC14489
...
}
单点温度测量,使用Skip
ROM指令跳过Match
ROM指令直接发送温度转换指令:
if(var[0]==1)
{
touch_byte(temp,0x0cc);
touch_byte(temp,0x44);
...
}
把存储器中的数字值读入到数据存储单元中:
if(var[0]==1)
{
touch_byte(temp,0x0cc);
touch_byte(temp,0x0be);
io_in(temp,temp_result,64);
...
}
若需要进行多个点的温度测量,进行crc校验
for(i=0;i<=7;i++)
crc_data=crc8(crc_data,id_data[i]);
if(crc_data==id_data[7])
{
...
}
1、DS1820使用中注意事项
DS1820虽然具有测温系统简单、测温精度高、连接方便、占用处理器I/O端口少等优点,但在实际应用中也应注意以下几方面的问题:
(1).
较小的硬件开销意味着相对复杂的软件补偿,DS1820与处理器间采用串行的数据通信,因此在进行软件设计时尤其是设计汇编程序时要要注意I/O的时序。
(2).
虽然DS1820支持寄生电源工作方式,但是当总线上所挂DS1820超过8个时,最好不采用寄生电源的供电方式,而采用电源直接供电的方式,以保证温度测量的可靠性。
(3).
当向传感器发出温度转换指令后,处理器还要等待DS1820的返回信号,一旦某个元件接触不好或断线,就很容易造成没有返回信号,程序会进入死循环,所以在进行硬件连接和软件设计时要格外注意。
(4).
这个例子中给出的测量方法的误差在±0.5°C,但通过数字处理的方法可以将DS1820的测量误差降低到±0.1°C或±0.01°C,文献[3]中对此有详细的论述。
(5).
DS18B20、DS1822也是单总线器件,温度输出为9~12位,DS18B20的量程为-55°C~+125°C,在-10°C~+85°C范围内,精度为±0.5°C;DS1822的精度较差为±2°C,在器件选型时应注意。
四、结论
使用DS1820的测温系统电路简单,应用方便灵活,在常温测量中有较大优势,与Lon
Works 现场总线结合应用前景更加广阔,如在工业过程、空调系统、智能楼宇等领域的温度测量会有广泛的应用。
参考文献
[1] 阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1999
[2] 杨育红.LON网络控制技术及应用[M].西安:西安电子科技大学出版社,1999
[3]
Dallas
Semiconductor公司
DS1820
技术资料
Temperature
Measurement Using DS1820 Based on Lon Works
System
Abstract:
A method of single-point temperature measurement using the device of DS1820-
1-Wire digital thermometer, is introduced in this article. An example based on
the control system of Lon Works
field bus is also given. And a method for multidrop application follows. The
example can be popularized in other appropriate temperature control
systems.
Key
words:
temperature measurement; Lon Works field bus;
DS1820
作者简介
高剑鸣:北方工业大学
现场总线实验室硕士研究生。
通信地址:北京市石景山区北方工业大学研2000#(100041)。
电话:010-68839570
13671159010
王劲松:北方工业大学现场总线实验室硕士研究生。
通信地址:北方工业大学
研2000#信箱
邮编:100041
Tel:010-68839372