郭萬強 康玉婷
(上海理工大學光電信息與計算機工程學院,上海 200093)
靜態容積法流量標準裝置中玻璃管液位計的讀數一般由人工讀取,誤差大且準確率低。隨著智能技術的發展,基于電荷耦合器件(Charge Coupled Devices,CCD)或接觸式圖像傳感器(Contact Image Sensor,CIS)的玻璃管液位自動測量系統應運而生。高分辨率的CCD不但價格昂貴,而且當其測量對象變化較大時,還需采用光學聚焦系統或機械隨動測量機構輔助。根據CIS感光元件線陣排列的特點,完全可以實現液位的高精度測量,文獻[1,2]介紹的液位測量裝置的測量精度約0.5mm,且待測液體均為有色。
筆者采用600dpi CIS和S3C2440處理器,將基于CIS的玻璃管液位測量系統的精度提至±0.10mm,同時實現了有色和無色液體液位的自動測量。
簡化的靜態容積法流量標準裝置中容積測量的示意圖如圖1所示,V1是一個標準容器,其液位與容積一一對應。如果知道U型連通器右側玻璃管中的液位,通過查表就能得到對應容器中液體的體積。假設V1的圓柱形半徑為15cm,如果液位誤差1.0mm,則相應的體積誤差為70.650mL;如果液位誤差是0.1mm,則相對應的體積誤差為7.065mL。所以提高液位的測量精度對于靜態容積的測量有著重要的意義。

圖1 簡化的靜態容積法流量標準裝置
將600dpi高分辨率的CIS置于玻璃管的一側,另一側用平行光源照射。由于有液體和無液體的部分對光的折射率不同,所以CIS上相應感光元件感應的光強不同,CIS輸出的視頻信號中,有液體信號和無液體信號的電壓值就不同。通過相應的A/D轉換電路,將電壓進行閾值分割,使得有液體部分對應的電壓輸出經A/D轉換變為零,這樣在一個周期內,統計零的個數,就知道液位的實際高度。
基于600dpi CIS和S3C2440處理器的玻璃管液位測量系統的硬件組成如圖2所示。外置平行光源與SV6134A4C-00型CIS分別位于玻璃管的兩側。CIS總長216mm,每毫米24個像素點,整個CIS共有5 184個像素點,所以其最小分辨率達0.042mm。

圖2 玻璃管液位測量系統硬件框圖
CIS的時序圖如圖3所示,SV6134A4C-00型CIS傳感器的3個引腳分別是時鐘引腳CP(4MHz)、使能引腳SI(周期1.5ms)和視頻信號輸出引腳VOUT,在一幀圖像信息中有效的像素點輸出5 184個,其余為無效信息。需要特別注意的是,CP開始后的82個CLKS輸出的信息是無效的。

圖3 600dpi CIS時序
測量系統的處理器采用S3C2440,該處理器通過PWM實現CIS的高頻時鐘驅動。VOUT輸出的視頻信號通過A/D轉換后的數據存入緩存器AL422B中,存儲一定的液位圖像信息后,處理器執行液位提取算法,將液位的當前高度實時顯示在數碼管。
AL422B是一款存儲容量為393 216Byte×8bit的FIFO存儲芯片。A/D轉換器采用ADS930,其有效電壓轉換范圍1~2V,當輸入在1~2V時輸出非零,當輸入為1V時輸出為0,并且通過試驗發現當輸入為1V以下時輸出也為零。在測量時,通過調理電路將VOUT輸出信號中的高低電平,分別調整至1V的兩側,則低于1V的有液體信號輸出都為零,通過脈沖計數法就能計算出玻璃管液位的高度了。
在液位測量過程中,環境誤差可能會引入隨機干擾,所以需要進行數字濾波處理。首先,一次性讀取多幅圖像信息,然后分別對每一幅圖像提取液位信息,最后采用去極值平均濾波法得到液位的實際高度。FIFO讀出的多幅圖像信息連續存儲在一個內存空間開辟的數組區域內,所以快速、準確地查到每幅圖像并計算出每幅圖像中液位的高度信息是算法的關鍵。本軟件采用快速查找與統計方法實現,其相應算法流程如圖4所示。

圖4 快速查找與統計算法流程
將FIFO讀出的一組數據存入圖像數組M[]中,依次從數據頭開始遍歷,找到第一個突變的點,即圖像的分界點i1。
在突變點前加入一個長度為L1的窗,然后對窗內數據進行處理,如果窗起始單元與窗結束單元之間的變化值window[L1-1]-window[0]<5且|window[i+1]-window[i]|<5(0
如果在上述突變點前加的L1窗體內有不滿足上述變化值的點,則動態地增加L1的長度,如果動態加入長度內的點滿足變化范圍,則同樣滿足要求。同理,當突變點后的L1窗有不滿足上述變化的點,同樣動態增加L1的長度,再進行判斷,如果動態加入長度內的點滿足變化范圍,則同樣滿足要求;如果動態增加的窗內數據依然不滿足變化范圍,則舍棄找到的突變點,繼續往后遍歷。
將確定為真實圖像分界點的值計為M,然后從M+L1位置依次開始統計零點數。如果遇到非零點,首先加一個小窗L2,從此非零點開始存入所加的小窗,L2的初始長度根據實際情況取1~2,如果L2的窗口內有零值,繼續往后統計,如果L2的值非零點,為保證準確度,動態增加一定的長度,確定L2內沒有零值,即一幅圖像中低電平的值統計完畢,此時的下標值即為N。
將點數N-M-1存入開辟的圖像幀存儲數組P[]中,如果P[]存夠指定的圖像幀數則結束本次算法;否則繼續遍歷,搜索突變點,統計零點,直至完成預定數量的圖像幀。圖像幀存儲數組P[]經去極值平均濾波法就可以得到穩定的像素點輸出,將輸出代入曲線擬合好的關系式,就能得到實際的液位高度。
在玻璃管液位計裝置中,由于凹形液面的折射率在空氣和液體之間,所以凹形液位產生的過渡區域的數值不能統計為液位的像素信息。為了補償過渡區域的誤差,通過曲線擬合方式建立傳感器檢測液位的像素點個數和實際高度間的數學模型。
經過測量,用于標定的試驗量筒容積和刻度均勻。60mL液體對應高度142mm,平均每毫升液體高度2.366mm。采用高精度的A級滴定管(精度0.02mL)向量筒中加入液體,從15mL一直加到60mL,每5mL記錄一次液體的高度和數碼管的液位像素信息顯示,為了保證滴定過程成的準確性,在每滴完一定的體積后采用人工方式讀取液體體積進行驗證。表1為3次重復性試驗的液體體積和數碼管的讀數,將3次重復性試驗的數碼管讀數取平均,以消除隨機誤差。

表1 3次試驗的液體體積和數碼管讀數
注:D值是該像素點的兩倍直接在數碼管上的顯示值。
將D和h擬合得到直線y1=-0.0207D+224.2973,D和he擬合得到直線y2=-0.0208D+215.9749,如果y1和y2的斜率相同,直接用兩條直線之間的距離作為修正值。此處斜率不是完全一樣,經過試驗取8.60對所有的he值進行修正,即he的所有值加上8.60作為最后的實際高度輸出。如圖5所示,將D和修正后的y值進行曲線擬合得y=-0.02084D+224.5749。將每次數碼管的值用Matlab的polyval()函數重新代入擬合好的曲線,得到液位的最大誤差為0.9mm,最小誤差為-0.01mm。

圖5 數碼管顯示值與液位輸出的擬合曲線
為了更好地檢驗擬合直線的準確度,將擬合好的曲線編程輸入S3C2440,試驗過程如上步驟。每次增加5mL,從18mL開始滴加,數碼管直接輸出液位的實際高度,試驗結果見表2,可見最大誤差為-0.09mm,最小誤差為+0.03mm,都在±0.10mm的范圍內。
由以上試驗結果可以看出:600dpi CIS輸出的視頻信號噪聲小,能夠清晰地分辨出液位的圖像信息。輸出信號經調理電路調理后,可采用ADS930輕松實現閾值分割,從而通過脈沖計數法實現液位信息的提取。
于低分辨率的CIS,提升了液位測量的精度。

表2 液體體積和數碼管讀數
本試驗使用的600dpi CIS的線性度較好,像素與高度間的關系可以直接擬合為一次函數。
利用高分辨率的CIS,并結合相應的硬件轉換電路也可以實現無色液體的液位測量。
采用600dpi CIS和S3C2440處理器實現了玻璃管液位計的高精度自動測量。與其他采用CIS實現液位檢測的裝置相比,測量精度由0.50mm提高到了±0.10mm。此外,此液位測量系統計還可以測量無色液體的液位。
[1] 孫劉杰,王洪來.基于CIS的水流量標準液位讀取裝置研究與設計[J].微計算機信息,2012,(10):191~192.
[2] 于佩.基于FPGA的玻璃計液位檢測裝置[D].上海:上海理工大學,2013.