1引言
以往利用超聲波測量距離往往采用單片機(jī)單機(jī)系統(tǒng)(由單片機(jī)軟件控制發(fā)射、接收及計(jì)數(shù)器的關(guān)停與啟動(dòng)),這種方法所帶來的誤差在厘米級。原因主要有:單片機(jī)計(jì)數(shù)器頻率較低造成的誤差;計(jì)數(shù)與發(fā)射信號由軟件控制動(dòng)作而產(chǎn)生的不同步;超聲波傳感器接收到信號與單片機(jī)檢測到信號之間不同步等。本文給出一種以CPLD為控制核心的基于超聲波測距原理的測量方法。經(jīng)過制版測試,所得結(jié)果提高到毫米級,而且電路原理較為簡單。
2 超聲波測距的原理
超聲波測距的原理一般采用回波測距法,即測量超聲波發(fā)射到遇到障礙物返回的時(shí)間間隔t,然后根據(jù)(1)式計(jì)算距離值。
本文給出的系統(tǒng)以CPLD為核心來控制超聲波的發(fā)射,在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中傳播遇到障礙物時(shí)則返回。當(dāng)CPLD檢測到第一個(gè)反射波時(shí)立即停止計(jì)時(shí),測得時(shí)間t。
3.系統(tǒng)結(jié)構(gòu)及原理
總系統(tǒng)框圖如圖1所示。系統(tǒng)由CPLD控制電路模塊、單片機(jī)控制模塊(包括DS18B20溫度傳感器和顯示部分)和超聲波傳感器模塊(包括信號的發(fā)送,接收與整形)組成。CPLD控制電路模塊通過控制超聲波發(fā)射器發(fā)射超聲波到固定端面,同時(shí)啟動(dòng)高精度計(jì)數(shù)器開始計(jì)數(shù)。超聲波波前經(jīng)反射后由接收端接收,當(dāng)CPLD接收到第一個(gè)反射波信號即停止計(jì)數(shù),并將計(jì)數(shù)器值送入單片機(jī)。單片機(jī)根據(jù)計(jì)數(shù)器值計(jì)算出時(shí)間間隔△T。再經(jīng)過溫度修正計(jì)算出超聲波速度c,最后利用(1)式計(jì)算出發(fā)射器到反射點(diǎn)的距離,并顯示結(jié)果。
3.1 CPLD模塊設(shè)計(jì)
CPLD模塊包括5個(gè)部分,分別為32位計(jì)數(shù)器,40KHZ標(biāo)準(zhǔn)方波發(fā)生器,32-8四選一數(shù)據(jù)選擇器,計(jì)數(shù)器控制電路和一個(gè)簡單的有限狀態(tài)機(jī)。其內(nèi)部框圖如圖1所示。工作原理:有限狀態(tài)機(jī)輸出清零信號CLR后,置START為高電平,D觸發(fā)器在下一個(gè)時(shí)鐘脈沖下降沿置Q端為高電平。使能信號ENA=1控制計(jì)數(shù)器開始計(jì)數(shù),同時(shí)打開緩沖門讓40KHZ方波信號驅(qū)動(dòng)發(fā)射超聲波。整形接收電路對接收器接收到的波前進(jìn)行整形并輸出一高電平到計(jì)數(shù)器控制電路,此低電平作為計(jì)數(shù)器控制電路的時(shí)鐘信號。控制電路在時(shí)鐘信號到達(dá)后STOP引腳輸出一低電平使使能信號ENA=0,關(guān)閉計(jì)數(shù)器和方波驅(qū)動(dòng)的發(fā)送。有限狀態(tài)機(jī)等待單片機(jī)取走計(jì)數(shù)值后開始下一個(gè)循環(huán)計(jì)數(shù)工作。
3.1.1 32位標(biāo)準(zhǔn)頻率計(jì)數(shù)器
此處采用100MHZ的晶體震蕩器作為標(biāo)準(zhǔn)頻率信號源。這一頻率精度影響系統(tǒng)的測量精度。計(jì)數(shù)和發(fā)射動(dòng)作同時(shí)進(jìn)行。因?yàn)橐粋€(gè)脈沖的周期為0.01uS,假定超聲波的速度為0.34mm/uS,一個(gè)脈沖丟失造成的誤差僅為0.0034mm。計(jì)數(shù)器模塊結(jié)構(gòu)簡單,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)機(jī)
狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換圖如圖2所示[4]。和單片機(jī)的握手信號直接取自40KHZ的方波驅(qū)動(dòng)信號,以確保同步性。當(dāng)系統(tǒng)復(fù)位或接收到單片機(jī)發(fā)出的讀數(shù)據(jù)完成信號COMP有效時(shí),狀態(tài)機(jī)進(jìn)入狀態(tài)S1同時(shí)清零并置START為低電平。在下一時(shí)鐘狀態(tài)機(jī)進(jìn)入狀態(tài)S2,同時(shí)置START=1,啟動(dòng)D觸發(fā)器開始發(fā)射方波信號并計(jì)數(shù)。
當(dāng)反射波波前到達(dá)接收電路后計(jì)數(shù)器控制電路使STOP為低電平,此時(shí)狀態(tài)機(jī)進(jìn)入狀態(tài)S3,并向單片機(jī)發(fā)出信號FINISH通知單片機(jī)讀取計(jì)數(shù)器數(shù)據(jù)。有限狀態(tài)機(jī)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計(jì)數(shù)器控制電路
D觸發(fā)器在START信號置1以后,在40KHZ時(shí)鐘信號的上升沿使Q端輸出高電平。同時(shí)此高電平被使能信號送入超聲波發(fā)射器。此波前被固定端面反射后有半波損失,到達(dá)接收應(yīng)產(chǎn)生180度相移。當(dāng)計(jì)數(shù)器控制電路的時(shí)鐘信號由低變?yōu)楦唠娖綍r(shí),在時(shí)鐘信號的上升沿輸出STOP=0,停止計(jì)數(shù)器計(jì)數(shù)。計(jì)數(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ù)選擇信號線由單片機(jī)的兩個(gè)引腳控制。在單片機(jī)兩個(gè)引腳上的不同邏輯組合輸入下,CPLD模塊將32位數(shù)據(jù)逐次送入單片機(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單片機(jī)控制模塊
單片機(jī)控制模塊硬件包括距離顯示、CPLD模塊接口、和讀取溫度三部分。單片機(jī)顯示電路較為簡單,在此不做介紹。單片機(jī)和CPLD模塊接口控制由軟件實(shí)現(xiàn)。由CPLD狀態(tài)機(jī)發(fā)送過來的FINISH信號設(shè)置為外部中斷,單片機(jī)完成一次距離顯示后即開中斷接收下一組計(jì)數(shù)器數(shù)據(jù)。用于溫度補(bǔ)償?shù)臏囟葴y量傳感器采用DALLAS的一線式傳感器DS18B20。它具有接口簡單(僅須一根數(shù)據(jù)線)測量范圍廣、精度高的(在-10℃—85℃內(nèi)精度為±0.5℃)特點(diǎn)。在溫度變化范圍不大的場合單片機(jī)得到溫度值后,可以通過查表實(shí)現(xiàn)聲波在空氣中傳輸速率的測量。
3.3超聲波發(fā)射與接收
本系統(tǒng)采用的超聲波傳感器(換能器)是中心頻率為40KHZ的專用型超聲波探頭T40和R40[5]。因?yàn)槌暡ń邮掌鹘邮盏姆瓷洳ㄐ盘柡芪⑷醪⒑懈蓴_信號,所以必須進(jìn)行放大調(diào)整。接收電路采用了兩級放大電路和波形整形電路,最后輸出到CPLD的計(jì)數(shù)控制電路的時(shí)鐘端CLK。當(dāng)CLK沒有接收到信號變化時(shí),引腳是低電平;接收到第一個(gè)信號是40KHZ方波脈沖信號的上升沿。為了消除干擾,采用了硬件濾波。如圖3所示。超聲波信號經(jīng)電壓提升、放大、整形、濾波后作為時(shí)鐘信號送入CPLD的計(jì)數(shù)器控制模塊。
4系統(tǒng)測試結(jié)果
本系統(tǒng)采用ALTERA公司的的CPLD EP2K30E芯片和常用的89C51單片機(jī)實(shí)現(xiàn)。采用自制的PCB板對系統(tǒng)的距離測量進(jìn)行驗(yàn)證并和單片機(jī)單機(jī)測量系統(tǒng)測量數(shù)據(jù)進(jìn)行比較。實(shí)驗(yàn)環(huán)境:室內(nèi),室溫:27℃;相對濕度:45%。;距離單位:CM ;根據(jù)距離不同記錄下了9次實(shí)驗(yàn)結(jié)果。每次實(shí)驗(yàn)測量數(shù)據(jù)20組(此處省略)取平均值,結(jié)果如下表:
數(shù)據(jù)結(jié)果表明,在每次實(shí)驗(yàn)的20組數(shù)據(jù)中本系統(tǒng)測量數(shù)據(jù)方差明顯小于單片機(jī)單機(jī)測量方差;每次實(shí)驗(yàn)中本系統(tǒng)測量數(shù)據(jù)絕對誤差較小,更接近于真值。
5 存在問題及分析
1) 由于空氣湍流可能吹散回波,故超聲波傳感器不適合戶外使用。
2) 40KHZ超聲波波長在1CM左右,如果干擾造成接收電路誤動(dòng)作造成的誤差至少是1CM。所以接收整形電路的穩(wěn)定性、有效性極其關(guān)鍵。40KHZ超聲波適用于測量較長距離。
3) 對于距離不發(fā)生突變的場合,單片機(jī)軟件可以利用中值濾波技術(shù)減少誤差。
4) 接收整形電路造成的時(shí)延也是誤差來源之一。
責(zé)任編輯:gt
評論