赵旭
摘要:在工业控制领域,温度测量是不可或缺的工作。随着工业控制精细化、多点化要求,多点测温系统的需求空间越来越大。本文基于CAN总线设计了一个多点测温系统,硬件电路由微处理器、CAN控制器与驱动器、数字测温芯片DS18B20、LCD、复位电路等几部分组成,单片机STC89C52RC是硬件电路的核心,承担CAN控制器的初始化、数据收发控制等任务。实验证明,该系统精度高,可靠性好,结构简单,成本低,适用范围内可取代传统测温系统。
关键词:CAN总线;多点测温系统;DS18B20温度传感器
1引言
在工业控制领域,温度测量是不可或缺的工作。随着工业控制精细化、多点化要求,多点测温系统的需求空间越来越大。CAN(控制器域网,Controller Area Network)总线在组网和通信功能上的优点以及它的高价比决定了它在众多领域具有广阔的发展前景,尤其是在分布在多点测温应用方面。本文基于CAN总线设计了一个多点红外测温系统,能够实时对多点进行测温,具有测温范围广、精度高、环境适应能力强等特点。
2硬件设计
CAN总线多点测温系统主要由现场设备,主控设备和计算机组成,系统总体结构图如图1。
2.1温度测量电路设计
DS18B20传感器可以把温度直接转换成串行数字信号供微控制器进行处理。由于每个传感器含有唯一的硅串行数,故一条总线上可以有任意多个DS18B20芯片。本设计中的DS18B20是在模拟的现场节点上的,采用不同材质的通信电缆,其最大测温范围不一样。因此,使用DS18B20设计长距离测温系统时,电容与阻抗匹配问题是不可忽略的一个因素。DS18B20的寄生电源模式有两项基本功能,一是保证微处理器和DS18B20之间的正常通讯,二是为DS18B20提供电源。实际应用中当单总线上所挂DS18B20超过8个时,就需要考虑微总线驱动问题,这一点进行测温时要尤为注意。
2.2CAN总线通讯节点电路设计
本文选用选用STC的单片机做为主控器,选用CAN控制器和CAN驱动器来构建CAN通讯网络。主要由三部分构成:微控制STC89C52、独立CAN通信控制器SJA1000和CAN总线收发器PCA82C250;微处理器STC89C52负责SJA1000的初始化,通过控制SJA1000实现数据的接收与发送;SJA1000的AD0~AD7连接到STC89C52的P0口上,CS连接到STC89C52的P2.0,P2.0为0的CPU片外存贮器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读写操作。
2.3数码管显示电路设计
由于STC89C52的P1、P2、P3口内部都有上拉电阻,为了减少硬件电路的复杂度,在这里选用STC89C52的P1 口来做为数码管的段码控制口,P2 口的四位做为数码管的位选信号,从而省去了数码管复杂的驱动电路,也降低了硬件设计的难度;为了节省单片机的端口资源,同时降低成本,这儿选用四位一体的共阴数码管做为显示设备,采用动态扫描的方法显示,比着用四个独立的数码管来显示要容易的多,硬件也简单的多。
2.4液晶接口电路设计
根据设计要求,主控板需要将模拟的三个现场节点的温度值读取过来并在液晶上显示,为了能够同时显示汉字和字符,这儿选用YJD12864做为液晶显示模块,相比于只能显示字符的1602,12864的显示更加美观,更加人性化。YJD12864有并行数据传输和串行数据传输两种工作方式,本设计选用8位并行傳输方式,STC 单片机的P1 口做为12864的数据口;P2.1接12864 的4脚,用来向12864发送数据和控制指令;P2.2接12864的5脚,用来通知12864本次操作是读操作还是写操作;P2.3接12864的6脚,对12864操作的使能信号,高电平使能操作。
2.5串口通讯电路设计
设计要求中规定,现场设备将温度值传给主控设备,然后主控设备再将数据传送到上位机显示,并且上位机可以随时更改现场设备参数,从而实现远程控制;为了满足上述设计要求,这里使用485加232的方式通讯,由于232的传输距离有限,虽然CAN总线宽范围的传输距离能够弥补232这一缺点,且设计成本低,但考虑到现场的各种干扰信号比较复杂,一旦现场噪声到达极值时可能会连同上位机一并损坏;而485则不同,它是一个半双工通讯器件,其采用平衡压差的方式传输数据,使得数据线上的衰减和干扰都大大降低,从而加大了传输距离,提高了抗干扰能力,故在这里又加了一层485 的通讯,不仅使现场和上位机有效地隔离,而且进一步加大了数据传输的距离。
3软件设计
智能CAN总线节点的软件主要用来完成三项任务:一是温度传感器的采样;二是现场节点将数据传送给主控节点,由主控节点将数据处理之后送给上位机显示;三是主控节点随时准备接收上位机传来的参数,并通过CAN总线发给现场节点修改相关参数。主控节点的流程如图2。
3.1温度采样系统软件设计
该系统,主要操作包括高低温报警数据的写入、温度数据的读取、数据处理、码制转换以及数码显示等几部分;对DS18B20处理时要注意以下几点:①每次读写之前要复位;②收到信号后等待16~60μs后发出60~240μs的存在低脉冲,主CPU收到此信号后表示复位成功;③紧接着依次发送一条ROM指令、RAM 指令,这样才能对DS18B20进行正确操作。
3.2CAN通讯控制器初始化
CAN初始化主要是设置SJA1000的参数。需要初始化的CAN控制寄存器有:模式寄存器、时钟分频寄存器、接收代码寄存器、输出控制寄存器等。
SJA1000的初始化程序如下:
void CAN_init(void)
{ucharbdata REG;
uchar ACRR[4];
uchar AMRR[4];
ACRR[0]=0x01;//作为本机地址
ACRR[1]=0xff;
ACRR[2]=0xff;
ACRR[3]=0xff;//接收代码寄存器
AMRR[0]=0x00;//验收高8位标识符
AMRR[1]=0xff;
AMRR[2]=0xff;
AMRR[3]=0xff;//接收屏蔽寄存器do
{MODR=0x09;//.0=1进入复位模式,以便设置相应的寄存器
REG=MODR;}
while(!(REG&0x01));//防止未进入复位模式,重复写入
CDR=0x88;//CDR.3=1--时钟关闭;.7=1---PeliCAN
BTR0=0x83;
BTR1=0xff;//总线波特率设定,80kbps
IER=0x01;//.0=1--接收中断使能;.1=0--关闭发送中断使能
OCR=0xaa;//配置输出控制寄存器
CMR=0x04;//释放接收缓冲器
ACR=ACRR[0];
ACR1=ACRR[1];
ACR2=ACRR[2];
ACR3=ACRR[3];//初始化标示码
AMR=AMRR[0];
AMR1=AMRR[1];
AMR2=AMRR[2];
AMR3=AMRR[3];//初始化掩码
do
{MODR=0x08;
REG=MODR;}
while(REG&0x01);//确保退出复位模式
}
3.3LCD显示及串口发送接收软件设计
液晶YJD12864的初始化程序流程图如图3所示。
在这里需要说明一下,上位机给主控板发数据时,当发送的第1个数据是字符“$”,最后1个数据是字符“*”时,主控板才认为接收到的是有效数据,否则,主控板不对接收到的数据进行处理;用发送的第2个字符来区分要发送的数据是送给哪一个现场节点的,字符“A”表示现场节点1,字符“B”表示现场节点2,字符“C”表示现场节点3;第3~6个字符是要传送的高低温报警值,高温在前,低温在后。
4实验结果分析
为了验证设计系统的稳定性和准确性,对系统显示模块、测温模块、CAN總线模块及串口通信进行调试。调试完毕后,我们用设计的测温系统在实验室不同时间段不同地点采集十组数据,其中上午测试五组,下午测试五组,除了测温方式不同,其他因素全部相同,具体数据如表1所示。
由表可知,系统对照值与测量值,最大偏差小于0.2,系统测温方案的可靠性较强。
5结语
本文利用红外辐射测温的原理,计了一种基于CAN总线和DS18B20为传感器的多点红外测温系统,硬件电路由单片机STC89C52、CAN控制器、测温芯片DS18B20、LCD、LED、串行通讯口、复位电路等几部分组成。基于CAN总线的多点红外测温系统具有测温范围广、精度高、环境适应能力强等特点。该系统通过CAN适配器与计算机连接,可以方便地构成分布式测控系统。实验表明,该系统不仅具有高精度温度测控功能,而且通过CAN总线实现对多个地区温度进行集中监控,具有测温范围广、精度高、环境适应能力强等特点。
参考文献:
[1]王奥运,范冰新,潘文强等.基于CAN总线的远程温度采集系统[J].山西电子技术,2015⑶19-21.
[2]汤锴杰,栗灿,王迪等.基于DSB18B20的数字式温度采集报警系统设[J].传感器与微系统,2014,33⑶:99-102.
[3]周鹏.基于STC89C52单片机的温度检测系统设计[J].现代电子技术,2012,35(22):10-13.
[4]杨盛泉,刘海泉,刘白林.ZigBee与RS485混合网络的粮情监控系统的研究[J].西安工业大学学报,2016,36(9):749-756.
[5]杨博雄,倪玉华.无线传感网络[M].北京:人民邮电出版社,2015.