采用視頻的無線激光定位設(shè)備的設(shè)計
隨著CCD(Charge Coupled Device)越來越廣泛地被應(yīng)用到工業(yè)、軍事、民用行業(yè)。采用CCD攝像頭作為裝置的前端圖像傳感器并結(jié)合其他硬件電路對被測圖像信息進(jìn)行快速采樣、傳輸及數(shù)據(jù)處理的應(yīng)用系統(tǒng)正日益受到人們的關(guān)注。本文所介紹的是一種帶有CCD攝像器件的視頻信號處理裝置,主要用于投影屏幕上目標(biāo)點的坐標(biāo)測量和光標(biāo)定位。
1.系統(tǒng)總體設(shè)計方案
系統(tǒng)總體設(shè)計如圖1所示,激光筆發(fā)射到被測畫面的光點被CCD攝像器件接收,CCD攝像器件輸出視頻信號給同步分離電路和整形電路。利用同步分離電路后,可從視頻信號中得到行同步信號和場同步信號和奇偶信號,行同步和場同步信號被送到計數(shù)電路。視頻信號經(jīng)過整形電路后得到光信號,光信號也被送往計數(shù)電路,計數(shù)電路處理后輸出光點的二維位置信息,此信息經(jīng)單片機處理后由串口傳輸?shù)接嬎銠C,計算機通過軟件編程實現(xiàn)光標(biāo)的定位并模擬鼠標(biāo)的單雙擊功能。
500)this.style.width=500;" border="0" />
圖1 電路總體結(jié)構(gòu)圖
2.系統(tǒng)硬件電路設(shè)計
2.1整形電路
如圖2所示,CCD攝像器件1輸出的視頻信號被直接傳送到運算放大器4放大,運算放大器4輸出的信號一路作為電壓比較器7的一個輸入,另一路被送到最大值保持電路5,最大值保持電路5主要包括電壓跟隨器5、電容C1、穩(wěn)壓管Dz1 三個器件,當(dāng)有信號從電壓跟隨器5A連續(xù)輸出時,由于二極管D1的存在,電容C1不斷充電,電壓不斷增加,直到信號的最大值到來,這時C1的電壓也增加到最大值,之后再有信號到來時由于其電壓達(dá)不到加在電容兩端的電壓,因而電容不再充電,電壓保持不變。當(dāng)圖中所示的場同步信號到來時,穩(wěn)壓管Dz1反相導(dǎo)通,電容才迅速放電,再有信號從電壓跟隨器5A 輸出,電容又開始重新充電。通過這種設(shè)計,便可以從每場視頻信號中提取出最強的信號,并將這個值通過電壓跟隨器6輸出到電壓比較器7的另一個輸入端,電壓比較器7輸出的信號即為從視頻信號中提取出的光信號,并且該光信號存在這樣的特點:對于每一場視頻信號而言,只有當(dāng)當(dāng)前信號值大于以往信號值時,光信號輸出為高電平,否則輸出為低電平。視頻信號最大值過后,光信號輸出時刻保持在低電平。在圖2中,電壓跟隨器6相當(dāng)于一個高輸入阻抗元件,可以防止電容C1放電過快。電源VCC提供一個鉗位電壓。
500)this.style.width=500;" border="0" />
圖2 整形電路詳細(xì)原理圖
2.2同步分離電路
視頻信號是反映圖像內(nèi)容的電視信號, 它的電壓高低表示圖像像素的明暗程度。由于圖像是隨機性的, 因此視頻信號電平也在一定范圍內(nèi)隨機起伏。視頻信號是在電子掃描作用下, 由攝像頭將明暗不同的景象轉(zhuǎn)換為相應(yīng)的電信號, 然后經(jīng)信號通道傳送出去。目前在傳送視頻信號時,是把影像信號,消隱信號和復(fù)合同步信號三者按一定比例結(jié)合在一起發(fā)送的。我國采用的電視信號是隔行掃描(PAL)制式(黑白為CCIR),行頻為15625Hz,行同步脈寬為4.7μs;場頻為50 Hz,場同步脈寬為160μs[1]。[!--empirenews.page--]
準(zhǔn)確分離視頻信號對系統(tǒng)的成功至關(guān)重要,在該系統(tǒng)中視頻信號同步分離可以選用芯片LM1881來實現(xiàn),輸入為滿足CCIR標(biāo)準(zhǔn)的視頻信號,輸出有復(fù)合同步信號、場同步信號、奇偶場標(biāo)志信號。其中,復(fù)合同步信號中包含了周期為64μs的行同步信號和場回掃期間的周期為32μs的場均衡信號、場同步信號[2]。
2.3計數(shù)電路
2.3.1光信號行計數(shù)
選擇20MHz的晶振作為行計數(shù)器的計數(shù)時鐘脈沖輸入,計數(shù)器的時鐘頻率實際上決定了視頻信號每一行的采樣點的數(shù)量,即每行水平的數(shù)字分辨率。行周期64μs,頻率15625Hz,每行的采樣點為20M/15625=1280,除去行消隱和行同步的時間,每行的有效采樣點可達(dá)1000點以上。為了保證計數(shù)器不會溢出,需用二進(jìn)制地址10位,因此我們選擇采用12位計數(shù)器。由光信號和場同步脈沖通過與非門接到計數(shù)器的清零引腳,由20MHz時鐘信號和行同步脈沖通過與非門接到計數(shù)器時鐘脈沖輸入引腳。當(dāng)光信號到來時計數(shù)器開始計數(shù),下一行同步脈沖到來時,會停止計數(shù),同時觸發(fā)鎖存器,存儲計數(shù)器中的數(shù)值,至此就獲得了光點的行坐標(biāo)。下一場同步脈沖到來時,會將計數(shù)器清零,開始新一行的點坐標(biāo)測量[3]。圖4是實現(xiàn)行計數(shù)的波形示意圖。
500)this.style.width=500;" border="0" />
2.3.2 光信號場計數(shù)
場計數(shù)的工作原理與行計數(shù)類似,只是計數(shù)器時鐘脈沖輸入改為行同步脈沖。光信號到來時開始計數(shù),當(dāng)場同步脈沖到來時停止計數(shù),觸發(fā)鎖存器,存儲計數(shù)器中的數(shù)值,至此就獲得了光點的場坐標(biāo)。同時場同步脈沖會將計數(shù)器清零,開始新一場的點坐標(biāo)測量。
由于攝像頭采用隔行掃描方式,兩場構(gòu)成一幀畫面,奇數(shù)場掃奇數(shù)行,偶數(shù)場掃偶數(shù)行,所以此時得到的場坐標(biāo)與實際值之間有較大誤差。為了提高精度,需要確定當(dāng)前掃描的是奇數(shù)場還是偶數(shù)場。如果場計數(shù)器中的值為n,LM1881的奇偶場標(biāo)志腳輸出0,則表明當(dāng)前掃描的是偶數(shù)場,光點實際應(yīng)在第2n行;若輸出1,表明掃描的是奇數(shù)場,光點實際應(yīng)在第2n-1行。
3.單片機串口通信流程
在本系統(tǒng)中使用的單片機是陵陽SPCE061A,它的UART模塊提供了一個全雙工標(biāo)準(zhǔn)的通信口,用于與外設(shè)之間的串行通信。在使用SPEC061A的異步串行端口UART實現(xiàn)與PC通信時,由于SPEC061A的I/O電平和PC不一致,要采用一片MAX232進(jìn)行電平轉(zhuǎn)換,MAX232的RXD和TXD分別接SPCE061A的IOB10(TX)和1OB7(RX)。
根據(jù)RS-232的標(biāo)準(zhǔn),SPCE061A單片機是按字節(jié)傳輸數(shù)據(jù)的。利用IOB口的特殊功能和UART IRQ中斷,可以同時完成UART接口數(shù)據(jù)的接收和發(fā)送。SPCE061A單片機串行通信幀結(jié)構(gòu)為:1位啟動位,8位數(shù)據(jù)位,1位奇偶校驗位,1位停止位。使用UART模塊進(jìn)行通信時,必須事先分別將管腳I0B7設(shè)置為輸入狀態(tài),IOB10設(shè)置為輸出狀態(tài)。將波特率設(shè)置為9600b/s即可滿足本系統(tǒng)實時數(shù)據(jù)傳輸要求。
初始化的代碼為:
*P_IOB_Dir=0x0400; //IOB0~IOB7初始化為輸入,IOB10為輸出
*P_IOB_Attrib=0x0480;
*P_UART_BaudScalarHigh=0x05; //波特率設(shè)置為9600bps
*P_UART_BaudScalarLow=0x00;
*P_UART_Command1=0x0000; //允許接收、發(fā)送
*P_UART_Command2=0x00C0;
單片機數(shù)據(jù)發(fā)送程序代碼片段為:
Ret=*P_UART_Command2; //檢查標(biāo)志位,查看上次數(shù)據(jù)是否發(fā)送完畢
Ret=Ret&0x0040;
while(Ret==0) //若沒有等待繼續(xù)發(fā)送
{
Ret=*P_UART_Command2;
Ret=Ret&0x0040;
*P_Watchdog_Clear=C_WDTCLR;
}
m1=m&0x000f; //將16進(jìn)制m1轉(zhuǎn)ASCLL碼傳送上位機
Hex_ASC(m1);
*P_UART_Data=m1;
4.PC機軟件設(shè)計
在計算機接收端,由串口1接收單片機發(fā)來的數(shù)據(jù),采用VB 6.0設(shè)計軟件程序,串行通訊利用MSCOMM控件實現(xiàn)[4]。MSCOMM能十分方便地開發(fā)出使用計算機串口的計算機通信程序。在本系統(tǒng)中MSCOMM控件采用事件驅(qū)動方式從端口獲取數(shù)據(jù),軟件處理流程為:打開串口開始接收單片機發(fā)送來的數(shù)據(jù),首先判斷數(shù)據(jù)幀的開始字節(jié),是則關(guān)閉OnComm接收事件,然后接收數(shù)據(jù)字節(jié),判斷數(shù)據(jù)最大最小值,采用坐標(biāo)轉(zhuǎn)化算法將接收的坐標(biāo)轉(zhuǎn)化為屏幕坐標(biāo),最后打開OnComm接收事件,等待下一次OnComm事件產(chǎn)生。
Windows SDK中函數(shù)SetCursorPos()可以實現(xiàn)將鼠標(biāo)光標(biāo)顯示在投影大屏幕上的激光點處,該函數(shù)帶有兩個參數(shù)x和y,表示鼠標(biāo)在屏幕上的坐標(biāo)。函數(shù)mouse_event()可以模擬一次鼠標(biāo)事件,例如可用如下命令模擬左鍵單擊:mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0。這樣就實現(xiàn)了利用激光筆光點控制目標(biāo)大屏幕的鼠標(biāo)指針定位,移動和單雙擊。
5.結(jié)束語
試驗表明,裝備設(shè)計合理,滿足設(shè)計技術(shù)指標(biāo)要求,工作穩(wěn)定可靠,且具有較強的可擴(kuò)充性,只需做少許改動即可適應(yīng)用戶更高的要求,若要求進(jìn)一步提高光標(biāo)定位的精度,可選擇更高的晶振作為行計數(shù)器脈沖的輸入,必要時對計數(shù)器加以擴(kuò)展。這相當(dāng)于將像素點加以細(xì)化,因而精度提高。
本裝置是配合計算機,投影儀而用于產(chǎn)品演示、電化教學(xué)及學(xué)術(shù)會議等場合的理想演示用工具。經(jīng)過改裝后,還可用于警員、軍隊槍械的模擬訓(xùn)練,有著廣闊的應(yīng)用前景。