數(shù)字水準儀的數(shù)據(jù)采集與處理系統(tǒng)研究
數(shù)字水準儀是在自動安平水準儀的基礎上發(fā)展起來的,他采用條紋編碼標尺和電子影像處理原理,用線陣CCD替代觀測員的肉眼,將望遠鏡像面上的標尺成像轉換成數(shù)字信息,再利用數(shù)字圖像處理技術來識別標尺條碼進而獲得標尺讀數(shù)和視距。
本文設計的數(shù)字水準儀數(shù)據(jù)采集系統(tǒng)是以89C51單片機為核心,Intel8253計數(shù)器作為同步控制器,控制A/D轉換器對CCD的輸出信號定時采樣。系統(tǒng)采用等間隔、多周期采樣的方法實現(xiàn)低速A/D轉換器對高分辨率線陣CCD輸出信號的數(shù)據(jù)采集,并將采集結果通過串口傳給微機,在微機系統(tǒng)采用數(shù)字濾波、邊緣檢測等數(shù)字圖像處理技術對采集數(shù)據(jù)進行數(shù)據(jù)處理,提取條碼邊緣,再根據(jù)幾何光學物象比的關系,求出視距和視線高讀數(shù)。
2 硬件電路設計及工作原理
2.1 硬件電路設計
系統(tǒng)硬件電路如圖1所示,主要由89C51單片機、A/D轉換器及其接口電路組成。 本系統(tǒng)計數(shù)器Intel8253選用計數(shù)器2,采用方波脈沖方式(方式1)和連續(xù)負脈沖方式(方式2)相結合的方法。其門控信號和時鐘脈沖信號分別由CCD驅動電路輸出的行同步脈沖信號FC和像元同步脈沖信號SP來控制,從而實現(xiàn)Intel8253的輸出信號與CCD輸出的視頻信號同步。Intel8253在89C51的控制命令下工作,產生與像元同步的驅動A/D脈沖,使A/D轉換器在CCD輸出像元信號的有效時間進行A/D轉換。
考慮系統(tǒng)合理的轉換速度和性能價格比,A/D轉換電路采用轉換時間為25μs的12 b逐次比較型A/D轉換器AD574。其工作狀態(tài)由CE,CS,R/C,12/8,A0五個控制信號決定。對于本系統(tǒng)AD574進行8 b數(shù)據(jù)轉換可滿足系統(tǒng)精度要求,因此提高了A/D轉換時間。圖1中AD574的CE端接+5V,CS接地,使A/D轉換器始終處于允許工作狀態(tài)。12/8接地,啟動8b數(shù)據(jù)轉換。A0由74LS138的Y7控制,讀/轉換控制端R/C由8253的OUT2端來控制,采用單極性輸入。轉換結束狀態(tài)口線STS接到89C51的P1.1口,采用查詢方式讀取轉換結果。
2.2 工作原理
CCD在驅動電路的驅動脈沖作用下輸出視頻信號經(jīng)低通濾波送到A/D轉換器的模擬信號輸入端。由于A/D轉換器的轉換頻率底于CCD的工作頻率,系統(tǒng)采用等間隔重復掃描的方式對CCD輸出的信號進行采樣。當系統(tǒng)上電后,在FC信號的第一個下降沿時刻響應外部中斷0,置8253工作方式1和計數(shù)初值,8253開始計數(shù),計數(shù)完輸出第一個負脈沖信號。該信號啟動A/D轉換,同時查詢INT1口狀態(tài)。
當8253輸出第一個負脈沖信號的下降沿時刻,8253重置工作方式2和計數(shù)初值。使8253按新的計數(shù)初值開始計數(shù),輸出連續(xù)的負脈沖信號。同時不斷查詢P1.1口的狀態(tài),當P1.1為低電平時,不斷讀取A/D轉換結果。在下面連續(xù)的FC信號周期,重復上述過程,完成對所有有效信號點的采樣。
3 系統(tǒng)的軟件設計
本系統(tǒng)的應用程序采用了模塊化程序設計的方法,按功能主要分為2大部分。前一部分是采用MCS-51匯編語言開發(fā)由89C51的單片機執(zhí)行程序,包括數(shù)據(jù)采集程序和單片機通信程序2個模塊。后一部分是用VC++高級語言編寫的由IBM-PC機執(zhí)行的程序,包括PC機通信程序、邊緣檢測和條碼識別程序3個模塊。PC機與單片機采用判別等待通訊協(xié)議進行連接,各模塊之間使用子程序調用,使整個系統(tǒng)有機地成為一體。單片機數(shù)據(jù)采集及數(shù)據(jù)通訊和PC機數(shù)據(jù)通訊及數(shù)據(jù)處理子程序流程框圖如圖2和圖3所示。 3.1 數(shù)據(jù)采集程序模塊
由于系統(tǒng)采用的是普通A/D采集電路,采樣速度低,無法與正常工作的CCD信號速度同步,本系統(tǒng)的數(shù)據(jù)采集程序模塊采用等間隔重復掃描的方式對CCD圖像進行采樣。采集結果通過串口傳送給PC機,以便對采集結果進一步作數(shù)據(jù)處理和實現(xiàn)圖形顯示。
3.2 數(shù)據(jù)通訊程序模塊
數(shù)據(jù)通訊程序模塊由單片機通訊程序和PC機通訊程序2個部分組成。單片機上電后,接收到聯(lián)絡信號,給PC機發(fā)應答信號并開始進行數(shù)據(jù)采集,同時將采集結果通過串口發(fā)送給PC機。PC機通信程序通過串口通訊MSComm控件,設置通訊參數(shù),接收應答信號,讀取采集結果。
3.3 數(shù)字濾波程序模塊
采集結果通?;祀s有噪聲信號,為提高測量精度,本系統(tǒng)采用均值濾波方法消除隨機誤差的影響,運用中值濾波方法消除脈沖噪聲的影響,再運用指數(shù)基的平滑濾波 器方法,對采集圖像進一步作平滑處理。經(jīng)實驗結果證明采用該方法濾波效果較好。
3.4 邊緣檢測、條碼識別程序模塊
對標尺條碼的邊緣檢測是數(shù)字水準儀數(shù)據(jù)處理系統(tǒng)中非常重要的環(huán)節(jié),邊緣檢測的定位精度將直接影響條碼識別的準確度。為使被噪聲污染的條碼圖像很好的檢測出邊緣,結合數(shù)字水準儀標尺條碼的特點,本系統(tǒng)選用基于指數(shù)基的平滑濾波器的快速一維邊緣檢測方法,該算法是DeriChe依據(jù)Canny設計思想導出的邊緣檢測算子,具有較好的單、雙邊定位精度和較快的檢測速度。該算法采用的平滑算子和邊緣檢測算子可用遞歸算法代替卷積運算,大大提高運算速度。該算法的實現(xiàn)過程如下:
(1)運用平滑算子的遞歸公式對圖像進行平滑化處理。
依據(jù)Canny設計思想導出的平滑算子為: (2)運用一階導數(shù)算子的遞歸公式求圖像極大值點
DeriChe推導出的一階導數(shù)邊緣檢測算子為:D(n)=kne-σ|n|,對D(n)進行Z變換和反Z變換,求得一階導數(shù)算子的遞歸公式為: (3)運用二階導數(shù)算子的遞歸公式求圖像零交叉點 (3)確定邊緣點
找出同時滿足一階導數(shù)最大值和二階導數(shù)零交叉的點,即為條碼的邊緣點。
根據(jù)CCD的光電轉換原理,判別首邊緣點是對應亮條碼還是暗條碼的邊界位置點,求出亮、暗條碼寬度,進而識別出條碼。
3.5 視距和視線高計算程序模塊
標尺條碼中的R碼是用來求視距的,視距不同,成像在線陣CCD上標尺截距不同,但至少應包含兩組R碼,本系統(tǒng)設計的標尺條碼相鄰兩組R碼的間距為P(=40mm),他在CCD線陣上成像所占的象素個數(shù)為Z,象素寬為b(=14μm),則P在CCD上的成像長度為:L=Z×b,再根據(jù)幾何光學成像原理,即可求出視距:D=P/L×f(望遠鏡物鏡的焦距)。
本系統(tǒng)中采用相位差法設計標尺條碼,標尺中位于任意兩組R碼之間的A碼、B碼和C碼的條碼寬度組合具有惟一性,即任意一組A碼,B碼,C碼,R碼的組合對應標尺的高度值具有單值性。利用線陣CCD中心像元所在的那組A碼,B碼,C碼寬度值,可以算出該組條碼中R碼的高度,再利用該中心R碼所對應的像元和CCD中心像元的偏差,即可算得視線高讀數(shù)。
4 結語
本文介紹的數(shù)字水準儀數(shù)據(jù)采集與數(shù)據(jù)處理系統(tǒng),解決了高分辨率線陣CCD與低速A/D轉換速度低的矛盾。系統(tǒng)硬件結構簡單、設計成本低、軟件算法簡單、運算速度快、界面友好。經(jīng)過初步實驗,系統(tǒng)能夠達到預期的效果。(end)
51單片機相關文章:51單片機教程
評論