远程温度检测系统的设计
2014-01-14
(闽南理工学院 电子与电气工程系,福建 石狮 362700)
引言
远程温度检测系统在日常的工业生产中应用广泛。由于RS-485总线采用平衡发送和差分接收,因此具有抑制共模干扰的能力[1],适用于远程的数据通信系统。在20Kbps的传输速率以下,RS-485总线最大的传输距离可达到1219米[2,3]。RS-485总线只需要一对双绞线就可以构成多点采集系统[4],具有布线简单,成本低廉等优点,因此,本文采用RS-485总线进行远程通讯,将检测到的温度通过RS-485总线传输至主机,进行温度的显示。
1 系统总体设计方案
该远程温度检测系统主要由前端温度检测模块、RS-485收发模块和主机接收通讯模块三大部分组成,系统的总体框图如图1所示。该系统主要实现的功能是将前端检测到的温度通过RS-485总线进行远距离的发送,由另一单片机接收后,再通过串口传输至PC机进行温度的显示。
图1 远程温度检测系统总体框图Fig1 Block diagram of the remote temperature detecting system
2 前端温度检测模块设计
前端温度检测模块负责温度的检测,主要由温度检测模块、液晶显示模块、单片机控制模块等部分组成。温度检测模块采用单总线温度传感器DS18B20将检测到的温度发送至AT89C51单片机,并在液晶LCD1602上显示检测到的温度,其总体硬件电路原理图如图2(a)所示。
图2 远程温度检测系统硬件电路图(a)前端温度检测模块 (b)RS-485 收发模块(c)主机接收通讯模块Fig2 Schematic of the remote temperature detecting system(a)Front-end temperature detecting module(b)RS-485 transceiver module(c)PCreceiving communication module
2.1 温度检测模块
温度检测模块采用DS18B20作为温度传感器。DS18B20采用“1-wire总线”的接口,其温度检测的范围为-55℃~+125℃,精度可达 0.0625℃,最大的转换时间为200ms[5]。本系统中将DS18B20的数据接口DQ接到51单片机的P3.7,并给I/O线提供一个上拉电阻。
2.2 液晶显示模块
液晶显示模块采用LCD1602,显示DS18B20检测到的温度,为了充分发挥DS18B20的精度,显示四位小数。
2.3 单片机控制模块
单片机控制模块负责将DS18B20检测到的温度在LCD1602上进行显示,并且将数据发送至RS-485总线。
由于单片机在读取DS18B20的温度数据时,每次读取两个字节,先读低8位,再读高8位,每一位代表不同的温度加权值。因此需要由单片机控制模块进行数据处理,得到温度的实际数值后,再分别将百位、十位、个位、小数点后四位的数值分离出来,在LCD1602上进行显示。
前端温度检测模块的软件流程图如图3所示。系统上电复位后,对串口进行初始化,设置其工作方式以及波特率,然后对DS18B20进行读写操作,将读取到的数值转换为对应的温度值,通过串口发送至RS-485总线。
图3 前端温度检测程序流程图Fig3 Program flow of front-end temperature detection
3 RS-485收发模块
常见的RS-485总线驱动芯片有TI公司的SN系列,美信公司的MAX系列,为了该温度检测系统具有更好的可扩展性,本设计选择MAX487作为RS-485收发器。MAX487可驱动128个节点,其电路图如图2(b)所示。MAX487的发送和接收功能转换是由芯片的端控制的:当时,MAX487处于发送状态;当时,MAX487处于接收状态。
在本系统中,由前端温度检测模块采集并处理后的温度数据经过一片MAX487驱动后发送到485总线,经远程传输后,由另一片MAX487接收,传输给与上位机进行通讯的单片机。
4 主机接收通讯模块
4.1 温度数据模块
经过处理的温度数据由RS-485总线远程传输后,采用另外一片AT89C51进行温度数据的接收。单片机将接收到的温度数据通过串口传送到上位机(PC机)。在单片机与PC机之间需要接入一个MAX232,以实现TTL-RS232的电平转换。温度数据接收模块的电路图如图2(c)所示,串口的波特率设置为9600,程序流程图如图4所示。
图4 接收温度模块程序流程图Fig4 Program flow of temperature receiving module
4.2 PC串口通讯模块
在PC机上,采用Visual C++6.0平台,结合ActiveX通信控件 (Microsoft Communications Control,version 6.0)实现串口通讯。
人机交互界面的设计如图5所示,设置了五个功能按键:打开串口,开始接收,停止接收,清除内容,关闭串口;界面右边的编辑框显示了接收温度的时间以及当前的实时温度。点击“打开串口”按钮后,再点击“开始接收”,前端实时检测到的温度数据就可以在PC机上进行显示(如图5所示),以实现远程温度检测。
图5 PC机接收到的温度数据Fig5 The temperature data of PCreceived
5 结束语
本系统以温度传感器DS18B20测量温度,采用51单片机作为控制单元,将所测得的温度数据通过RS485收发器,经过RS485总线传输;同时,在PC机上编写VC++面向对象程序,实现与单片机的串口通讯,最终实现温度在PC机上显示。
在设计的过程中,由于工业控制环境的复杂性,必然存在噪声,因此数据可能会产生错误,可以进一步在保证系统效率的前提下,设计滤波算法,保证数据的正确。
[1] 何青,胡汉春,代刚,张邦力.基于RS-485总线的PC机与单片机串行通讯仿真系统的设计 [J].机电产品开发与创新,2011,24(1):147-148.
[2] 秦贞臻,于斌.简述RS-485的优点与应用[J].品牌与标准化,2011(4):26.
[3] 李良.影响RS-485总线可靠性的因素 [J].内江科技,2011(1):53,74.
[4] 瓮嘉民,任鹏飞.基于Proteus的RS-485总线系统仿真设计[J].河南科学,2012,30(2):227-230.
[5] 赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2003:307-308.