1引言
以往利用超聲波測量距離往往采用單片機單機系統(tǒng)(由單片機軟件控制發(fā)射、接收及計數(shù)器的關停與啟動),這種方法所帶來的誤差在厘米級。原因主要有:單片機計數(shù)器頻率較低造成的誤差;計數(shù)與發(fā)射信號由軟件控制動作而產生的不同步;超聲波傳感器接收到信號與單片機檢測到信號之間不同步等。本文給出一種以CPLD為控制核心的基于超聲波測距原理的測量方法。經過制版測試,所得結果提高到毫米級,而且電路原理較為簡單。
2 超聲波測距的原理
超聲波測距的原理一般采用回波測距法,即測量超聲波發(fā)射到遇到障礙物返回的時間間隔t,然后根據(jù)(1)式計算距離值。

本文給出的系統(tǒng)以CPLD為核心來控制超聲波的發(fā)射,在發(fā)射時刻的同時開始計時,超聲波在空氣中傳播遇到障礙物時則返回。當CPLD檢測到第一個反射波時立即停止計時,測得時間t。
3.系統(tǒng)結構及原理
總系統(tǒng)框圖如圖1所示。系統(tǒng)由CPLD控制電路模塊、單片機控制模塊(包括DS18B20溫度傳感器和顯示部分)和超聲波傳感器模塊(包括信號的發(fā)送,接收與整形)組成。CPLD控制電路模塊通過控制超聲波發(fā)射器發(fā)射超聲波到固定端面,同時啟動高精度計數(shù)器開始計數(shù)。超聲波波前經反射后由接收端接收,當CPLD接收到第一個反射波信號即停止計數(shù),并將計數(shù)器值送入單片機。單片機根據(jù)計數(shù)器值計算出時間間隔△T。再經過溫度修正計算出超聲波速度c,最后利用(1)式計算出發(fā)射器到反射點的距離,并顯示結果。
3.1 CPLD模塊設計
CPLD模塊包括5個部分,分別為32位計數(shù)器,40KHZ標準方波發(fā)生器,32-8四選一數(shù)據(jù)選擇器,計數(shù)器控制電路和一個簡單的有限狀態(tài)機。其內部框圖如圖1所示。工作原理:有限狀態(tài)機輸出清零信號CLR后,置START為高電平,D觸發(fā)器在下一個時鐘脈沖下降沿置Q端為高電平。使能信號ENA=1控制計數(shù)器開始計數(shù),同時打開緩沖門讓40KHZ方波信號驅動發(fā)射超聲波。整形接收電路對接收器接收到的波前進行整形并輸出一高電平到計數(shù)器控制電路,此低電平作為計數(shù)器控制電路的時鐘信號。控制電路在時鐘信號到達后STOP引腳輸出一低電平使使能信號ENA=0,關閉計數(shù)器和方波驅動的發(fā)送。有限狀態(tài)機等待單片機取走計數(shù)值后開始下一個循環(huán)計數(shù)工作。

3.1.1 32位標準頻率計數(shù)器
此處采用100MHZ的晶體震蕩器作為標準頻率信號源。這一頻率精度影響系統(tǒng)的測量精度。計數(shù)和發(fā)射動作同時進行。因為一個脈沖的周期為0.01uS,假定超聲波的速度為0.34mm/uS,一個脈沖丟失造成的誤差僅為0.0034mm。計數(shù)器模塊結構簡單,VHDL描述如下:
count: process(clr,clk)
begin:
if clr=’0’ then counter《=(others=》’0’)
elsif clk’event and clk=’1’ then
if ena=’1’ then counter《=counter+1;
end if;
end if;
end process;
3.1.2 有限狀態(tài)機
狀態(tài)機狀態(tài)轉換圖如圖2所示[4]。和單片機的握手信號直接取自40KHZ的方波驅動信號,以確保同步性。當系統(tǒng)復位或接收到單片機發(fā)出的讀數(shù)據(jù)完成信號COMP有效時,狀態(tài)機進入狀態(tài)S1同時清零并置START為低電平。在下一時鐘狀態(tài)機進入狀態(tài)S2,同時置START=1,啟動D觸發(fā)器開始發(fā)射方波信號并計數(shù)。

當反射波波前到達接收電路后計數(shù)器控制電路使STOP為低電平,此時狀態(tài)機進入狀態(tài)S3,并向單片機發(fā)出信號FINISH通知單片機讀取計數(shù)器數(shù)據(jù)。有限狀態(tài)機VHDL描述如下:
state:process(clk)
begin
if clk=’1’then
case state is
when s1=》clr=0;finish=0;start=0;
if reset=’1’ then state《=s1;
elsif reset=’0’ state《=s2;
end if;
when s2=》……
end if;
……
end case;
end if;
end process state;
3.1.3計數(shù)器控制電路
D觸發(fā)器在START信號置1以后,在40KHZ時鐘信號的上升沿使Q端輸出高電平。同時此高電平被使能信號送入超聲波發(fā)射器。此波前被固定端面反射后有半波損失,到達接收應產生180度相移。當計數(shù)器控制電路的時鐘信號由低變?yōu)楦唠娖綍r,在時鐘信號的上升沿輸出STOP=0,停止計數(shù)器計數(shù)。計數(shù)器控制電路VHDL描述如下:
Con_counter process(clk,clr,)
Beigin:
If clr=0 then stop=1
Elsif clk’event and clk=1 then
Stop=0 else
Stop=1;
End if;
End process;
3.1.4 32—8數(shù)據(jù)選擇器
多路數(shù)據(jù)選擇器的數(shù)據(jù)選擇信號線由單片機的兩個引腳控制。在單片機兩個引腳上的不同邏輯組合輸入下,CPLD模塊將32位數(shù)據(jù)逐次送入單片機。32—8數(shù)據(jù)選擇器的VHDL描述語言如下:
data《=counter(7 downto 0) when sel=”00” else
counter(15 downto 8) when sel=”01” else
counter(23 downto 16) when sel=”10” else
counter(31 downto 24) when sel=”11” else
counter(31 downto 24)
3.2單片機控制模塊
單片機控制模塊硬件包括距離顯示、CPLD模塊接口、和讀取溫度三部分。單片機顯示電路較為簡單,在此不做介紹。單片機和CPLD模塊接口控制由軟件實現(xiàn)。由CPLD狀態(tài)機發(fā)送過來的FINISH信號設置為外部中斷,單片機完成一次距離顯示后即開中斷接收下一組計數(shù)器數(shù)據(jù)。用于溫度補償?shù)臏囟葴y量傳感器采用DALLAS的一線式傳感器DS18B20。它具有接口簡單(僅須一根數(shù)據(jù)線)測量范圍廣、精度高的(在-10℃—85℃內精度為±0.5℃)特點。在溫度變化范圍不大的場合單片機得到溫度值后,可以通過查表實現(xiàn)聲波在空氣中傳輸速率的測量。
3.3超聲波發(fā)射與接收
本系統(tǒng)采用的超聲波傳感器(換能器)是中心頻率為40KHZ的專用型超聲波探頭T40和R40[5]。因為超聲波接收器接收的反射波信號很微弱并含有干擾信號,所以必須進行放大調整。接收電路采用了兩級放大電路和波形整形電路,最后輸出到CPLD的計數(shù)控制電路的時鐘端CLK。當CLK沒有接收到信號變化時,引腳是低電平;接收到第一個信號是40KHZ方波脈沖信號的上升沿。為了消除干擾,采用了硬件濾波。如圖3所示。超聲波信號經電壓提升、放大、整形、濾波后作為時鐘信號送入CPLD的計數(shù)器控制模塊。

4系統(tǒng)測試結果
本系統(tǒng)采用ALTERA公司的的CPLD EP2K30E芯片和常用的89C51單片機實現(xiàn)。采用自制的PCB板對系統(tǒng)的距離測量進行驗證并和單片機單機測量系統(tǒng)測量數(shù)據(jù)進行比較。實驗環(huán)境:室內,室溫:27℃;相對濕度:45%。;距離單位:CM ;根據(jù)距離不同記錄下了9次實驗結果。每次實驗測量數(shù)據(jù)20組(此處省略)取平均值,結果如下表:

數(shù)據(jù)結果表明,在每次實驗的20組數(shù)據(jù)中本系統(tǒng)測量數(shù)據(jù)方差明顯小于單片機單機測量方差;每次實驗中本系統(tǒng)測量數(shù)據(jù)絕對誤差較小,更接近于真值。
5 存在問題及分析
1) 由于空氣湍流可能吹散回波,故超聲波傳感器不適合戶外使用。
2) 40KHZ超聲波波長在1CM左右,如果干擾造成接收電路誤動作造成的誤差至少是1CM。所以接收整形電路的穩(wěn)定性、有效性極其關鍵。40KHZ超聲波適用于測量較長距離。
3) 對于距離不發(fā)生突變的場合,單片機軟件可以利用中值濾波技術減少誤差。
4) 接收整形電路造成的時延也是誤差來源之一。
責任編輯:gt
電子發(fā)燒友App






評論