熊四昌,李 棟,高玉科,黃 堅
(浙江工業(yè)大學特種裝備制造與先進加工技術教育部重點實驗室,浙江杭州310014)
差壓式氣體泄漏檢測作為泄漏檢測的一種比較精確的方式被業(yè)界廣泛地采用[1-2]。差壓法的基本原理是檢測一段時間內被測容器內的壓力變化,再結合被測容器的容積大小來近似計算泄漏率[3-5],這就使得它的應用范圍非常有限。但是這種方法本質上是對泄漏率微分的近似,要受檢測時間和檢測壓力的雙重限制,所以在實際測試中要經(jīng)過多次試驗以選取最優(yōu)搭配。因此在大多數(shù)情況下這種檢測方法只適用于生產(chǎn)線上大批量的檢測,而不能被靈活地應用在各種被測容積未知的場合。
然而基于差壓式的容積補償法卻巧妙地避開了必須知道容積的限制,使得檢測更加靈活。嵌入式容積補償氣體泄漏檢測充分利用了高性能微處理器在數(shù)據(jù)分析處理上的優(yōu)勢,使得檢測更為方便快捷。
本研究主要探討基于嵌入式的差壓式容積補償氣體泄漏檢測裝置的研究。
差壓式容積補償氣體泄漏檢測法是在差壓法的基礎上發(fā)展起來的,其基本原理是在被測容器一側加上補償氣缸,氣缸的運動由步進電機和直線導軌的組合間接實現(xiàn)[6-7](容積補償法結構圖如圖1所示)。電路上把MCU、差壓傳感器、位移傳感器、溫度傳感器以及驅動電機等連接成閉環(huán)。在檢測時,MCU不斷地檢測當前差壓值,然后根據(jù)內置算法對步進電機進行相應控制,而步進電機隨即又把自身的正、反轉動通過直線導軌轉化為對汽缸的正向或負向的容積補償,如此反復。當系統(tǒng)處于動態(tài)平衡狀態(tài)時,可以認為被測容器內的壓力恒定。此時,泄漏率就等于補償氣體的流量,也即氣缸體積的變化率。
容積補償法泄漏率計算公式如下:
式中:d—氣缸直徑,mm;l—氣缸進給位移,mm;ΔVL—容積補償量,mL。
圖1 容積補償法結構圖
容積補償法不僅繼承了比較差壓法的高精度,而且理論上不需要知道被測容積大小,當兩個容器容積相差不大時都可以通過延長測試時間以抵消溫度的影響。因此用容積補償法檢測泄漏率時,系統(tǒng)的測量精度主要取決于差壓傳感器的分辨率和系統(tǒng)的頻響特性,在條件允許的情況下要盡可能選擇窄量程、高分辨率的差壓傳感器,同時注意改善系統(tǒng)頻響特性。
系統(tǒng)硬件框圖如圖2所示。
圖2 系統(tǒng)硬件框圖
2.1.1 4 mA~20 mA模擬信號前端處理
考慮到所用的差壓變送器和溫度變送器的輸出信號都是4 mA~20 mA電流環(huán)信號,而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電源設計和通訊隔離
系統(tǒng)整體采用單一5 V電源供電,為了降低干擾,控制部分和ADC電路部分隔離供電。其中,控制執(zhí)行部分使用5 V和3.3 V供電,ADC部分的使用經(jīng)過隔離變壓轉換后的±9 V。
AD7949芯片采用2.7 V~5.5 V電源供電,為了減少干擾,該系統(tǒng)的模擬部分、數(shù)字部分以及參考電壓部分分別單獨供電,最后用磁珠把模擬地和數(shù)字地在一點連接起來。需要注意的是,參考電壓選擇最大5.0 V(BUF -5V0),而模擬部分電源采用 5.25 V,這是因為如果參考電壓和供電電壓用同一個電源,就會影響參考電壓的穩(wěn)定;其次參考電壓選的越高則單位分辨LSB越大,這對提高精度是很有利的。
主控制器通過SPI接口控制AD7949讀/寫,采用ADuM3471進行通訊隔離。ADuM3471在A/D轉換電路一側為5 V供電,在主控制器一側為3.3 V供電。為了抵消信號線路上的電感,可在每條訊號線上接1 000 pF的電容。另外,最好在數(shù)據(jù)輸出端DO接上拉電阻以保證通訊可靠。
群創(chuàng)7寸屏是一款分辨率為800×480且性價比很高的顯示器,工作頻率為3.84 MHz,采用FPC標準40接口跟主控制器連接。由于GPIO輸出電壓3.3 V不能直接驅動電磁閥和步進電機,必須使用電平轉換電路把3.3 V轉換為5 V,再用ULN2003復合晶體管陣列提高輸出電流以驅動電磁閥、比例閥和步進電機。
通訊電路采用兩個RS232,一個作為主控制臺,一個作為和其他PC通訊接口。USB電路作為燒寫和數(shù)據(jù)下載接口,RST電路使用一片MAX811,能在需要復位時產(chǎn)生一個High-Low動作迫使系統(tǒng)復位。
系統(tǒng)軟件基于 Linux2.6.30 內核開發(fā)[8-10],部分驅動設計如下。
AD7949是一款可編程的模數(shù)轉換芯片,可以通過內置的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)是初始化函數(shù),主要完成兩個工作,首先配置SPI相關寄存器,選擇SPI的工作方式并申請動態(tài)設備號。接著初始化AD的工作方式,即往CFG寄存器中寫入控制字節(jié)。
(2)內核與驅動的接口 file_operations的實現(xiàn)[11-12]。
file_operations結構體中的函數(shù)是驅動與內核的接口,用戶層就是通過這些函數(shù)來實現(xiàn)Linux系統(tǒng)調用。結構體file_operation中的指針是一個函數(shù)跳轉表,指針所指向函數(shù)的初始化是設計驅動的重點所在,這些指針所指向的函數(shù)定義了對硬件設備的操作。應用層通過主設備號(major)和次設備號(minor)由系統(tǒng)調用找到相應的驅動程序,然后找到file_operations結構體和相應設備操作的函數(shù)指針。驅動的實現(xiàn)也就是完成這些指針指向函數(shù)對設備讀寫控制等的操作。該設計采用SPI接口對AD7949進行訪問,相應的file_operations結構體如下:
其中,AD7949_read是把轉換后結果從內核空間讀入到用戶空間;AD7949_write則是把數(shù)據(jù)從用戶空間傳遞到內核空間,主要實現(xiàn)對 CFG的寫操作。AD7949_open完成對AD7949初始化操作,AD7949_release注銷釋放節(jié)點。
在Linux內核中,因為一條總線上可能要同時掛載多個設備,而對每個設備編寫一個特定的驅動的方法顯然不合理[13]。縱觀Linux內核可知,普遍體現(xiàn)著一種分層的思想,I2C驅動也不例外,即在主控驅動跟設備驅動中間加上一層通用的接口,這樣特定的設備驅動只需訪問中間層通用的接口就可以了。這種分層的寫法在嵌入式S3C2440中移植的Linux內核中的具體實現(xiàn),就是在i2c-s3c2410.c和設備驅動i2c-dev.c中間隔了一層i2c-core.c驅動程序調用接口。Linux內核提供的i2c-dev.c有兩種讀寫時序,如表1、表2所示。
表1 單開始信號時序
表2 多開始信號時序
其中,read(),write()函數(shù)只適合于單開始時序,而不適合于多開始時序。另外read(),write()只適用于i2c算法的情況,而不適合于smbus算法的情況,但是ioctl()兩者都可以適用,綜上分析對設備的讀/寫即可用ioctl()來實現(xiàn)。
本研究采用一片4 K外擴EEPROM芯片AT24C04來存儲數(shù)據(jù)。DA5602為數(shù)模轉換芯片驅動比例閥用的,這兩款芯片都是采用I2C協(xié)議讀寫,因此它們的驅動程序的核心部分是類似的。對AT24C04和DA5602的驅動可以直接在應用層實現(xiàn),關鍵是用ioctl()對以下兩個數(shù)據(jù)結構進行操作:
另外需要注意的是,由于幾種設備共用I2C總線,為了實現(xiàn)各部分的可靠工作,必須給SCLK和SDO加上拉電阻。
本研究選擇一套在PC機上使用VS2010開發(fā)的控制系統(tǒng)作為對照組實驗,該系統(tǒng)使用研華USB4716數(shù)據(jù)采集卡采集數(shù)據(jù),并且經(jīng)過標定。在實驗中,兩套系統(tǒng)使用同一套氣路裝置,包括兩個固定容積為800 mL的被測容器和標準容器和電磁閥等。測試中嵌入式系統(tǒng)設定閾值為±5 Pa,環(huán)境溫度為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 容積補償泄漏檢測結果參數(shù)
(1)由以上分析可知,在0.3 MPa和0.4 MPa的實驗條件下,差壓在±4 Pa范圍內波動,氣缸位移曲線與預期結論一致呈直線趨勢,實驗結果表明系統(tǒng)運行穩(wěn)定。
(2)在相同的檢測壓力下,基于嵌入式的容積補償測試與PC機測試的泄漏率存在微小差異,但是誤差都在3.5%以內,因此該系統(tǒng)的檢測結果可靠性比較高。
(3)另外,本研究中的差壓分辨率還是不夠,如果采用更高分辨率的A/D轉換器,并在濾波電路和系統(tǒng)響應上做出改進,測量精度應該會有所提高。
[1]紀春華,彭光正,葛 楠.流量式泄漏檢測儀的設計與實驗研究[J].液壓與氣動,2009(9):73-76.
[2]彭光正.氣密性檢測技術現(xiàn)狀及發(fā)展趨勢[J].機床與液壓,2008,36(11):172-174.
[3]周 凱.汽車油箱檢漏系統(tǒng)的研制[D].天津:天津工業(yè)大學機械工程學院,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]洪孝鵬.基于壓力補償?shù)暮銐菏綑z漏儀及檢測效率的研究[D].杭州:浙江工業(yè)大學機械工程學院,2009.
[7]熊四昌,黃 林,金振峰.基于容積補償?shù)牟顗菏礁呔葰怏w檢漏裝置的研究[J].機床與液壓,2008,36(11):109-111.
[8]劉 迪,王冬梅.基于S3C44B0X芯片的單回路PID控制器參數(shù)整定[J].電子設計工程,2011,19(12):85-87.
[9]陳 曦,呂湘曄.基于嵌入式Linux新型模塊化工業(yè)控制器設計[J].儀表技術與傳感器,2010(11):27-29.
[10]汪維鈞.一種新型的氣密測試裝置[J].機械設計與制造,2008(5):196-198.
[11]管秋梅,胡仁杰.基于嵌入式Linux的網(wǎng)絡設備驅動設計與實現(xiàn)[J].電子工程師,2007,3(3):77-80.
[12]胡哲光.基于S3C2440與0V9650的光嵌入式監(jiān)控系統(tǒng)設計[J].輕工機械,2012,30(2):50-53.
[13]孫天澤,袁文菊.嵌入式設計及Linux驅動開發(fā)指南—基于ARM9處理器[M].3版.北京:電子工業(yè)出版社,2009.