郭萬強(qiáng) 康玉婷
(上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
靜態(tài)容積法流量標(biāo)準(zhǔn)裝置中玻璃管液位計(jì)的讀數(shù)一般由人工讀取,誤差大且準(zhǔn)確率低。隨著智能技術(shù)的發(fā)展,基于電荷耦合器件(Charge Coupled Devices,CCD)或接觸式圖像傳感器(Contact Image Sensor,CIS)的玻璃管液位自動(dòng)測(cè)量系統(tǒng)應(yīng)運(yùn)而生。高分辨率的CCD不但價(jià)格昂貴,而且當(dāng)其測(cè)量對(duì)象變化較大時(shí),還需采用光學(xué)聚焦系統(tǒng)或機(jī)械隨動(dòng)測(cè)量機(jī)構(gòu)輔助。根據(jù)CIS感光元件線陣排列的特點(diǎn),完全可以實(shí)現(xiàn)液位的高精度測(cè)量,文獻(xiàn)[1,2]介紹的液位測(cè)量裝置的測(cè)量精度約0.5mm,且待測(cè)液體均為有色。
筆者采用600dpi CIS和S3C2440處理器,將基于CIS的玻璃管液位測(cè)量系統(tǒng)的精度提至±0.10mm,同時(shí)實(shí)現(xiàn)了有色和無色液體液位的自動(dòng)測(cè)量。
簡(jiǎn)化的靜態(tài)容積法流量標(biāo)準(zhǔn)裝置中容積測(cè)量的示意圖如圖1所示,V1是一個(gè)標(biāo)準(zhǔn)容器,其液位與容積一一對(duì)應(yīng)。如果知道U型連通器右側(cè)玻璃管中的液位,通過查表就能得到對(duì)應(yīng)容器中液體的體積。假設(shè)V1的圓柱形半徑為15cm,如果液位誤差1.0mm,則相應(yīng)的體積誤差為70.650mL;如果液位誤差是0.1mm,則相對(duì)應(yīng)的體積誤差為7.065mL。所以提高液位的測(cè)量精度對(duì)于靜態(tài)容積的測(cè)量有著重要的意義。
圖1 簡(jiǎn)化的靜態(tài)容積法流量標(biāo)準(zhǔn)裝置
將600dpi高分辨率的CIS置于玻璃管的一側(cè),另一側(cè)用平行光源照射。由于有液體和無液體的部分對(duì)光的折射率不同,所以CIS上相應(yīng)感光元件感應(yīng)的光強(qiáng)不同,CIS輸出的視頻信號(hào)中,有液體信號(hào)和無液體信號(hào)的電壓值就不同。通過相應(yīng)的A/D轉(zhuǎn)換電路,將電壓進(jìn)行閾值分割,使得有液體部分對(duì)應(yīng)的電壓輸出經(jīng)A/D轉(zhuǎn)換變?yōu)榱?,這樣在一個(gè)周期內(nèi),統(tǒng)計(jì)零的個(gè)數(shù),就知道液位的實(shí)際高度。
基于600dpi CIS和S3C2440處理器的玻璃管液位測(cè)量系統(tǒng)的硬件組成如圖2所示。外置平行光源與SV6134A4C-00型CIS分別位于玻璃管的兩側(cè)。CIS總長216mm,每毫米24個(gè)像素點(diǎn),整個(gè)CIS共有5 184個(gè)像素點(diǎn),所以其最小分辨率達(dá)0.042mm。
圖2 玻璃管液位測(cè)量系統(tǒng)硬件框圖
CIS的時(shí)序圖如圖3所示,SV6134A4C-00型CIS傳感器的3個(gè)引腳分別是時(shí)鐘引腳CP(4MHz)、使能引腳SI(周期1.5ms)和視頻信號(hào)輸出引腳VOUT,在一幀圖像信息中有效的像素點(diǎn)輸出5 184個(gè),其余為無效信息。需要特別注意的是,CP開始后的82個(gè)CLKS輸出的信息是無效的。
圖3 600dpi CIS時(shí)序
測(cè)量系統(tǒng)的處理器采用S3C2440,該處理器通過PWM實(shí)現(xiàn)CIS的高頻時(shí)鐘驅(qū)動(dòng)。VOUT輸出的視頻信號(hào)通過A/D轉(zhuǎn)換后的數(shù)據(jù)存入緩存器AL422B中,存儲(chǔ)一定的液位圖像信息后,處理器執(zhí)行液位提取算法,將液位的當(dāng)前高度實(shí)時(shí)顯示在數(shù)碼管。
AL422B是一款存儲(chǔ)容量為393 216Byte×8bit的FIFO存儲(chǔ)芯片。A/D轉(zhuǎn)換器采用ADS930,其有效電壓轉(zhuǎn)換范圍1~2V,當(dāng)輸入在1~2V時(shí)輸出非零,當(dāng)輸入為1V時(shí)輸出為0,并且通過試驗(yàn)發(fā)現(xiàn)當(dāng)輸入為1V以下時(shí)輸出也為零。在測(cè)量時(shí),通過調(diào)理電路將VOUT輸出信號(hào)中的高低電平,分別調(diào)整至1V的兩側(cè),則低于1V的有液體信號(hào)輸出都為零,通過脈沖計(jì)數(shù)法就能計(jì)算出玻璃管液位的高度了。
在液位測(cè)量過程中,環(huán)境誤差可能會(huì)引入隨機(jī)干擾,所以需要進(jìn)行數(shù)字濾波處理。首先,一次性讀取多幅圖像信息,然后分別對(duì)每一幅圖像提取液位信息,最后采用去極值平均濾波法得到液位的實(shí)際高度。FIFO讀出的多幅圖像信息連續(xù)存儲(chǔ)在一個(gè)內(nèi)存空間開辟的數(shù)組區(qū)域內(nèi),所以快速、準(zhǔn)確地查到每幅圖像并計(jì)算出每幅圖像中液位的高度信息是算法的關(guān)鍵。本軟件采用快速查找與統(tǒng)計(jì)方法實(shí)現(xiàn),其相應(yīng)算法流程如圖4所示。
圖4 快速查找與統(tǒng)計(jì)算法流程
將FIFO讀出的一組數(shù)據(jù)存入圖像數(shù)組M[]中,依次從數(shù)據(jù)頭開始遍歷,找到第一個(gè)突變的點(diǎn),即圖像的分界點(diǎn)i1。
在突變點(diǎn)前加入一個(gè)長度為L1的窗,然后對(duì)窗內(nèi)數(shù)據(jù)進(jìn)行處理,如果窗起始單元與窗結(jié)束單元之間的變化值window[L1-1]-window[0]<5且|window[i+1]-window[i]|<5(0
如果在上述突變點(diǎn)前加的L1窗體內(nèi)有不滿足上述變化值的點(diǎn),則動(dòng)態(tài)地增加L1的長度,如果動(dòng)態(tài)加入長度內(nèi)的點(diǎn)滿足變化范圍,則同樣滿足要求。同理,當(dāng)突變點(diǎn)后的L1窗有不滿足上述變化的點(diǎn),同樣動(dòng)態(tài)增加L1的長度,再進(jìn)行判斷,如果動(dòng)態(tài)加入長度內(nèi)的點(diǎn)滿足變化范圍,則同樣滿足要求;如果動(dòng)態(tài)增加的窗內(nèi)數(shù)據(jù)依然不滿足變化范圍,則舍棄找到的突變點(diǎn),繼續(xù)往后遍歷。
將確定為真實(shí)圖像分界點(diǎn)的值計(jì)為M,然后從M+L1位置依次開始統(tǒng)計(jì)零點(diǎn)數(shù)。如果遇到非零點(diǎn),首先加一個(gè)小窗L2,從此非零點(diǎn)開始存入所加的小窗,L2的初始長度根據(jù)實(shí)際情況取1~2,如果L2的窗口內(nèi)有零值,繼續(xù)往后統(tǒng)計(jì),如果L2的值非零點(diǎn),為保證準(zhǔn)確度,動(dòng)態(tài)增加一定的長度,確定L2內(nèi)沒有零值,即一幅圖像中低電平的值統(tǒng)計(jì)完畢,此時(shí)的下標(biāo)值即為N。
將點(diǎn)數(shù)N-M-1存入開辟的圖像幀存儲(chǔ)數(shù)組P[]中,如果P[]存夠指定的圖像幀數(shù)則結(jié)束本次算法;否則繼續(xù)遍歷,搜索突變點(diǎn),統(tǒng)計(jì)零點(diǎn),直至完成預(yù)定數(shù)量的圖像幀。圖像幀存儲(chǔ)數(shù)組P[]經(jīng)去極值平均濾波法就可以得到穩(wěn)定的像素點(diǎn)輸出,將輸出代入曲線擬合好的關(guān)系式,就能得到實(shí)際的液位高度。
在玻璃管液位計(jì)裝置中,由于凹形液面的折射率在空氣和液體之間,所以凹形液位產(chǎn)生的過渡區(qū)域的數(shù)值不能統(tǒng)計(jì)為液位的像素信息。為了補(bǔ)償過渡區(qū)域的誤差,通過曲線擬合方式建立傳感器檢測(cè)液位的像素點(diǎn)個(gè)數(shù)和實(shí)際高度間的數(shù)學(xué)模型。
經(jīng)過測(cè)量,用于標(biāo)定的試驗(yàn)量筒容積和刻度均勻。60mL液體對(duì)應(yīng)高度142mm,平均每毫升液體高度2.366mm。采用高精度的A級(jí)滴定管(精度0.02mL)向量筒中加入液體,從15mL一直加到60mL,每5mL記錄一次液體的高度和數(shù)碼管的液位像素信息顯示,為了保證滴定過程成的準(zhǔn)確性,在每滴完一定的體積后采用人工方式讀取液體體積進(jìn)行驗(yàn)證。表1為3次重復(fù)性試驗(yàn)的液體體積和數(shù)碼管的讀數(shù),將3次重復(fù)性試驗(yàn)的數(shù)碼管讀數(shù)取平均,以消除隨機(jī)誤差。
表1 3次試驗(yàn)的液體體積和數(shù)碼管讀數(shù)
注:D值是該像素點(diǎn)的兩倍直接在數(shù)碼管上的顯示值。
將D和h擬合得到直線y1=-0.0207D+224.2973,D和he擬合得到直線y2=-0.0208D+215.9749,如果y1和y2的斜率相同,直接用兩條直線之間的距離作為修正值。此處斜率不是完全一樣,經(jīng)過試驗(yàn)取8.60對(duì)所有的he值進(jìn)行修正,即he的所有值加上8.60作為最后的實(shí)際高度輸出。如圖5所示,將D和修正后的y值進(jìn)行曲線擬合得y=-0.02084D+224.5749。將每次數(shù)碼管的值用Matlab的polyval()函數(shù)重新代入擬合好的曲線,得到液位的最大誤差為0.9mm,最小誤差為-0.01mm。
圖5 數(shù)碼管顯示值與液位輸出的擬合曲線
為了更好地檢驗(yàn)擬合直線的準(zhǔn)確度,將擬合好的曲線編程輸入S3C2440,試驗(yàn)過程如上步驟。每次增加5mL,從18mL開始滴加,數(shù)碼管直接輸出液位的實(shí)際高度,試驗(yàn)結(jié)果見表2,可見最大誤差為-0.09mm,最小誤差為+0.03mm,都在±0.10mm的范圍內(nèi)。
由以上試驗(yàn)結(jié)果可以看出:600dpi CIS輸出的視頻信號(hào)噪聲小,能夠清晰地分辨出液位的圖像信息。輸出信號(hào)經(jīng)調(diào)理電路調(diào)理后,可采用ADS930輕松實(shí)現(xiàn)閾值分割,從而通過脈沖計(jì)數(shù)法實(shí)現(xiàn)液位信息的提取。
于低分辨率的CIS,提升了液位測(cè)量的精度。
表2 液體體積和數(shù)碼管讀數(shù)
本試驗(yàn)使用的600dpi CIS的線性度較好,像素與高度間的關(guān)系可以直接擬合為一次函數(shù)。
利用高分辨率的CIS,并結(jié)合相應(yīng)的硬件轉(zhuǎn)換電路也可以實(shí)現(xiàn)無色液體的液位測(cè)量。
采用600dpi CIS和S3C2440處理器實(shí)現(xiàn)了玻璃管液位計(jì)的高精度自動(dòng)測(cè)量。與其他采用CIS實(shí)現(xiàn)液位檢測(cè)的裝置相比,測(cè)量精度由0.50mm提高到了±0.10mm。此外,此液位測(cè)量系統(tǒng)計(jì)還可以測(cè)量無色液體的液位。
[1] 孫劉杰,王洪來.基于CIS的水流量標(biāo)準(zhǔn)液位讀取裝置研究與設(shè)計(jì)[J].微計(jì)算機(jī)信息,2012,(10):191~192.
[2] 于佩.基于FPGA的玻璃計(jì)液位檢測(cè)裝置[D].上海:上海理工大學(xué),2013.