1 系统方案设计
系统进入温度零漂测试状态时,由嵌入式微计算机控制,升温信号通过光电隔离控制固体继电器组去驱动油箱里11个功率是kW级的加热管快速升温。到某个测温点时,自动输出经D/A转换后的模拟三角波周期信号加在伺服阀的绕组上,驱动伺服阀工作,使得阀的两个负载腔的压力值随控制电流大小呈差动变化。压力的变化作用在压力变送器上,经A/D不断采样比较,当差值为最小时(一个周期出现两次最小值),计算机由此计算出对应加在伺服阀上的电流零偏值。当循环到最高温度后,自动关闭加热器,并控制电磁阀打开水冷散热器降温,然后重复以上测试过程,直到降温回到起始温度点,结束测试。这中间计算机实时显示、打印当前温度点的温度和所需要的数据,控制系统框图如图1所示。
2 硬件组成
C8051F020是完全集成的混合信号系统级MCU芯片(SoC),单片内集成了构成一个单片机数据采集或控制系统所需要的几乎所有模拟和数字外设及其他功能部件。这些外设或功能部件包括:模拟多路选择器、ADC、可编程增益放大器、DAC、电压比较器、电压基准、温度传感器、定时器、内部振荡器、RAM、Flash存储器、看门狗等。其以“流水线”结构方式处理指令,运行效率高,大部分只要1个或2个系统时钟。这极大地简化了硬件设计,可以很方便地在其外围扩展相应调理电路组成整个硬件系统。在D/A转换通道电路中,来自F020内部电压基准VREF经U1缓冲放大,作为U2负端的基准电压,U3正端接F020的DA单级性输出,经一阶低通滤波器、缓冲放大处理后变为0~±5V输出信号。由于偏移电路的存在,芯片D/A端口初始化设置前或复位瞬间,将产生-5mA的瞬间电流,对伺服阀产生不良的冲击。为避免这一情况的发生,用一路I/O经光电隔离后去控制一只OM-RON高响应继电器(约1 ms),根据指令接通和断开与伺服阀的连接,如图2所示。
在A/D采集通道电路中,模拟输入信号经一阶低通滤波器,缓冲倒相后输出,如图3所示,有三路相同的电路,经内部模拟开关切换。
8位LED显示、5个软键盘输入,采用了专用的CH452数码管显示驱动和键盘扫描控制芯片,其外围电路极简单,接口速度快、性能稳定,与C8051F020控制器采用4线串行接口,主要是以其硬件来实现其大部分功能,编程相对简单,如图4所示。
温度的控制是由光电隔离电路、G3NA-220B固体继电器和水阀继电器等器件所组成的,分别用来控制油箱的加热管或水冷散热器以升温和降温。整个电路采取了多种抗干扰措施,其中在输入和输出加有WS系列三端口V/V电压输入、V/I电流输出型隔离端子。温度和压力变送器的输出信号为0~5 V。电流输出为0~±5 mA,恒流特性,在阀绕组阻抗变化范围内,精度达0.2%。
电源采用纹波较小、EMI较好的模块式一体化的线性电源。采用嵌入式微型打印机打印简单的汉字和数据。
3 数据采集处理
系统的D/A模拟输出Vo=5×(D-2 048)/2 048,D值范围为0~4 096,即为0~±5 V输出,经V/I隔离转换成0~±5 mA的控制电流。隔离器件精度优于0.3%。D/A模拟转换电流分辨率=模拟电流值/D=5/2 048≈2.441 4μA
由于阀的迟滞存在,要求加在伺服阀控制绕组上的三角波电流信号的频率要低,其周期T=20 s。将组成周期三角波形的数字值放在DA中的4 096个缓存器中。当启动DA自动转换时,由T3定时器控制,每20/4 096=0.004 882 s中断一次,将缓冲区的波形值送出。由于采用的是22.118 4 MHz晶振作为时钟源,C8051F020处理的速度很快,在程序中断的4.88 ms时间里完成采集和相关滤波处理计算是绰绰有余的。系统同时对1路油温、1路室温、2路压力信号进行采集,采样频率20 kHz,连续循环采集后,进行去除最大和最小值和数字平均值滤波法对采集信号进行滤波。
伺服阀温度零漂试验的升温和降温周期随外界气候而变化,大约1个多小时,因为在温度点测试时间相对较短,即该点实际的温度变化在约20 s的测试时间里变化不大,故对每个温度点所采取的温控相对简单,根据实测外界温度和油温,程序在到某个温度测试点前稍作控制,就能在20 s的时间里使控制精度不大于±2℃。
4 系统软件设计
本软件采用C51进行编程。C51是一种专门用于51系列单片机编程的C语言,继承了标准C语言的绝大部分的特性,但同时又在51系列的特定的硬件结构上有所扩展;具有与c语言一样的在功能上以及结构性、可读性、可维护性上的优点,并且生成的目标代码效率非常高。借助集成开发环境(IDE)Keil μVision3-C51,在PC机上先初步进行各源程序模块的创建、编辑、连接后,通过设断点等来完成模拟调试、仿真,并根据Keil μVision3界面上的各种信息找出程序错误,并进行修改。最后将已实施完成好的整个应用系统硬件按设计要求与外部有关信号和设备连接好,再通过串口适配器EC3与C8051F020配置的标准JTAG接口,将生成的HEX目标程序下载到芯片的Flash存储器中,直接在片对其进行非侵入式、不占用片内资源、全速在线的实时调试、修改,直至达到设计要求。
为了便于设计和维护,采用自顶向下逐步细化的结构化模块设计方法,将具有独立功能的子程序都设为子程序模块,相关的功能均由相应的功能子程序实现。主要程序流程如图5、图6所示。
①主程序主要完成C8051F020系统初始化、设置系统时钟,调按键处理和显示程序以及ADC、DAC的设置等,根据读取按键所选择的功能调用相应的子程序。
②标定程序用来进行系统测试精度的校准。程序根据校准需要,将输入、输出的信号通过内部LED上的显示与标准信号对比的方式来进行。
③LED显示子程序和打印子程序主要完成输入型号、编号的显示和打印,以及数据处理后的温度值零偏电流、零漂数值以及标定时的输入电压、输出电流结果显示与打印。
④温度零漂测试程序完成控制加温、降温测温,每到一个试验温度点上调用一次零偏测试程序,显示、实时打印。
⑤零偏测试程序是这个系统的核心程序。调用此程序后,定时器按设定的频率将DAC缓冲区的数字三角波形值连续输出,并启动ADC进行数据采集,数字滤波、比较、计算、标度转换显示等。
⑥零偏电流的计算公式如下:
压差Vp=VP1-VP2 零偏I[i]=(I1+I2)/2
零漂IP=(Imax-Imin) 百分比per=Ip/Ie×100%
Vp1、Vp2分别是两个负载腔的压力值;I1为电流由正到负时压差最小时的零点电流值,I1<0为负值;I2为电流由负到正时压差最小时的零点电流值,I2>0为正值;Imax、Imin是对应温度零偏数组I[i]中的最大值、最小值;Ie是额定电流值。
5 结 论
该仪器设计相对简洁。人机界面友好,操作容易,性价比较高。实际现场应用表明,整个系统运行平稳,性能可靠,提高了测试精度和生产效率。已成功应用到南京机电液压中心的伺服阀高温试验的测控中。稍作改进,可推广到整个伺服阀的性能试验的测控系统中去。