APP下载

基于嵌入式的差压式容积补偿气体泄漏检测装置的研究*

2014-09-15熊四昌高玉科

机电工程 2014年1期
关键词:补偿法差压内核

熊四昌,李 栋,高玉科,黄 坚

(浙江工业大学特种装备制造与先进加工技术教育部重点实验室,浙江杭州310014)

0 引 言

差压式气体泄漏检测作为泄漏检测的一种比较精确的方式被业界广泛地采用[1-2]。差压法的基本原理是检测一段时间内被测容器内的压力变化,再结合被测容器的容积大小来近似计算泄漏率[3-5],这就使得它的应用范围非常有限。但是这种方法本质上是对泄漏率微分的近似,要受检测时间和检测压力的双重限制,所以在实际测试中要经过多次试验以选取最优搭配。因此在大多数情况下这种检测方法只适用于生产线上大批量的检测,而不能被灵活地应用在各种被测容积未知的场合。

然而基于差压式的容积补偿法却巧妙地避开了必须知道容积的限制,使得检测更加灵活。嵌入式容积补偿气体泄漏检测充分利用了高性能微处理器在数据分析处理上的优势,使得检测更为方便快捷。

本研究主要探讨基于嵌入式的差压式容积补偿气体泄漏检测装置的研究。

1 差压式容积补偿法的基本原理

差压式容积补偿气体泄漏检测法是在差压法的基础上发展起来的,其基本原理是在被测容器一侧加上补偿气缸,气缸的运动由步进电机和直线导轨的组合间接实现[6-7](容积补偿法结构图如图1所示)。电路上把MCU、差压传感器、位移传感器、温度传感器以及驱动电机等连接成闭环。在检测时,MCU不断地检测当前差压值,然后根据内置算法对步进电机进行相应控制,而步进电机随即又把自身的正、反转动通过直线导轨转化为对汽缸的正向或负向的容积补偿,如此反复。当系统处于动态平衡状态时,可以认为被测容器内的压力恒定。此时,泄漏率就等于补偿气体的流量,也即气缸体积的变化率。

容积补偿法泄漏率计算公式如下:

式中:d—气缸直径,mm;l—气缸进给位移,mm;ΔVL—容积补偿量,mL。

图1 容积补偿法结构图

容积补偿法不仅继承了比较差压法的高精度,而且理论上不需要知道被测容积大小,当两个容器容积相差不大时都可以通过延长测试时间以抵消温度的影响。因此用容积补偿法检测泄漏率时,系统的测量精度主要取决于差压传感器的分辨率和系统的频响特性,在条件允许的情况下要尽可能选择窄量程、高分辨率的差压传感器,同时注意改善系统频响特性。

2 系统硬件整体设计

系统硬件框图如图2所示。

图2 系统硬件框图

2.1 ADC转换电路设计

2.1.1 4 mA~20 mA模拟信号前端处理

考虑到所用的差压变送器和温度变送器的输出信号都是4 mA~20 mA电流环信号,而AD7949是一款接收4/8差分或单极性电压信号的14位A/D转换器,这就需要首先把电流信号转化为单极性电压信号。一般情况可以考虑直接串250 Ω电阻得到1 V~5 V电压,但这样一来就不能充分利用A/D转换器的转换量程,相当于损失了20%的精度。况且通常PulSAR型A/D转换芯片即使工作正常也不能100%达到标称的分辨率,例如AD7949标称14位,但是有效分辨率(No missing codes)只有13位。所以本研究综合以上因素,把4 mA~20 mA转换为0~5 V(如图3所示)。

图3 差压传感器输出4 mA~20 mA转0~5 V电路

2.1.2 ADC电源设计和通讯隔离

系统整体采用单一5 V电源供电,为了降低干扰,控制部分和ADC电路部分隔离供电。其中,控制执行部分使用5 V和3.3 V供电,ADC部分的使用经过隔离变压转换后的±9 V。

AD7949芯片采用2.7 V~5.5 V电源供电,为了减少干扰,该系统的模拟部分、数字部分以及参考电压部分分别单独供电,最后用磁珠把模拟地和数字地在一点连接起来。需要注意的是,参考电压选择最大5.0 V(BUF -5V0),而模拟部分电源采用 5.25 V,这是因为如果参考电压和供电电压用同一个电源,就会影响参考电压的稳定;其次参考电压选的越高则单位分辨LSB越大,这对提高精度是很有利的。

主控制器通过SPI接口控制AD7949读/写,采用ADuM3471进行通讯隔离。ADuM3471在A/D转换电路一侧为5 V供电,在主控制器一侧为3.3 V供电。为了抵消信号线路上的电感,可在每条讯号线上接1 000 pF的电容。另外,最好在数据输出端DO接上拉电阻以保证通讯可靠。

2.2 LCD和控制驱动电路

群创7寸屏是一款分辨率为800×480且性价比很高的显示器,工作频率为3.84 MHz,采用FPC标准40接口跟主控制器连接。由于GPIO输出电压3.3 V不能直接驱动电磁阀和步进电机,必须使用电平转换电路把3.3 V转换为5 V,再用ULN2003复合晶体管阵列提高输出电流以驱动电磁阀、比例阀和步进电机。

通讯电路采用两个RS232,一个作为主控制台,一个作为和其他PC通讯接口。USB电路作为烧写和数据下载接口,RST电路使用一片MAX811,能在需要复位时产生一个High-Low动作迫使系统复位。

3 系统软件设计

系统软件基于 Linux2.6.30 内核开发[8-10],部分驱动设计如下。

3.1 SPI总线的 AD7949驱动

AD7949是一款可编程的模数转换芯片,可以通过内置的14 bit配置寄存器CFG对转换模式进行配置。这里配置 CFG[13:0]=0x3e4e,表示选择的模式为:

(1)输入单极性以 GND为参考的信号,按序采样;

(2)采用内部附加电阻形成1/4带通滤波;

(3)采用外部参考电压,不使用内部缓冲,不开启温度检测;

(4)不读回配置寄存器CFG的内容。

因为差压信号和位移信号都是低频信号,本研究采用内部1/4带通滤波,但是这样一来采样速度也下降了3/4,所以实际上最大采样速度为62.5 kSPS。另外要注意的是,在刚上电时CFG的值是不确定的,需要通过两次空转换来更新CFG寄存器的值。

AD7949的驱动属于字符型驱动,程序主体有:

(1)AD7949驱动模块的加载及卸载:

进行初始化*/

其中,static int_initAD7949_init(void)是初始化函数,主要完成两个工作,首先配置SPI相关寄存器,选择SPI的工作方式并申请动态设备号。接着初始化AD的工作方式,即往CFG寄存器中写入控制字节。

(2)内核与驱动的接口 file_operations的实现[11-12]。

file_operations结构体中的函数是驱动与内核的接口,用户层就是通过这些函数来实现Linux系统调用。结构体file_operation中的指针是一个函数跳转表,指针所指向函数的初始化是设计驱动的重点所在,这些指针所指向的函数定义了对硬件设备的操作。应用层通过主设备号(major)和次设备号(minor)由系统调用找到相应的驱动程序,然后找到file_operations结构体和相应设备操作的函数指针。驱动的实现也就是完成这些指针指向函数对设备读写控制等的操作。该设计采用SPI接口对AD7949进行访问,相应的file_operations结构体如下:

其中,AD7949_read是把转换后结果从内核空间读入到用户空间;AD7949_write则是把数据从用户空间传递到内核空间,主要实现对 CFG的写操作。AD7949_open完成对AD7949初始化操作,AD7949_release注销释放节点。

3.2 I2C总线的AT24C04和DA5602驱动

在Linux内核中,因为一条总线上可能要同时挂载多个设备,而对每个设备编写一个特定的驱动的方法显然不合理[13]。纵观Linux内核可知,普遍体现着一种分层的思想,I2C驱动也不例外,即在主控驱动跟设备驱动中间加上一层通用的接口,这样特定的设备驱动只需访问中间层通用的接口就可以了。这种分层的写法在嵌入式S3C2440中移植的Linux内核中的具体实现,就是在i2c-s3c2410.c和设备驱动i2c-dev.c中间隔了一层i2c-core.c驱动程序调用接口。Linux内核提供的i2c-dev.c有两种读写时序,如表1、表2所示。

表1 单开始信号时序

表2 多开始信号时序

其中,read(),write()函数只适合于单开始时序,而不适合于多开始时序。另外read(),write()只适用于i2c算法的情况,而不适合于smbus算法的情况,但是ioctl()两者都可以适用,综上分析对设备的读/写即可用ioctl()来实现。

本研究采用一片4 K外扩EEPROM芯片AT24C04来存储数据。DA5602为数模转换芯片驱动比例阀用的,这两款芯片都是采用I2C协议读写,因此它们的驱动程序的核心部分是类似的。对AT24C04和DA5602的驱动可以直接在应用层实现,关键是用ioctl()对以下两个数据结构进行操作:

另外需要注意的是,由于几种设备共用I2C总线,为了实现各部分的可靠工作,必须给SCLK和SDO加上拉电阻。

4 实验结果分析对比

本研究选择一套在PC机上使用VS2010开发的控制系统作为对照组实验,该系统使用研华USB4716数据采集卡采集数据,并且经过标定。在实验中,两套系统使用同一套气路装置,包括两个固定容积为800 mL的被测容器和标准容器和电磁阀等。测试中嵌入式系统设定阈值为±5 Pa,环境温度为26℃,分别在0.3 MPa和0.4 MPa气压下进行测试,相应的差压及位移变化曲线分别如图4、图5所示。

图4 0.3 MPa下气缸差压及位移变化曲线

图5 0.4 MPa下差压、位移变化曲线

从图4(b)、5(b)中可以看出,在检测时间为180 s,检测压力为0.3 MPa和0.4 MPa的条件下气缸活塞杆位移分别为2.65 mm和3.14 mm。被测容器的泄漏率可由公式(1)计算出来,计算结果如表3所示。

表3 容积补偿泄漏检测结果参数

5 结束语

(1)由以上分析可知,在0.3 MPa和0.4 MPa的实验条件下,差压在±4 Pa范围内波动,气缸位移曲线与预期结论一致呈直线趋势,实验结果表明系统运行稳定。

(2)在相同的检测压力下,基于嵌入式的容积补偿测试与PC机测试的泄漏率存在微小差异,但是误差都在3.5%以内,因此该系统的检测结果可靠性比较高。

(3)另外,本研究中的差压分辨率还是不够,如果采用更高分辨率的A/D转换器,并在滤波电路和系统响应上做出改进,测量精度应该会有所提高。

[1]纪春华,彭光正,葛 楠.流量式泄漏检测仪的设计与实验研究[J].液压与气动,2009(9):73-76.

[2]彭光正.气密性检测技术现状及发展趋势[J].机床与液压,2008,36(11):172-174.

[3]周 凯.汽车油箱检漏系统的研制[D].天津:天津工业大学机械工程学院,2007.

[4]黎启柏,卢广权.气体泄漏检测方法及其工程应用[J].机床与液压,2005,33(11):130-132.

[5]MARTIN L.Method for Leak Testing and Leak Testing Apparatus[P].US:7260981,2007-08-28.

[6]洪孝鹏.基于压力补偿的恒压式检漏仪及检测效率的研究[D].杭州:浙江工业大学机械工程学院,2009.

[7]熊四昌,黄 林,金振峰.基于容积补偿的差压式高精度气体检漏装置的研究[J].机床与液压,2008,36(11):109-111.

[8]刘 迪,王冬梅.基于S3C44B0X芯片的单回路PID控制器参数整定[J].电子设计工程,2011,19(12):85-87.

[9]陈 曦,吕湘晔.基于嵌入式Linux新型模块化工业控制器设计[J].仪表技术与传感器,2010(11):27-29.

[10]汪维钧.一种新型的气密测试装置[J].机械设计与制造,2008(5):196-198.

[11]管秋梅,胡仁杰.基于嵌入式Linux的网络设备驱动设计与实现[J].电子工程师,2007,3(3):77-80.

[12]胡哲光.基于S3C2440与0V9650的光嵌入式监控系统设计[J].轻工机械,2012,30(2):50-53.

[13]孙天泽,袁文菊.嵌入式设计及Linux驱动开发指南—基于ARM9处理器[M].3版.北京:电子工业出版社,2009.

猜你喜欢

补偿法差压内核
强化『高新』内核 打造农业『硅谷』
基于双差压的脉动流测量方法仿真研究
浅谈差压变送器的校验在应用中的几个问题
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
三种测量电阻方法的比较
基于MOCCII高频补偿法的二阶电流模式滤波器
微生物内核 生态型农资
补偿双安法测电阻
新视角审视补偿法测电阻电路