贺 静,吴体辉
(运城学院物理与电子工程系,山西运城 044000)
随着工农业科技的发展,温度测量的需求越来越多,也越来越重要。通常测量温度的方法是使用专用的仪表人为观测、记录处理数据并做出判断。然而,专用仪表的电路往往比较复杂,测量精度受所选设备影响比较大,价格也比较昂贵。因此传统的温度检测与控制已不能适应实际的要求[1]。如何将计算机与各种设施、设备结合,简化人工操作并实现自动控制,成为迫切的问题。本文设计的实时温度数据采集系统,通过将单片机与其他数据处理设备(如PC机)进行交换,解决了单片机处理数据的速度问题,提高了温度数据采集的效率,并实现了对温度数据的实时检测和记录。
单片机选择AT89S52,它是一个低功耗、高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案[2]。单片机的程序采用汇编语言,用查询的方式采集温度数据,并对采集的数据进行处理。
DS18B20是DALLAS公司生产的一线式数字温度传感器,测量温度范围为-55℃~+125℃,在-10℃~+85℃范围内,精度为±0.5℃[3]。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量。它具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位至12位A/D转换精度,测温分辨率可达0.0625℃,被测温度16位数字量方式串行输出;工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到2根或3根线上,CPU只需一根端口线就能与诸多DS18B20进行通信,它占用微处理器的端口较少,可节省大量的逻辑电路和引线[4]。
MAX232是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。由于电脑串口RS232电平是-10v+10v,而一般的单片机应用系统的信号电压是TTL电平0+5v,MAX232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平[5]。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。
系统分为两部分:实时温度数据采集终端(下位机硬件系统)和通信控制软件(上位机软件系统)。数据采集终端(下位机)主要由AT89S52、DS18B20、MAX232组成。温度传感器DS18B20将被测环境温度转化成带符号的数字信号并传送给单片机,同时将信号进行编码传送给上位机。
通信控制软件(上位机)主要由微机、主控软件等部分组成。上位机的控制界面采用Visual Basic6.0语言编写,上位机通过串口与下位机通信。在VB6.0的控件工具箱中,提供了一个使用非常方便的串行通信控件MSComm,可以通过这个控件控制COM口进行通讯。
下位机检测到现场温度数据,传送到上位机,上位机接收到数据,并对数据进行监测。上位机可以接收下位机传输的不同的测量的值,并在监控界面中显示出来,使用户能够看到现场测量温度的数值变化情况。
下位机部分主要由温度传感器、单片机等组成,在现场采集温度信号,并将温度信号转换成数字信号,通过RS232接口标准传送给上位机。温度传感器DS18B20的输出线与单片机AT89S52的P3.3口相连。AT89S52的输入端RXD和输出端TXD分别从芯片的10口和11口引出,并与MAX232的输出口12和输入口11相连。MAX232的输出口14和输入口13分别与DB9的输入口2和输出口3相连。实现下位机AT89S52与上位机PC的连接。硬件电路见图1所示。
图1 温度采集系统硬件原理图
图2 实物硬件电路板
通过这个电路,我们可以实现温度的采集、传输,以及在上位机的显示,使用户能够清晰地了解现场温度的变化。实际电路板如图2所示。
上位机的控制界面采用Visual Basic6.0语言编写,通过COM口与下位机连接。将监控到的温度数据在监控界面中显示出来,使用户能够直观地了解到现场温度变化,并能够保存采集到的温度数据。而VB在程序界面设计、多媒体开发方面更是独具优势。因此特别适合初学者和业余人员使用。
VB的设计界面包含5个Text文本框、 2个Frame、4个Label、3个Command、1个Mscomm控件和1个Time。Text1显示的是当前接收数据的内容,Text2显示的是所有接收到的数据,Text3显示的是所有接收数据中的最高值,Text4显示的是所有接收数据的最低值,Text5显示的是所有接收数据的个数。Frame1的内容是接收温度的最高、最低值,Frame2的内容是接收的温度数据。Label1的内容是当前温度,Label2的内容是温度最高值,Label3的内容是温度最低值,Label4的内容是数据个数。Command1的是接收按钮,Command2的内容是清空按钮,Command3是导出数据按钮以EXCEL形式表示出来,其中VB的程序编写比较简单。程序主界面如图3所示。
图3 程序主界面
图4 导出温度数据列表
图4显示的是以EXCEL形式导出的数据图,当我们点击导出数据时程序便会以EXCEL形式将文本框中的内容表示出来,并保存到电脑中,为数据统计分析提供了方便。
本设计达到了预期效果,但是仍存在一些需要改进的地方,如:在设计中没有实现多点数据同时采集,RS232接口讯距离小于15m,不能实现数据的远距离传输等问题。数据传输距离较近的问题很大程度上限值了其应用范围。为弥补RS-232之不足,EIA制订RS-422串口标准,将传输距离延长到1000M,传输速率提高到10Mb/s,并允许在一条平衡的总线上最多连接10个接收器。这样就能够实现数据的远距离传输,使该温度数据采集系统应用的范围更广。
[1]朱望纯,高海英.基于USB和单总线的温度场测试[J].仪表技术与传感器,2008(2):40-41.
[2]李鉴,黄大勇.基于CY7C68013的USB数据采集系统[J].微计算机信息,2009(25):97-98.
[3]张广利,阎有运.基于AT89S52的USB数据采集系统的设计[J].仪器仪表用户,2008(3):33-35.
[4]周冲,刘镇.基于AT89S52的USB数据采集系统的设计[J].科学技术与工程,2007,7(22):5935-5938.
[5]何东健,李书琴.Visual Basic程序设计教程[M].西安:西北大学出版社,2005.