基于MATLAB的远程多点温度采集系统

2014-04-29 00:44和晓杰李世中
电子世界 2014年19期

和晓杰 李世中

【摘要】本文利用AT89C51和温度传感器DS18B20,及RS485串口通信技术,来实现远距离温度的采集。通过MATLAB的GUI设计,构建控制界面,实现温度曲线的绘制,高低温报警,数据存储,温度变化分析等功能。

【关键词】AT89C51;DS18B20;RS485;MATLAB GUI

Remote multipoint temperature acquisition system based on MATLAB

College of Mechatronics Engineering,North University of China  He Xiaojie,Li Shizhong

Abstract:In this paper,by using AT89C51 and the temperature sensor DS18B20,and RS485 serial communication technology,to realize the remote temperature acquisition. Through MATLAB GUI design and build a control interface,realize the temperature curve drawing,high and low temperature alarm,data storage,temperature variation analysis,and other functions.

Key words:AT89C51;DS18B20;RS485;MATLAB GUI

引言

在生活生产中,温度参数是极为重要的参数之一,对于温室大棚,仓库,楼层等场合,温度的检测和调控有很重要的意义。而以上场合均需要多个温度值进行实时监测,并且对于传输距离有一定的要求。本文的设计可以很好地满足这类需求。

1.系统的总体设计

在系统中,通过单片机AT89C51和DS18B20读取各个不同地点的温度,而后通过RS485无线通信模块,将采集到的温度值传递到AT89C51单片机总机上面,而后该单片机通过串口通信将采集到的温度值输入到MATLAB构建的控制平台上。在该平台上完成数据的显示和存储等功能。同时设置温度的上下限值,当采集到的温度值超出该范围实现报警功能[1]。原理图如图1所示。

图1 系统总体方案图

2.硬件电路设计

在整个温度控制系统中,使用的硬件设备分别是DS18B20,单片机AT89C52,电脑(即上位机),报警装置。在该系统中,使用led代替报警设备,用以表示当前是否符合系统的温度要求。单片机AT89C51与电脑(上位机)通过RS485串口通信进行数据传输[2]。

2.1 AT89C52

AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含4KB的可反复擦写的程序存储器和128B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。

2.2 DS18B20

DS18B20温度传感器是根据随温度变化而线性变化频率的振荡器通过计数器测出频率再转换成对应温度的原理,进行温度测定的。对于温度采集的时间, DS18B20的最长温度转换时间为750ms,在正常运作以后,DS18B20可以在1s内完成一次温度输出。在精度方面,温度测试范围为-55~125℃,在-10~+85℃时精度为±0.5℃。其分辨率最大可以达到0.0625℃[3-4]。

2.3 DS18B20与AT89C51的通信

在DS18B20于AT89C51进行数据传递过程中,一般有两种方法可供选择。第一种是在同一根数据线上挂接多个DS18B20,通过读取每个DS18B20的64位序列号对每个传感器进行识别,读取。由于在每一次读取温度工程中增加了温度传感器的搜索、匹配等操作,会使得操作变得复杂。每次进行数据读取的时间会增加,但不会超过10ms,与传感器每次进行数据转换需要95ms~750ms的时间相比,读取时间是不会发生质的改变的,每次的读取时间都可以控制在1s以内。在实际操作中,需要提前将多个DS18B20的64位序列号记录下来,以便在后面进行匹配操作。第二种方法是将不同的DS18B20挂接在不同的I/O引脚上。这样的操作虽然增加了引脚的使用个数,但却简化了程序操作,减少了读取温度的时间。

对于以上这两种方法,一般情况下两种都是可取的。但却忽略了几个问题。第一,传感器的个数问题。在第一种方法中,每个引脚挂接的DS18B20传感器挂接的个数不可以超过8个。当超过8个时,AT89C51单片机的总线驱动电路就会出现问题。第二种方法中,AT89C51单片机最多可以挂接32个,而前提是该单片机没有其他外界设备,这无疑对单片机资源是一种浪费。第二就是距离。由于DS18B20简化了与单片机的硬件连接,采用单总线的方式进行数据的传递,使得在采集数据时,传感器对时序的要求严格,从而导致外界干扰对数据传输有很大影响。在测量距离方面,当普通信号电缆传输长度超过50m,数据就会出错。对于集中程度比较的地域进行温度测量是可取的,但是当传感器与AT89C51距离超过50 m时,采用上面的方法就会产生很大误差[5-7]。

为了避免这种问题,可以将一个DS18B20挂接在一个AT89C51上面,而通过远程无线串口通信模块,实现该单片机与总单片机的数据传递。这样就可以避免挂接个数和传递数据的距离等问题。传感器与单片机的数据交互如图2所示。

图2 传感器与单片机连接图

3.软件设计

软件采用MATLAB编写的控制界面来进行。控制界面实现了温度值得实时显示和存储,温度曲线的动态绘制和定时存储,温度报警等功能[8-9]。控制界面和传感器的数据记录界面如图3、图4所示:

图3 控制界面

图4 传感器数据记录界面

在软件设置中可以直接使用MATLAB的串口调试功能,完成串口连接,串口读取和数据接受发送等功能。而后利用MATLAB强大的数值处理功能,图形显示功能,来完成温度值的显示,温度曲线的绘制和保存,数据存储及数据对比等功能。在数据图形显示的过程,还可以设置报警温度的上下限,自动实现报警功能。在操作中,通过选取不同的按钮,实现对不同温度传感器的温度采集。通过选取不同时段采集到的温度,可以从纵向的角度对温度曲线进行比较,并且可以在图形中看到温差,平均温度和温度波动等情况。通过MATLAB的GUI功能,将上述操作整合在一个界面中,使得人机操作更加方便快捷。

4.实验室模拟

为了检验本系统的可靠性和准确性,在空旷的地域对系统进行测试。将2个传感器分布于距离上位机500m左右的位置,采用人为操作,改变温度传感器采集到的温度,从而使温度曲线产生不同程度的温度波动,从而检验熊的准确性,可靠性和报警功能。测试的温度曲线和时间温度表,分别如图5和表1所示。

图5 温度曲线

通过与实际的温度值进行对比,系统的准确性和可靠性基本无误,软件界面便捷、强大。

5.结论

在整个系统设置中,对于硬件的操作和界面功能的实现,许多地方采用了一中简化设置。如在读取DS18B20的温度值时,只是读取了温度的整数部分。温度传感器的数量可根据具体的环境条件进行灵活调节,所以系统结构简单,成本低廉可靠性高,适应性强。远程温度监控能有效地节省了人力物力。相信该系统会在温室监控等领域得到应用。

参考文献

[1]马恒,尚大俊,周腾.煤堆温度远程监控系统的设计与实现[J].辽宁工程技术大学学报(自然科学版),2009,28(6):888-890.

[2]冷雪锋.基于RS_485总线远程多点分布式温度监控系统的设计[J].工业控制计算机,2012,25(8):13-14.

[3]王艳,王丽娟,甄姬娜.1-wire总线多点温度检测显示系统在Proteus中的仿真实现[J].制造业自动化,2013,35(13):52-56.

[4]徐文进,张阿卜.智能温度传感器Ds18b20在多路测温中的应用[J].现代电子技术,2004,27(22):3-7.

[5]张俊生.基于DS18B20多点测温系统的改进[J].科技资讯,2008,(34):5-6.

[6]蒋鸿宇,王勇,植涌.由DS18B20构成的多点温度测量系统[J].单片机与嵌入式系统应用,2007(1):59-61.

[7]郑长征,毛哲,谢兆鸿.多个DS18B20在粮库测温系统中的应用 [J].自动化技术与应用,2006,25(11):87-89.

[8]罗华飞.MATLAB GUI设计学习手记(第二版)[M].北京航空航天大学出版社,2014:166-309.

[9]刘卫国.MATLAB程序设计与应用(第2版)[M].高等教育出版社,2006:189-204.