摘 要:本文通過分析單片機系統(tǒng)在超聲波測距過程中所出現(xiàn)的問題和原因,提出采用CPLD可編程邏輯器件專門用來測距,測距中的時間是通過高精度的晶體振蕩器作為時鐘信號源來進行計數(shù)的,可實現(xiàn)高精度和同步測量。
關鍵詞:CPLD 超聲波測距 高精度 同步
Design and Application of CPLD in the ultrasonic ranging system
Abstact:In this paper,by analyzing the problems and causes of the single-chip system in the ultrasonic ranging process,using specially the programmable logic device CPLD to rang is put forward.Time in ranging is through high-precision crystal oscillator as a clock signal Sources to count, carrying out high-precision and synchronous measurement.
Keywords:CPLD, the ultrasonic ranging, high-precision,synchronize
引言
超聲波測距是一種非接觸測量方法,超聲波具有頻率高、波長短、指向性強、能量消耗緩慢、傳播距離較遠、不受電磁干擾、回波表現(xiàn)穩(wěn)定,測量精度高等優(yōu)點,利用超聲波檢測往往比較迅速、方便、計算簡單、易于實時控制, 所以通常采用超聲波測距裝置進行距離檢測。
以往采用單片機系統(tǒng)進行超聲波測距,由軟件控制實現(xiàn)超聲波信號的發(fā)射、接收及計數(shù)器的啟動與停止。這就導致超聲波信號的發(fā)射與計數(shù)器的啟動不同步,超聲波傳感器接收到信號與單片機檢測到信號之間不同步,又因為單片機的計數(shù)頻率較低,所以單片機系統(tǒng)的測距誤差一般為厘米級。這樣就不能滿足精確測量的要求了。
本文采用CPLD完成超聲波的發(fā)射和接收,并精確記錄回波時間,克服了單片機的速度限制,不但可以使記錄回波的時間精確到nS級而且可以實現(xiàn)同步測量,這樣就可以滿足高精度工程測量的要求。
1 CPLD模塊的原理框圖及功能
CPLD模塊主要由發(fā)射模塊,16位計時計數(shù)器模塊,接收模塊,順序執(zhí)行計數(shù)器模塊和六選一數(shù)據(jù)選擇器模塊五部分組成。其總體框圖如圖1所示。
CPLD模塊主要完成超聲波的發(fā)射、接收和時間的測量。超聲波發(fā)射模塊啟動125KHz的超聲波發(fā)射,當發(fā)射脈沖串達到設定值后,關閉超聲波的發(fā)射,同時啟動六路計時計數(shù)器模塊開始計時;信號經(jīng)過障礙物反射回來,接收電路接收到回波后,將其進行整形,作為接收模塊的信號,當接收完回波脈沖信號后,接收模塊輸出端發(fā)出信號,關閉計時計數(shù)器停止工作;當所有的回波接收完畢后,順序執(zhí)行計數(shù)器輸出端發(fā)出信號啟動單片機開始接收數(shù)據(jù),通過順序執(zhí)行計數(shù)器的計數(shù)值、數(shù)據(jù)選擇器的選擇端與計時計數(shù)器的控制端分別讀取六路不同的計數(shù)值。所有的數(shù)據(jù)讀取完后,清除計時計數(shù)器的計數(shù)值,準備下一次的循環(huán)計數(shù)。
[align=center]

圖1 CPLD系統(tǒng)原理框圖[/align]
2 CPLD系統(tǒng)各功能模塊設計
2.1 發(fā)射模塊設計
2.1.1端口說明:
CLK: 輸入口,接晶振時鐘。
CLR: 輸入口,單片機讀取所有的計時計數(shù)器計數(shù)值后清除CPLD內(nèi)部所有計數(shù)器,使其恢復初態(tài)。
START:輸入口,使模塊開始輸出125KHz的方波。
SEND:輸出口,輸出125KHz的方波。
SENDFINIS:輸出口,輸出一定數(shù)量的脈沖串之后,輸出一高電平,用來啟動計時計數(shù)器開始計數(shù)。
[align=center]

圖2 超聲波發(fā)射模塊[/align]
2.1.2功能:
晶振經(jīng)過分頻器分頻得到發(fā)射頻率為125KHz的方波,當單片機發(fā)出控制信號START=1時,開啟125KHz的方波開始發(fā)射。當發(fā)完脈沖串之后,SENDFINISH由低變?yōu)楦唠娖?,作為計時計數(shù)器的觸發(fā)脈沖,用來啟動計時計數(shù)器開始計數(shù)。
2.2 接收模塊設計
2.2.1端口說明
REVCLK:輸入口,接收回波信號輸入端。
CLR:輸入口,所有計時計數(shù)器數(shù)據(jù)送入單片機后,使CPU內(nèi)部的所有計數(shù)器計數(shù)值清零。
REVCOUNT:輸出口,接收完回波信號后,輸出高電平,關閉計時計數(shù)器計時。
[align=center]

圖3 超聲波接收模塊[/align]
2.2.2功能:
接收模塊接收完回波信號后,判斷其計數(shù)值與發(fā)射的脈沖串數(shù)值是否相同,若相同,RECOUNT關閉計時計數(shù)器,反之,則輸出狀態(tài)不變。
2.3 計時計數(shù)器模塊設計
2.3.1端口說明:
A:輸入口,數(shù)據(jù)選擇端,A=0/1時,分別讀計時計數(shù)器的高/低8位。
CONCLK:輸入口,讀取計時計數(shù)器值的控制端口;
CLK:輸入口,接晶振時鐘。
CLR:輸入口,所有計時計數(shù)器數(shù)據(jù)送入單片機后,使CPU 內(nèi)部的所有計數(shù)器計數(shù)值清零。
SEND:輸入口,輸入高電平,用來啟動計時計數(shù)器開始計時。
REV:輸入口,接收模塊接收完回波信號后,輸入高電平,關閉計時計數(shù)器。
CE:輸入口,使能將六路計數(shù)值分別送到數(shù)據(jù)總線。
DB[0…7]:輸出口,將計時計數(shù)器值送入單片機。
[align=center]

圖4計時計數(shù)器模塊[/align]
2.3.2功能:
晶振時鐘通過分頻得到計數(shù)頻率,作為16位計時計數(shù)器的時鐘脈沖。當SEND為高電平時,啟動計時計數(shù)器開始計數(shù),REV為高電平時,關閉計時計數(shù)器停止計數(shù)。由于其計數(shù)值為16位二進制數(shù),將其送入8位單片機處理,通過控制端口A的高低電平,將16位計數(shù)值分為高、低8位,結合CE與CONCLK兩個端口來依次將其16位計數(shù)值通過數(shù)據(jù)總線送入單片機。
2.4 順序執(zhí)行計數(shù)器模塊設計
2.4.1端口說明
REVCOUNT A…F: 輸入口,接收模塊接收完信號后,輸出高電平,使送數(shù)模塊FINISH端口通知單片機開始接收數(shù)據(jù)。
RDCLK:輸入口,單片機依次讀取計時計數(shù)器的計數(shù)值的脈沖信號。
CE1-CE6:輸出口,給相應的計時計數(shù)器模塊使能。
FINISH :輸出口,啟動單片機準備接收數(shù)據(jù)。
[align=center]

圖5 順序執(zhí)行計數(shù)器模塊[/align]
2.4.2功能:
所有的接收模塊接收完數(shù)據(jù)后,F(xiàn)INISH端口輸出高電平,以觸發(fā)單片機使單片機處于接收數(shù)據(jù)狀態(tài),單片機發(fā)出信號給送數(shù)模塊RDCLK端口,使順序執(zhí)行計數(shù)器開始計數(shù),計數(shù)值每次加1,輸出端口便使能相應的計時計數(shù)器,單片機便從相應的計時計數(shù)器中讀取計數(shù)值。選取計時計數(shù)器的順序如表1所列。
表1 選取計時計數(shù)器的順序
2.5 順序執(zhí)行計數(shù)器模塊設計
2.5.1端口說明:
A2、A1、A0:輸入口,各路計時計數(shù)器的選擇端。
DB[7…0]:輸出口,將計時計數(shù)器值送入單片機。
X0[7…0]-X5[7…0]:各路計時計數(shù)器的計數(shù)值。
[align=center]

圖6 數(shù)據(jù)選擇器模塊[/align]
2.5.2功能:
通過數(shù)據(jù)選擇器的選擇端A2、A1、A0分別選擇六路計時計數(shù)器,然后通過DB[7…0]將計數(shù)值送給單片機。選取計數(shù)值的順序如表2所列。
表2 選取計數(shù)值的順序
3.單片機讀取數(shù)據(jù)
本系統(tǒng)模塊主要是為了實現(xiàn)125KHz的超聲波的發(fā)射與接收,以及六路超聲波從發(fā)射到接收之間時間的測量,最后通過單片機控制信號將其計數(shù)值通過數(shù)據(jù)總線讀出,送到單片機中。但是為了能準確的讀取數(shù)據(jù),其讀取計數(shù)值的執(zhí)行過程如下:
(1) 當順序執(zhí)行計數(shù)器模塊的端口FINISH=1 時,通知單片機準備接受數(shù)據(jù)。
?。?) 通過A2、A1、A0選擇數(shù)據(jù)選擇器要讀取的計時計數(shù)器的計數(shù)值。
(3) 由RDCLK的脈沖輸入來選通計時計數(shù)器。
?。?) 通過A來選通所要輸出計時計數(shù)器計數(shù)值的高低8位。
?。?) 通過控制信號CONCLK來讀取高低8位數(shù)值。
結 語
采用CPLD可編程邏輯器件來測距,系統(tǒng)反應時間在nS級,有效地提高了系統(tǒng)精度,滿足了精確測距要求,另外6路超聲波傳感器同時工作,實現(xiàn)了數(shù)據(jù)的同步采集。為超聲波在精密測量領域的應用和推廣提供了一種可能。
參考文獻:
[1]程鐵棟 楊麗榮. CPLD和單片機的高精度超聲測距系統(tǒng)[J].單片機與嵌入式系統(tǒng)應用,2005:17-19.
[2]葛健強. 基于CPLD的超聲波測距儀研制[J].無錫商業(yè)職業(yè)技術學院學報,2004,4(3):8-10.
[3]邊計年. 數(shù)字邏輯與VHDL設計[M].北京:清華大學出版社,2005.