徐成濤 吳冠豪 鄭睿童
(國(guó)防科學(xué)技術(shù)大學(xué)電子科學(xué)與工程學(xué)院1,湖南 長(zhǎng)沙 410073;清華大學(xué)機(jī)械學(xué)院2,北京 100084)
脈沖式激光測(cè)距儀具有速度快、方向性好、測(cè)程遠(yuǎn)、抗干擾能力強(qiáng)等優(yōu)點(diǎn),在工業(yè)、航空航天、大地測(cè)量、建筑測(cè)量、機(jī)器人和軍事等領(lǐng)域均有廣泛應(yīng)用[1]。脈沖式激光測(cè)距機(jī)的工作原理是利用脈沖激光器向目標(biāo)發(fā)射單次激光脈沖,計(jì)數(shù)器測(cè)量從激光脈沖射向目標(biāo)到目標(biāo)返回到接收機(jī)的往返時(shí)間,由此得出目標(biāo)的距離[2]。脈沖式激光測(cè)距儀主要由半導(dǎo)體脈沖激光器、電源、硅雪崩探測(cè)器及其相關(guān)放大處理電路、光學(xué)系統(tǒng)以及信號(hào)處理電路等部分組成[3]。
脈沖式激光測(cè)距系統(tǒng)最重要的一個(gè)組成部分是測(cè)距計(jì)時(shí)系統(tǒng),測(cè)距計(jì)時(shí)的精度與速度直接影響距離測(cè)量的精度與速度[4]。目前,時(shí)間間隔的測(cè)量方法可分為直接法和間接法兩種。直接測(cè)量方法有脈沖計(jì)數(shù)法、延遲時(shí)間內(nèi)插法等;間接測(cè)量方法有時(shí)間電壓變換(TDC)、游標(biāo)時(shí)間內(nèi)插法和脈沖寬度壓縮時(shí)間內(nèi)插法等,本文采用的是間接測(cè)量方法。
脈沖激光測(cè)距計(jì)時(shí)系統(tǒng)由計(jì)時(shí)模塊和傳輸模塊兩部分組成。計(jì)時(shí)模塊用于測(cè)量信號(hào)的時(shí)間間隔計(jì)算,實(shí)現(xiàn)對(duì)距離的測(cè)量;傳輸模塊用于將測(cè)距數(shù)據(jù)傳輸?shù)缴衔粰C(jī),滿足快速測(cè)距應(yīng)用的需要。
目前,實(shí)現(xiàn)高分辨率時(shí)間間隔測(cè)量的內(nèi)插法主要有模擬內(nèi)插法和數(shù)字內(nèi)插法兩種。模擬方法對(duì)環(huán)境溫度十分敏感,需要比較長(zhǎng)的轉(zhuǎn)換時(shí)間,且容易受到外界擾動(dòng)影響,所以數(shù)字方法的使用更加廣泛[5]。為提高測(cè)量精度,本文采用基于數(shù)字式內(nèi)插測(cè)量方法的高精度時(shí)間間隔測(cè)量芯片TDC-GP2來(lái)實(shí)現(xiàn)計(jì)時(shí)功能。同時(shí),采用一款DSP芯片TMS320F2812作為脈沖激光測(cè)距計(jì)時(shí)部分的主控芯片,負(fù)責(zé)與TDC-GP2芯片的通信、測(cè)量數(shù)據(jù)的相關(guān)處理以及數(shù)據(jù)的向上傳遞,實(shí)現(xiàn)計(jì)時(shí)功能,提高計(jì)時(shí)系統(tǒng)的數(shù)據(jù)處理速度[6]。
在數(shù)據(jù)的傳輸過(guò)程中,選擇USB接口來(lái)實(shí)現(xiàn)與上位機(jī)的通信,并采用集成了USB 2.0接口的EZ-USB FX2LPTM系列芯片CY7C68013A來(lái)進(jìn)行協(xié)議處理和數(shù)據(jù)交換,以支持USB實(shí)現(xiàn)高速的數(shù)據(jù)傳輸[7]。
計(jì)時(shí)系統(tǒng)功能的基本原理如圖1所示。
圖1 計(jì)時(shí)系統(tǒng)原理圖Fig.1 Principle schematic of the timing system
計(jì)時(shí)系統(tǒng)的基本工作流程為:每次上電復(fù)位,TMS320F2812首先對(duì)芯片內(nèi)部的相關(guān)功能寄存器進(jìn)行初始化,接著對(duì)TDC-GP2進(jìn)行必要的初始化;然后,TMS320F2812啟動(dòng)發(fā)射模塊,向待測(cè)目標(biāo)發(fā)射一個(gè)激光脈沖,同時(shí)向TDC-GP2發(fā)出一個(gè)脈沖電信號(hào),TDC-GP2啟動(dòng)計(jì)時(shí);激光脈沖從待測(cè)目標(biāo)散射返回,接收模塊在接收到回波信號(hào)的同時(shí)向TDC-GP2發(fā)出另一個(gè)脈沖電信號(hào),則TDC-GP2停止計(jì)時(shí),并將兩次脈沖信號(hào)之間的時(shí)間間隔信號(hào)通過(guò)SPI接口傳遞給TMS320F2812。TMS320F2812對(duì)數(shù)據(jù)進(jìn)行處理后,將計(jì)時(shí)結(jié)果通過(guò)芯片CY7C68013A傳遞給上位機(jī),以供進(jìn)一步的處理和應(yīng)用。計(jì)時(shí)系統(tǒng)具體工作流程如圖2所示。
圖2 計(jì)時(shí)系統(tǒng)流程圖Fig.2 Schematic diagram of timing system
計(jì)時(shí)模塊以DSP芯片作為脈沖激光測(cè)距計(jì)時(shí)的主控芯片。針對(duì)測(cè)距計(jì)時(shí)工作的基本要求及TDC-GP2芯片的功能特性[5],本文設(shè)計(jì)的計(jì)時(shí)電路主要包括TMS320F2812初始化、TDC初始化和利用DSP實(shí)現(xiàn)測(cè)時(shí)等流程。計(jì)時(shí)電路軟件程序的總流程圖如圖3所示。
圖3 計(jì)時(shí)軟件流程圖Fig.3 Flowchart of the timing software
整個(gè)控制程序運(yùn)行在DSP芯片上。系統(tǒng)上電后,程序首先對(duì)TMS320F2812芯片作相關(guān)的初始化設(shè)置,如關(guān)閉看門(mén)狗、設(shè)置時(shí)鐘等。其中,系統(tǒng)參數(shù)初始化函數(shù)的主要功能是設(shè)置鎖相環(huán)產(chǎn)生150 MHz的時(shí)鐘信號(hào),提供給DSP作為時(shí)間基準(zhǔn),產(chǎn)生高速外圍時(shí)鐘信號(hào)和低速外圍時(shí)鐘信號(hào),并使能SCI串口和SPI接口的時(shí)鐘功能。SPI初始化函數(shù)將SPI時(shí)鐘信號(hào)設(shè)置為2.5 MHz,SCI初始化函數(shù)將 RS-232串口波特率設(shè)置為19 200 bit/s,GPIO初始化函數(shù)設(shè)置了I/O管腳的數(shù)據(jù)傳遞方向和初始值。
在TMS320F2812完成初始化設(shè)置后,就可以對(duì)TDC芯片進(jìn)行控制。但在此之前,同樣需要先作一些初始化工作。這些工作主要包括芯片的上電復(fù)位和初始化設(shè)置、主要芯片間的數(shù)據(jù)通信功能檢查以及與上位機(jī)的串口通信功能檢查[8]。其中,TDC-GP2復(fù)位函數(shù)通過(guò)DSP的I/O口將RSTN管腳置低,實(shí)現(xiàn)TDC芯片的復(fù)位。數(shù)據(jù)通信自檢函數(shù)向TDC-GP2的寫(xiě)寄存器1寫(xiě)入測(cè)試字符串,然后從讀寄存器5中讀出相關(guān)數(shù)據(jù),從而證明TDC-GP2和TMS320F2812均能進(jìn)行正常的讀寫(xiě)通信。最后,TDC-GP2初始化函數(shù)對(duì)TDC-GP2的5個(gè)寫(xiě)寄存器寫(xiě)入事先設(shè)計(jì)好的控制字,以實(shí)現(xiàn)計(jì)時(shí)功能的初始化設(shè)置。
DSP控制TDC-GP2芯片按預(yù)定方式進(jìn)行測(cè)時(shí)。整個(gè)計(jì)時(shí)過(guò)程由timemeasurement()函數(shù)完成,函數(shù)體內(nèi)部嵌套多個(gè)子函數(shù)。TDC-GP2在接收到一條開(kāi)始測(cè)時(shí)的指令后便等待Start信號(hào)到來(lái)。在GP2_START()函數(shù)中,DSP芯片利用I/O口模擬出3個(gè)脈沖信號(hào),分別作為Start信號(hào)和相應(yīng)的Stop1、Stop2信號(hào)。TDC會(huì)根據(jù)控制字的要求計(jì)算出時(shí)間間隔。當(dāng)計(jì)算完成后,TDC-GP2會(huì)發(fā)出中斷信號(hào)。一旦發(fā)生中斷,就進(jìn)入GP2_TMASTAT()函數(shù)讀取TDC-GP2的狀態(tài)寄存器信息,判斷計(jì)時(shí)結(jié)果是否有效。如果數(shù)據(jù)有效,則DSP通過(guò)SPI接口按最高位到最低位的順序讀取寄存器REG0的內(nèi)容,即時(shí)間間隔,并將結(jié)果通過(guò)串口傳遞給上位機(jī)。這樣就結(jié)束了一次時(shí)間測(cè)量。若要實(shí)現(xiàn)多次測(cè)量,只需在timemeasurement()函數(shù)體外加入循環(huán)。
對(duì)于掃描成像等應(yīng)用,在獲得激光測(cè)距的計(jì)時(shí)數(shù)據(jù)后,需要將數(shù)據(jù)快速送入上位機(jī)(應(yīng)用程序)作處理。當(dāng)采樣頻率較高時(shí),單位時(shí)間的采樣數(shù)據(jù)量很大,傳輸信道需要提供較高的傳輸速度,為此,通用串行傳輸協(xié)議使用USB來(lái)實(shí)現(xiàn)數(shù)據(jù)的高速傳輸。
由于通信過(guò)程是由主機(jī)控制決定的,因此,當(dāng)DSP與上位機(jī)進(jìn)行數(shù)據(jù)傳輸時(shí),需由上位機(jī)先發(fā)送一個(gè)傳輸數(shù)據(jù)的命令,然后DSP再響應(yīng)傳遞數(shù)據(jù)。數(shù)據(jù)通信程序的流程圖如圖4所示。
圖4 數(shù)據(jù)通信流程圖Fig.4 Flowchart of data communication
數(shù)據(jù)通信實(shí)現(xiàn)的主要功能有:打開(kāi)USB設(shè)備、發(fā)送數(shù)據(jù)傳輸?shù)闹噶?、DSP發(fā)送數(shù)據(jù)、CY7C68013A芯片傳送數(shù)據(jù)、主機(jī)接收數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、測(cè)量USB通信的傳輸速度等[9]。程序中主要模塊簡(jiǎn)單說(shuō)明如下。
①USB設(shè)備操作:當(dāng)需要訪問(wèn)USB設(shè)備時(shí),調(diào)用Win32API函數(shù),向設(shè)備驅(qū)動(dòng)程序發(fā)出特定的IRPs請(qǐng)求,設(shè)備驅(qū)動(dòng)程序收到請(qǐng)求后,向更底層的驅(qū)動(dòng)程序傳遞請(qǐng)求,完成對(duì)USB設(shè)備的控制和訪問(wèn)[10]。
②DSP發(fā)送數(shù)據(jù):利用外擴(kuò)的RAM添加一個(gè)64 kB的緩沖區(qū),從寄存器讀取數(shù)據(jù),將每次采集到的數(shù)據(jù)存入緩沖區(qū);達(dá)到64 kB后通過(guò)指針將緩沖區(qū)數(shù)據(jù)放入CY68013A的端點(diǎn),CY68013A利用固件程序把緩沖區(qū)內(nèi)容打包向上傳輸。
③數(shù)據(jù)存儲(chǔ):利用MFC中的CFile類的成員函數(shù),通過(guò)創(chuàng)建一個(gè)模態(tài)對(duì)話框?qū)彌_區(qū)的數(shù)據(jù)進(jìn)行文件傳輸,將編輯框控件所顯示的內(nèi)容保存到用戶指定的數(shù)據(jù)文件中。
④數(shù)據(jù)傳輸速度測(cè)試:在數(shù)據(jù)傳輸開(kāi)始的同時(shí),定時(shí)器開(kāi)啟進(jìn)行計(jì)時(shí)。在傳輸結(jié)束時(shí),傳輸數(shù)據(jù)的大小除以傳輸時(shí)間就可得到有效數(shù)據(jù)傳輸速度。本文自行設(shè)計(jì)了一個(gè)能精確到毫秒級(jí)的時(shí)間測(cè)定函數(shù),用來(lái)測(cè)試傳輸速度。
本文根據(jù)上述需求設(shè)計(jì)了一個(gè)試驗(yàn)系統(tǒng),其硬件包括:TDC-GP2芯片電路、TMS320F2812芯片電路和上位機(jī)(計(jì)算機(jī))。TDC-GP2芯片與TMS320F2812芯片通過(guò)SPI接口通信,測(cè)試所用的時(shí)間信號(hào)由DSP芯片模擬產(chǎn)生并提供給TDC-GP2,控制信號(hào)也由DSP芯片發(fā)出;上位機(jī)與DSP芯片通過(guò)USB交換數(shù)據(jù)。
測(cè)試時(shí),DSP芯片的I/O口產(chǎn)生Start、Stop1信號(hào),作為T(mén)DC的輸入信號(hào)。采用TDC-GP2和Tektronix TDS 1012B(100 MHz,1 GS/s)示波器同時(shí)測(cè)量?jī)烧咧g的時(shí)間間隔,觀察相應(yīng)的計(jì)時(shí)結(jié)果。DSP信號(hào)時(shí)間間隔測(cè)量結(jié)果如表1所示。
表1 時(shí)間間隔測(cè)量結(jié)果Tab.1 Measuring results of signal time interval
TDC-GP2的測(cè)量結(jié)果與示波器測(cè)量的試驗(yàn)數(shù)據(jù)表明,隨著觸發(fā)信號(hào)的間隔時(shí)間按等差數(shù)列增加,所得到的時(shí)間測(cè)量結(jié)果也隨之成等差數(shù)列增加。這就表明TDC-GP2的時(shí)間測(cè)量結(jié)果具有較好的線性關(guān)系,且每組值的標(biāo)準(zhǔn)差均在65 ps之內(nèi)。
接著,DSP芯片的 I/O口又被用來(lái)發(fā)送 Start、Stop1和Stop2信號(hào)。將Start信號(hào)作為觸發(fā)信號(hào),觸發(fā)TDC芯片測(cè)量Stop1和Stop2信號(hào)。Stop1信號(hào)是Start信號(hào)經(jīng)過(guò)一對(duì)反門(mén)之后的信號(hào),Stop2信號(hào)是Stop1信號(hào)再經(jīng)過(guò)一對(duì)反門(mén)之后的信號(hào),二者之間間隔為反門(mén)典型延時(shí)的兩倍。結(jié)果表明TDC測(cè)量具有較好的穩(wěn)定性。
數(shù)據(jù)通過(guò)USB接口發(fā)送給上位機(jī),傳輸速率大于3 Mbit/s。試驗(yàn)中一次采樣數(shù)據(jù)用20 B進(jìn)行存儲(chǔ),每次采樣平均數(shù)據(jù)傳輸耗時(shí)7 μs,而程序用時(shí)約96 μs,一次采樣過(guò)程共需要103 μs。由于DSP芯片的SPI速率仍可提高(本文采用的是2.5 MHz,最多可達(dá)9.375 MHz),且USB數(shù)據(jù)傳輸速率可超過(guò)3 Mbit/s,因此,采樣時(shí)間完全可以小于100 μs,采樣率可達(dá)10 kHz。測(cè)試結(jié)果表明,系統(tǒng)對(duì)時(shí)間間隔的測(cè)量精度可達(dá)65 ps,量程可達(dá)0~16 ms;系統(tǒng)運(yùn)行穩(wěn)定,也沒(méi)有引入新的誤差。
為滿足激光測(cè)距的掃描成像、模式識(shí)別等應(yīng)用需要,對(duì)脈沖式激光測(cè)距的高速計(jì)時(shí)技術(shù)進(jìn)行了研究。通過(guò)采用基于數(shù)字式內(nèi)插測(cè)量方法的高精度時(shí)間間隔測(cè)量芯片和數(shù)據(jù)處理芯片,設(shè)計(jì)實(shí)現(xiàn)了激光測(cè)距儀的計(jì)時(shí)模塊與數(shù)據(jù)的傳輸模塊,并構(gòu)建了一個(gè)試驗(yàn)系統(tǒng)。試驗(yàn)表明,計(jì)時(shí)系統(tǒng)利用TDC-GP2芯片測(cè)量可實(shí)現(xiàn)高精度(65 ps)、性能穩(wěn)定的測(cè)距計(jì)時(shí),以滿足脈沖式激光測(cè)距的應(yīng)用需求。
[1]王秀芳.脈沖半導(dǎo)體激光測(cè)距的研究[D].成都:四川大學(xué),2006.
[2]劉坤,陳芳.激光測(cè)距方法及激光器的發(fā)展[J].科技信息,2008(30):387-388.
[3]李黎明.半導(dǎo)體激光測(cè)距機(jī)中的信號(hào)處理方案[D].成都:電子科技大學(xué),2008.
[4]黃震.脈沖激光測(cè)距接收電路與計(jì)時(shí)方法研究[D].杭州:浙江大學(xué),2004.
[5]曾凡.用于脈沖式激光測(cè)距的計(jì)時(shí)電路研制[D].北京:清華大學(xué),2009.
[6]孫麗明.TMS320F2812原理及其C語(yǔ)言程序開(kāi)發(fā)[M].北京:淸華大學(xué)出版社,2008:20-22.
[7]程玉龍.采用USB2.0接口的圖像采集系統(tǒng)設(shè)計(jì)[D].重慶:重慶大學(xué),2007.
[8]宋建輝,袁峰,丁振良.脈沖激光測(cè)距中高精度時(shí)間間隔的測(cè)量[J].光學(xué)精密工程,2009,17(5):1047-1049.
[9]吳剛,李春來(lái),劉銀年,等.脈沖激光測(cè)距系統(tǒng)中高精度時(shí)間間隔測(cè)量模塊的研究[J].紅外與毫米波學(xué)報(bào),2007,26(3):214-216.
[10]孟升衛(wèi).高速精密時(shí)間間隔測(cè)量及應(yīng)用研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007.