马殷元 吕凤玉 赵 睿
(兰州交通大学机电技术研究所,甘肃 兰州 730070)
为掌握某生化反应的热场变化过程,需要长时间、高速、同步地测量反应器皿底部多点的温度,目前尚无合适的温度测量仪器仪表能够满足以上需求。热电偶、热电阻测量方式接线多、不易扩展,而先进的热成像等方式则成本较高。基于数字温度传感器DS18B20和AT89S52单片机设计了多点测温系统。该系统中一个点的温度获取时间在800 ms左右,单点测温误差在±0.5 K以内[1],但系统测量精度和速度达不到要求。当不采用DS18B20惯用的一线制总线结构,而是利用51单片机的并行口同步快速读取8支DS18B20的温度时,可实现在多点温度测量系统中对多个传感器的快速精确识别和处理。系统测量速度较好,但可扩展性和精度方面还需提高[2]。
在温度场的测量中,可采用标准热电偶配以现成的多通道数据采集卡构成多点测量系统,但系统在测点相当多的情况下成本较高[3]。
生化反应的温度在0~100℃范围内变化。对测量系统的要求是误差小于0.5 K,速度为1次/s,且要求多点同步测量,并保存连续长时间测量数据。生化反应器皿底部为直径9 cm的圆形,要求每平方厘米布置一个测点。基于单片机开发温度采样模块,通过通信接口和监控计算机构成测量系统[4],可使系统具有较好的性价比。本系统是一个由温度采集设备和监控计算机构成的分布式系统。下面将从温度采集设备、监控计算机软件和通信3个方面详细介绍系统的具体设计过程。
选择DS18B20作为前端传感器,可满足测量精度基本要求,使系统具有线路简单和性价比高的优点[1-2,5-8]。本系统选用 SOIC 封装形式 DS18B20 芯片,在印刷电路板上按照8排8列分布,构成采集设备的64个测点。
为实现对多个DS18B20的并行控制,要求微处理器有较多的输入输出接口,本系统选用有86个口线的ATmega1280微处理器作为数据采集微处理器。该微处理器有10个8位双向输入输出接口。
DS18B20是具有一线(1-Wire)制总线接口的数字温度计,它可以在750 ms内把温度转换为12位数字量。多个DS18B20可通过一线制总线组建简单且经济的传感器网络。在典型应用中,多个芯片连接成总线形式与微处理器进行通信。DS18B20的优点是节约了微处理器的接口引脚资源,线路简单;缺点是测量多点时速度慢,测量的同步性无法保障。究其原因,主要有以下几点:①在一线制总线接口方式下,微处理器通过查询DS18B20的64位ROM序列号,才能得到对应温度计的温度值,这会消耗一定时间;②微处理器对总线上的多个DS18B20的控制和读写通信必须依次串行进行操作,无法保障各点测量的同步性;③多点测量时间是单点测量时间的累加,如在总线上存在8个DS18B20器件,完成所有器件的查询需要8×750 ms,一旦时间过长,就无法满足实时性要求。
为此,本系统采集设备采用微处理器与DS18B20并行接口的测量方式。DS18B20的数据手册要求微处理器对一线制总线的操作须遵循严格的时序条件,每个DS18B20的控制和读写操作的时序误差要小于1 μs。这也说明,不同DS18B20器件在接口交互时序细节上的一致性非常好,所以,可使用微处理器的并行端口对多个DS18B20进行读写操作,同时获得多个DS18B20的数据。
本设计采用在微处理器并行端口各个引脚上分别挂接一个DS18B20的硬件设计,在该接线方式下,在每个一线制总线上仅有一个DS18B20器件,所以可使用skip ROM命令来跳过64位ROM序列号的匹配操作,这样既缩短了数据采集的操作时间,又节约了存储ROM序列号的空间。需要注意的是,在并行操作方式下,数据采集软件中使用字节指令操作并行端口,采集获得的数据不是直接的温度数据,而是经过二次处理得到的数据。上述硬件与软件的改进,使得多点并行操作的测量时间与单点测量时间几乎相同,获取64个传感器的数据的总时间小于751 ms,测量速度能够满足需求。对多组并行端口进行统一操作,也满足了对温度场的同步测量要求。微处理器与多DS18B20的接口电路如图1所示。
图1 微处理器与多DS18B20接口电路图Fig.1 Interface circuit between MCU and DS18B20
为保障温度测量的同步性,使用监控计算机通过通信命令统一调度多个温度采集设备。温度采集设备根据监控计算机发来的指令开始或停止测温。微处理器采集一次温度需要经过从“复位DS18B20”模块到“二次数据处理”共11个步骤。由于微处理器对DS18B20的读写操作需遵守严格的时序要求,因此微处理器对监控计算机的通信指令处理采用查询方式,而采用中断处理方式会干扰微处理器对DS18B20的操作时序。对微处理器进行DS18B20的操作时序分析可知,从发指令开始转换到DS18B20完成温度转换需要约500~750 ms。微处理器在这段时间处于等待温度转换状态,软件上可以利用这段时间实现多任务并行操作。据此,系统温度采集软件利用空隙时间进行通信操作,以提高系统实时性。微处理器并行采集多个DS18B20的测温数据,采集温度流程图如图2所示。
图2 采集温度流程图Fig.2 Flowchart of temperature acquisition
在并行操作方式下,微处理器操作8位宽度的输入输出口与8个DS18B20同时通信,可获得8个16 B的数据,并存放在数组DataA[0~15]中。实际的温度数据通过二次数据处理得到,并行采集数据存储如图3所示,DataF[0~7]为实际数据。
图3 并行采集数据存储图Fig.3 Storage of the data collected in parallel
ATmega1280与DS18B20构成了一个温度测量系统的前端仪表,为实现前端仪表的扩展性和标准化,需要在前端仪表中使用标准总线通信协议。Modbus是一种较常用的仪表总线协议。由于ATmega1280与DS18B20的通信操作必须遵循严格的时序,一些操作的时延误差须小于1 μs,这就要求 ATmega1280在与DS18B20通信时必须关闭中断。采集DS18B20数据的多个步骤的操作时间都大于1 ms。在最常用的9 600 bit/s速率下,超过1 ms的关中断将会造成通信过程中字符的丢失。因此,系统设计增加ATmega64作为通信微处理器。ATmega64有2个UART,其中一个与控制多个DS18B20的ATmega1280通信,另外一个与监控计算机通信。系统在ATmega64上实现了Modbus从机协议。
监控计算机发出地址为0的广播指令,控制多个温度采集设备同步采集温度,然后,轮询各个采集设备得到各个设备测点的温度。监控计算机发出的广播指令中数据域为0表示停止采集,为1表示开始采集,为3表示复位诊断。
同步测量控制功能使用Modbus协议中的写单寄存器指令实现。通信微处理器把Modbus帧分解成一个字节的信息发送给数据采集微处理器,这样,数据采集微处理器只需处理一个字节的通信消息,避免了关中断操作可能造成的字符丢失通信错误。数据采集微处理器在串行通信缓冲区值为1的情况下定时采集测量数据,采集完成后直接发送给通信微处理器。通信微处理器再把测量数据打包成Modbus格式,收到轮询指令时把测量数据发送给监控计算机。
由于微处理器的存储能力有限,不能保存长时间测量的数据,为此,系统设计监控计算机用以保存长时间测量的数据。热场温度测量系统中,监控软件功能模块如图4所示。
图4 监控软件功能模块图Fig.4 Functional modules of the supervisory control software
在系统调试初期,使用均匀温度热场对系统进行试验,发现测量的热场中的各点数据一致性较差,不能满足反映热场温度分布情况的需求,系统中各个测点之间的测量误差过大。在使用热电阻和模数转换器的测量装置中,可使用模数转换器的自动标定功能,减小测量误差[6],上述功能在测量装置中实现。本系统也可采用自动标定方法以减小误差,自动标定功能在监控计算机中通过软件实现。
DS18B20数据手册标明单个器件的测量误差为0.5 K,测量数据的分辨率为12位,最低位对应的分辨率为0.062 5 K。试验表明,单个DS18B20测量温度数据有较好的重复性和线性度。因此,可以通过对DS18B20测量数据的二次处理减小误差。
二次处理过程中,首先通过试验获得每个DS18B20从0~90℃之间每隔10 K的10个标准温度点,其中正向测量和反向测量数据各5个。然后,计算出每10个标定点数据的平均值,将这些平均值作为每个DS18B20的误差修正数据表保存在监控计算机中。连续自动测量中,监控机按照线性插值法对DS18B20测量数据进行修正。试验表明,修正后每个DS18B20的温度测量误差小于0.2 K,满足了反映热场温度分布和变化的测量需求。
此外,监控计算机监控软件中的误差修正表生成模块可自动完成误差修正数据的计算。
本系统实现了对热场温度多点高度同步测量,测量精度满足要求。由于采集设备中通信微处理器和Modbus协议的设计实现,使系统可扩展多个数据采集设备,构成测量点数更多的分布式测量系统;也可与控制设备联网,构成分布式测控系统。系统通过温度采集设备的双微处理器等设计解决了大量测点情况下温度采集的实时性和同步性问题;同时,设计了监控计算机软件,通过对数据的二次处理减小了测量误差,实现了对热场的长时间自动测量和记录,提高了生化试验测量效率。
[1]丁幼春,熊丽荣,黄剑.基于AT89S52和DS18B20的多点温度检测报警系统[J].农机化研究,2007(5):121 -123.
[2]潘勇,孟庆斌.基于DS18B20的多点温度测量系统设计[J].电子测量技术,2008,31(9):91 -93.
[3]孟浩.封闭空间消防灭火实验中的温度场测量系统[J].测控技术,2005,24(10):76 -78.
[4]张伟,齐铂金,张瑾.导管感应钎焊温度场分布多点同步测温系统[J].仪表技术与传感器,2007(3):29-31.
[5]包敬海,陆安山,龚文锋.快速多点体温检测系统的研究[J].自动化仪表,2010,31(6):67 -72.
[6]熊瑞昌,周泽魁,王强.具有自动标定功能的发酵罐多点温度采集系统[J].自动化仪表,2005,26(6):38 -43.
[7]董炜,王俊杰,杨士元.单总线测温系统[J].自动化仪表,2005,26(6):27 -30.
[8]侯波.矿用电缆连接处温度智能监测仪的研制[J].自动化仪表,2010,31(2):69 -71.