朱義德,楊瑞峰,郭晨霞,葛雙超
(中北大學(xué)電子測試技術(shù)國家重點實驗室,山西太原 030051)
超聲波測量物體間距離的原理是基于脈沖回波法[1],該方法利用聲波的回波特性。如圖1所示。
圖1 超聲波測距系統(tǒng)示意圖
控制電路產(chǎn)生一個觸發(fā)信號,這個信號由發(fā)射端T接收并受此激勵產(chǎn)生超聲波脈沖。脈沖傳輸至物體,遭遇物體阻攔時會產(chǎn)生脈沖回波,然后接收端R檢測脈沖回波[2-4]。通過A/D轉(zhuǎn)換器將發(fā)射端T的發(fā)射信號和接收端R檢測信號分別作為參考信號和接收信號進行數(shù)字化,通過信號特征值(峰值、頻率等)匹配計算出超聲波的飛行時間(TOF)。最后結(jié)合飛行時長TTOF和所測的聲速vU計算發(fā)射器T和接收器R到目標的距離L[5-7]。如式(1)所示。
(1)
一般情況下,TOF是用閾值法計算的,但閾值法受信噪比的影響較大[8]。采用信號互相關(guān)算法,通過匹配發(fā)射信號與接收信號之間的相似度,從而識別出回波位置[9]。
互相關(guān)算法原理如下[10-11]:
用x(n)表示發(fā)射端離散時間信號,用y(n)表示接收端離散時間信號。
x(n)=z(n)+w1(n)
(2)
y(n)=z(n+τ)+w2(n)
(3)
式中:z(n)為超聲波信號;w1(n)、w2(n)分別為發(fā)射端、接收端的干擾信號;τ為時間延遲序號。
將采集到的回波信號y(n)與發(fā)射信號x(n)進行N點的互相關(guān)運算,由于3個信號z(n)、w1(n)、w2(n)兩兩之間都互不相關(guān),x(n)、y(n)的互相關(guān)表達式為
(4)
由式(4)計算出的Rxy(τ)表示回波信號y(n)與發(fā)射信號x(n)之間相似程度,互相關(guān)運算的最大值時刻即為時間延遲的估計值。
系統(tǒng)采用cyclone四代EP4CE30F23V6N芯片為核心的FPGA,時鐘主頻為50 MHz,幾十個I/O接口可以滿足系統(tǒng)設(shè)計的要求。采用模塊化方式設(shè)計系統(tǒng),如圖2所示。
圖2 系統(tǒng)總體設(shè)計框圖
系統(tǒng)控制部分主要由時鐘分頻模塊、觸發(fā)信號模塊、互相關(guān)算法模塊、顯示模塊構(gòu)成。分別完成時鐘頻率的調(diào)整、測距模塊觸發(fā)啟動、TOF的測量以及測試距離的顯示,其中的核心為互相關(guān)算法模塊。為了降低測量誤差,圖中2個測距模塊由相同測距裝置組成。
在測距模塊1中,已知特定距離D,經(jīng)過互相關(guān)算法模塊處理信號得出飛行時間TTOF1,由式(1)變換可得出實際聲速,如式(5)所示:
(5)
再將vU代入式(1)中,得出精準的實際測試距離L。用第一組來測量聲速作為第二組距離測量裝置的補償數(shù)據(jù),這也是稱之為自具補償測距系統(tǒng)的原因。
測距模塊主要由2部分組成:一是產(chǎn)生超聲波的脈沖發(fā)射電路,另一個是處理信號的回波接收電路。
超聲波發(fā)射電路如圖3所示,由功率放大電路、超聲波脈沖生成電路組成。
圖3 超聲波發(fā)射電路
FPGA發(fā)出的PWN經(jīng)過PNP型三極管放大和變壓芯片升壓,實現(xiàn)功率放大功能。變壓芯片輸出的放大脈沖會激勵換能器生成超聲波信號,由探頭發(fā)出。
為了提高回波信號的信噪比,采用芯片CX2016A進行信號的放大、濾波、整形。超聲波接收電路如圖4所示。
圖4 超聲波接收電路
圖4中,VCC為+5 V。C1腳所連接的RC串聯(lián)電路,R15和C6分別控制著芯片的前置放大增益和頻率特性。C2腳上的電容C7為檢波電容,影響電路的瞬時靈敏度。C3腳所連接電容為積分電容。通過改變各引腳上的器件的數(shù)值,可以調(diào)整回波接收電路,以滿足設(shè)計的要求。
在式(4)中取z(n+τ)=g(n+τ),可以得出一個卷積算式。如式(6)所示。
(6)
此處,*代表卷積。
只有在1個A/D采樣周期內(nèi)完成式(6)中的卷積運算,才能保證算法的精準實時性。卷積運算是2個變量在一定范圍內(nèi)相乘后求和的乘加結(jié)果,若是采用傳統(tǒng)的并行方式在FPGA中實現(xiàn)式(6)中的運算,需要N個乘加器[12]。FPGA中的資源將被無意義使用,且電路和程序結(jié)構(gòu)會被采樣點數(shù)N的數(shù)值確定,修改過程繁瑣并容易出錯。為了增加算法的通用性和兼容性,能夠靈活完成不同采樣點數(shù)N的互相關(guān)運算,調(diào)整FPGA內(nèi)部結(jié)構(gòu),采用半并行結(jié)構(gòu)實現(xiàn)式(6)的算法,如圖5所示。
圖5 半并行結(jié)構(gòu)的互相關(guān)模塊示意圖
在設(shè)計互相關(guān)算法模塊時,每個乘加節(jié)中的2個數(shù)據(jù)存儲結(jié)構(gòu),應(yīng)該滿足以下要求:
在計算單個乘加節(jié)互相關(guān)Rxy(τ)時,互相關(guān)數(shù)據(jù)緩沖區(qū)中的輸入數(shù)據(jù)g(n)以及互相關(guān)系數(shù)存儲器中的互相關(guān)模板z(n)需要遍歷。一個Rxy(τ)的計算完成后,乘加節(jié)會讀出數(shù)據(jù)并被后一個乘加節(jié)寫入。第一個乘加節(jié)會寫入A/D采樣得到的新緩數(shù)據(jù),并將數(shù)據(jù)存儲結(jié)構(gòu)中最先寫入的數(shù)據(jù)讀出并寫入下一個乘加節(jié)。最后一個乘加節(jié)只執(zhí)行數(shù)據(jù)的寫入和讀取操作,“輪空”數(shù)據(jù)輸出的功能。
假設(shè)采樣點為64,采用圖5中所示結(jié)構(gòu),只需要4個乘加節(jié)就可完成運算,降低了FPGA資源占用。還可以根據(jù)采樣點數(shù)以及實際使用情況,靈活調(diào)整乘加節(jié)的數(shù)量?!熬彌_存儲”結(jié)構(gòu)。圖5中互相關(guān)系數(shù)存儲器存入互相關(guān)模板z(n)后數(shù)據(jù)不更新?;ハ嚓P(guān)數(shù)據(jù)緩沖區(qū)是存儲寫入數(shù)據(jù)g(n)的雙端口RAM:一個負責在每個A/D采樣周期中將1個新數(shù)據(jù)寫入緩沖區(qū),另一個用于讀出數(shù)據(jù),實現(xiàn) “循環(huán)隊列”數(shù)據(jù)讀寫結(jié)構(gòu)。每個A/D采樣周期中,2個存儲器的數(shù)據(jù)會被按地址讀取16次,讀取出的數(shù)據(jù)在乘加器進行運算后輸出進入加法器,得出互相關(guān)運算結(jié)果。
使用Quartus Ⅱ中的MegaWizard工具生成IP核,完成乘加節(jié)中的2個存儲器雙口RAM以乘加器模塊設(shè)計,編寫Verilog-HDL程序完成乘加節(jié)控制模塊、頂層模塊的的設(shè)計。由上文可知,整個互相關(guān)模塊的重點是乘加節(jié)的實現(xiàn)。乘加節(jié)控制仿真波形如圖6所示。
如圖6所示,讀取互相關(guān)系數(shù)存儲器數(shù)據(jù)“coe_value”與互相關(guān)數(shù)據(jù)緩沖器數(shù)據(jù)“dp_rd_data”完成一次遍歷乘加運算,被鎖存器“s-latch”鎖存。每段被寫入采樣數(shù)據(jù)進行乘加運算之前,現(xiàn)時數(shù)據(jù)地址“current_pt”會在觸發(fā)指令“start”控制下完成加1操作。讀數(shù)據(jù)緩沖地址寄存器/計數(shù)器“rd_data_dpram_add”會把“current_pt”作為原始數(shù)據(jù)寫入。狀態(tài)計數(shù)器“flag_cnt”的數(shù)值控制著雙口RAM是否讀出數(shù)據(jù)且在“flag_cnt=20”時停止地址計數(shù),留出時鐘周期作為雙口RAM的地址潛伏期以及乘法器的潛伏期,實現(xiàn)16個數(shù)據(jù)的讀取。
圖6 乘加節(jié)控制仿真波形
聲波在空氣中的速度,根據(jù)式(7)可以計算:
(7)
式中:γ、R、T和M分別為比熱比、通用氣體常數(shù)、絕對溫度(單位:開爾文)和摩爾質(zhì)量;聲速c的單位為m/s。
綜合考慮各個因素的影響,得出聲速的實際應(yīng)用算式。如式(8)所示。式中溫度t的單位為℃。
(8)
由式(8)可知,影響聲速的主要因素是溫度。選擇溫度傳感器作為溫度補償電路,替換超聲測距模塊1,修改程序進行控制,實現(xiàn)溫度補償。進行2組對比數(shù)據(jù)測試,一組是不使用互相關(guān)算法的溫度補償測距,一組是使用互相關(guān)算法的溫度補償測距。多次測量取平均值,進行數(shù)據(jù)對比。如表1所示。
表1 測距誤差對比
根據(jù)表1中的數(shù)據(jù)得知,近距離測量誤差較大,3種測試方式?jīng)]有明顯差別,這是因為超聲波測距具有回波盲區(qū)。隨著距離增大,測距精度差別明顯。溫度補償測距沒有使用互相關(guān)算法,測距誤差一直在1%的范圍內(nèi)上下波動。自補相關(guān)測距精度高于溫補相關(guān)測距精度,相對誤差可以低至0.2%。測試距離超過150 cm后,測距的誤差開始回升,這與超聲波回波信號的衰減有關(guān)。
針對超聲波測距系統(tǒng)中硬件補償電路補償單一等問題,設(shè)計了一種基于互相關(guān)算法自具補償?shù)臏y距系統(tǒng)。在設(shè)計中,結(jié)合FPGA的功能特性,采用半并行結(jié)構(gòu)簡化互相關(guān)算法。測距系統(tǒng)中的聲速補償方法,不使用硬件補償電路,而是基于空間環(huán)境條件進行聲速補償。與使用傳感器完成環(huán)境數(shù)據(jù)測量后再進行反饋補償?shù)姆绞较啾?,該方法具有更好的環(huán)境適用性。使用相同的裝置完成聲速的補償,既提高了測距的精度,又減少了工作量,同時降低程序的出錯率。系統(tǒng)可在線拓展升級,有實用價值。