作者:周江華 , 烏建中 , 徐鳴謙
通過人眼觀察進行識讀的傳統水準器式傾斜儀表,直觀但精度不高、靈活性不強。通過引入CCD圖像傳感器采集水準器中氣泡圖像并結合圖像識別算法分析計算氣泡圖形邊緣,研究開發了具備傾斜角度數值輸出能力的新型傾斜傳感器。并進一步通過采用DSP處理器并應用嵌入式設計方法,設計了該類型傾斜傳感器的小型化原型,從而顯著地提高了測量精度和應用的靈活性,克服了傳統儀表的不足。
傾斜傳感器(又稱為水平儀)是測量微小傾斜角的一種測量器具,主要用于測量或檢驗相對于水平位置的傾斜角、表面的水平度、垂直度等,因此在機械制造、設備安裝和維修中,傾斜傳感器是最基本的測量器具之一。根據工作原理,傾斜傳感器一般可以分為水準器式傾斜傳感器、光學傾斜儀和電子傾斜傳感器等幾大類別。
基本原理
微型傾斜傳感器的設計結合了水準器式傾斜傳感器和電子傾斜儀表的優點,通過采用CCD傳感器采集水準器中氣泡的圖像,再通過圖像處理來獲取氣泡的位置,進而計算傾斜參數。
圖1是傳統水平儀示意圖。當水平儀傾斜時,玻璃管中的氣泡移動,偏離中心位置。偏離中心位置的大小與水平傾角相關。在這種情況下,水平儀只能測量相對水平方向的傾角,測量的傾角范圍相對較小、測量精度不高。因而它通常只能用來判斷是否水平,而不能用來測量具體的傾斜角度。
將上面的管狀水準泡改變成圓盤形后,如圖2 所示,則可以通過氣泡的位置來測量二維平面的傾斜角度。為了進一步提高傾角的測量范圍,可將盤形水準泡變為球形,可以通過計算投影平面上氣泡的位置來獲得球面上氣泡相對于鉛垂線的角度。
如圖3所示,通過CCD攝像頭采集水準泡圖像,再利用圖像處理獲取氣泡邊緣并計算氣泡中心點的坐標,從而可以計算出相對于水準泡中垂線的方位和傾角。
原型設計
硬件方案
在實驗階段,根據現有的器材,先采用如圖3所示的“快速原型”方式,即通過連接電腦的攝像頭來采集水準泡的圖像,并在PC機上進行圖像處理和氣泡位置識別,進而計算出傾斜數值。在調試驗證了方案的可行性之后,再采用DSP處理器,重新設計電路板,將圖像采集和圖像處理集成,從而將其小型化,實現傾斜傳感器的樣品。
軟件方案
數據處理
系統數據采集及處理流程如圖4所示。
數據采集處理主要包括:
① 攝像頭中的處理器通過AD采樣獲取了CCD傳感器中各點數據之后,通過USB傳送到PC機。
② PC機一方面將USB 傳來的數據按幀顯示到屏幕上;另一方面將每幀圖像轉化為數據矩陣,交給由MATLAB語言編制的邊緣檢測函數處理。
③ 處理邊緣檢測函數輸出的二值圖像,計算出邊緣對象的中心位置,并顯示到屏幕上。
④ 由于圓盤形水準器表面不能是完全水平的或者由于水準泡是球形的,故需要根據成像模型進行適當修正,方能計算出實際的傾斜程度和方位。
圖像處理算法
在設計中,需要從圖像中找到氣泡邊緣,因而要選擇合理的邊緣檢測算法。目前常用的邊緣檢測主要有Roberts算子、Sobel算子、Lap lace 差分算子、Prewitt算子、Marr算法等。考慮本設計中的成像圖像比較簡單、干擾信息較少,而且可以通過調整背景和光照增強氣泡圖形,所以在實際實驗中采用了最簡單常用的Sobel算子。同時利用Matlab作為程序設計語言,應用其工具箱中成熟的圖像處理算法。
通過編程實現的邊緣檢測效果如圖5所示。CCD攝像頭采集到的水準泡的圖形,經過預處理之后顯示在左邊圖片框中,右邊為處理結果,包括氣泡的邊緣、邊緣對象的中心(表示為圓點)以及表示相對參考點(表示為方塊)偏離角度和距離的直線。
系統功能模塊及硬件設計
功能模塊結構
在PC機上驗證之后,接下來的是設計專門的電路板,實現小型化的要求。根據實際需要,設計電路板的功能模塊,其硬件結構如圖6所示。
功能模塊主要包括了4個部分: ①CCD傳感器,用于采集水準泡圖像。②DSP處理器,用于讀取CCD傳感器數據并處理讀取數據,完成圖像邊緣識別及傾斜角度計算功能。另外,還需輸出數據,顯示到屏幕上和發送到RF芯片。③RF模塊,用于發送傳感器的輸出數據。當傳感器的安裝位置比較特殊時,采用無線方式將減少線纜的麻煩,提高應用的靈活性。④LCD模塊,主要用于顯示數據,根據需要,設計成可選模塊。
電路板設計
根據上面的系統模塊結構要求,選擇元件繪制原理圖并生成電路板PCB圖。在電路板的布局上,注意以下幾點:
① 電路板的大小和水準器圓盤的相互匹配。
② 核心元件CCD傳感器芯片和DSP處理芯片布局。將其中的CCD芯片布置在電路板的中心,同時在CCD芯片四周留出鉆孔位置,方便安裝鏡頭。為減少電路板的面積,將DSP芯片放置在反面中間位置。再在四周布置必要的分立元件及用于連接RF發送模塊的接插件,顯示單元也做成模塊式,方便顯示單元的拆裝。
嵌入式系統的軟件設計
核心算法的代碼移植
由于在前面的方案驗證中,采用的是Matlab高級語言編制的邊緣檢測算法,因此需要將其轉化為DSP開發工具環境支持的C語言,利用Matlab 中的MCC編譯工具將M函數轉換為C語言。
代碼集成
將邊緣檢測算法轉化為開發工具所支持的語言之后,將編制的CCD芯片的讀寫操作函數,數據處理結果輸出函數集成起來,通過調試排除基本的語法及邏輯錯誤,實現編譯通過,生成機器代碼。
在線調試
完成上面的代碼集成之后,通過聯機調試實現系統的功能。
① 監視程序中的變量,按照數據的流向,從數據源(即從CCD中讀取的數據)開始檢查排除錯誤一直到最后輸出結果。
② 在輸出結果基本正確之后,通過測量出的實際的傾斜數值和系統輸出數值的比較,修正校驗直到達到滿意結果。
結束語
微型傾斜傳感器的設計,目前還存在以下幾個方面問題需要繼續研究:
① 系統的精度:由于高的系統精度需要CCD有較高的分辨率,同時要求水準器需要有足夠的面積,但這會和系統的成本和體積相矛盾。
② 系統的響應時間:由于采用了水準泡,而液體有一定的粘度,從而影響了水泡的流動速度,降低了系統的響應時間。
責任編輯:gt
-
傳感器
+關注
關注
2550文章
51039瀏覽量
753092 -
處理器
+關注
關注
68文章
19259瀏覽量
229657 -
CCD
+關注
關注
32文章
879瀏覽量
142224
發布評論請先 登錄
相關推薦
評論