王懿川/上海師范大學(xué)天華學(xué)院
超聲波具有定向性好、能量集中、在傳輸過程中衰減較小、反射能力較強等優(yōu)點,超聲波傳感器可廣泛應(yīng)用于非接觸式檢測方法,因而采用仿真技術(shù)進行超聲波測距。
目前國內(nèi)的超聲波測距專用集成電路都是只有厘米級的測量準(zhǔn)確度。通過分析超聲波測距誤差產(chǎn)生的原因,提高測量時間差到微秒級,以及用LM92溫度傳感器進行聲波傳播速度的補償后,設(shè)計的高準(zhǔn)確度超聲波測距儀能達到毫米級的測量準(zhǔn)確度。
如圖1所示,使單片機可接收超聲波模塊輸出的距離信號,并對其進行合理的處理后,在顯示模塊上實時顯示超聲波模塊與障礙物的距離。
圖1 系統(tǒng)連接示意
單片機發(fā)出40 kHz的方波信號,經(jīng)放大后通過超聲波發(fā)射器輸出;超聲波接收器將接收到的超聲波信號經(jīng)放大器放大,用鎖相環(huán)電路進行檢波處理后,啟動單片機中斷程序,測得時間為t。再通過軟件編程進行判別、計算,得出所測距離值并由LED數(shù)碼管顯示,其原理框圖如圖2。
發(fā)射器發(fā)出的超聲波以速度v在空氣中傳播,在到達被測物體時被反射返回,由接收器接收,其往返時間為t。由公式:測出的距離 L (m)=常溫下的聲速340 (m/s)×感應(yīng)時間t (s)/ 2,算出被測物體的距離。由于超聲波也是一種聲波,其聲速v與溫度有關(guān),如果溫度變化不大,則可認為聲速是基本不變的。如果測距準(zhǔn)確度要求很高,則應(yīng)通過溫度補償?shù)姆椒右孕拚?/p>
單片機在 T0時刻發(fā)射方波,同時啟動定時器開始計時,當(dāng)收到回波后,產(chǎn)生一個負跳變到單片機中端口,單片機響應(yīng)中斷程序,定時器停止計數(shù)。計算時間差,即可得到超聲波在介質(zhì)中傳播的時間t ,由此便可計算出距離。其時序圖如圖3所示。
硬件電路的設(shè)計主要包括單片機系統(tǒng)及顯示電路、超聲波發(fā)射電路和超聲波檢測接收電路三部分。單片機采用STC89C51或其兼容系列。采用12 MHz高準(zhǔn)確度的晶振,以獲得較穩(wěn)定時鐘頻率,減小測量誤差。單片機用P2.4端口輸出超聲波換能器所需的40 kHz的方波信號,利用外中斷0口監(jiān)測超聲波接收電路輸出的返回信號。顯示電路采用簡單實用的4位共陽LED數(shù)碼管,段碼用程序驅(qū)動,位碼用PNP三極管驅(qū)動。
圖3 超聲波時序圖
STC89C51芯片引腳與封裝如圖4所示。
圖4 STC89C51引腳
引腳功能說明:
(1)VCC:電源電壓。
(2)GND:接地。
(3)RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。
(4)/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。
(5)XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
(6)XTAL2:來自反向振蕩器的輸出。
(7)P0口:P0口為一個8位漏級開路雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每腳可吸收8TTL門電流。
(8)P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能吸收或輸出4TTL門電流。
(9)P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可吸收或輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。
(10)P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可吸收或輸出4個TTL門電流。
P3口也可作為AT89C52的一些特殊功能口,如表1所示。
表1 P3特殊功能口
P3口同時為閃爍編程和編程校驗接收一些控制信號。
(11)ALE//PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。
(12)/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。
超聲波發(fā)射電路原理如圖5所示。輸出端采用兩個反向器并聯(lián),用以提高驅(qū)動能力。上位電阻R10、R11一方面可以提高反向器74LS04輸出高電平的驅(qū)動能力,另一方面可以增加超聲波換能器的阻尼效果,縮短其自由振蕩時間。
集成電路CX20106A是一款紅外線檢波接收的專用芯片??紤]到紅外遙控常用的載波頻率38 kHz與測距的超聲波頻率40 kHz較為接近,可以利用它制作超聲波檢測接收電路(如圖6)。實驗證明用CX20106A接收超聲波(無信號時輸出高電平),具有很好的靈敏度和較強的抗干擾能力。
圖5 超聲波發(fā)射電路原理圖
圖6 超聲波檢測接收電路
顯示電路采用簡單實用的4位共陽LED數(shù)碼管,段碼用74LS244驅(qū)動,位碼用PNP三級管驅(qū)動。接P2.1引腳的為個位顯示數(shù)碼管,其小數(shù)點在P2.1有效時顯示,此功能由軟件來完成。
系統(tǒng)應(yīng)具備測距啟動功能,可以復(fù)位系統(tǒng),使其開始重新測距。
綜上所述,本系統(tǒng)的特點是利用單片機控制超聲波的發(fā)射和對超聲波自發(fā)射至接收往返時間的計時,單片機選用STC89C52,經(jīng)濟易用,且片內(nèi)有8K的ROM,便于編程。電路原理如圖7 所示。
系統(tǒng)軟件設(shè)計采用模塊化設(shè)計,主要包括主程序設(shè)計、T0中斷服務(wù)子程序、外部中斷服務(wù)子程序、距離計算子程序、LED顯示子程序設(shè)計等。主程序首先是對系統(tǒng)環(huán)境初始化,設(shè)置定時器T0工作模式為16位定時計數(shù)器模式。置位總中斷允許位EA并給顯示端口P0和P2清0。
圖7 電路原理
然后調(diào)用超聲波發(fā)生子程序送出一個超聲波脈沖,為了避免超聲波從發(fā)射器直接傳送到接收器引起的直射波觸發(fā),需要延時約0.1 ms,然后才打開外中斷0接收返回的超聲波信號。
測出距離后結(jié)果將以十進制BCD碼方式送往LED顯示約0.5 s,然后再發(fā)超聲波脈沖重復(fù)測量過程。為了有利于程序結(jié)構(gòu)化和容易計算出距離,主程序采用C語言編寫。
·系統(tǒng)控制初始化LED、初始化計數(shù)控制部分,清除計數(shù)值。
·單片機超聲波脈沖信號。
·立刻置INT0為1,打開計時器,等待回波信號。
·回波信號到達,關(guān)閉計時器,P3.3為0,清 INT0為0。
·單片機讀出計數(shù)值。
·單片機將計數(shù)值進行計算后得出的距離值,顯示在LED上。
·當(dāng)測量距離<10.0 cm或>50.0 cm時,報警系統(tǒng)燈亮。
·當(dāng)按下復(fù)位鍵時,啟動復(fù)位功能。
主程序流程圖如圖8所示。
圖8 主程序流程
超聲波發(fā)生子程序的作用是通過P3.3端口發(fā)送2個左右頻率約40 kHz的方波的超聲波脈沖信號,同時把計數(shù)器T0打開進行計時。定時中斷子程序如圖9所示。
圖9 定時中斷服務(wù)子程序
如圖10所示,通過數(shù)碼管顯示測出距離為14.3 cm,屬于10.0 ~ 50.0 cm正常范圍。
圖10 超聲波測距正常范圍
如圖11所示,超聲波測出的距離為9.4 cm,<10.0 cm,報警系統(tǒng)啟動,LED燈亮。
圖11 超聲波測距<10.0 cm
如圖12所示,超聲波測出的距離為50.3 cm,> 50.0 cm,報警系統(tǒng)啟動,LED燈亮。
圖12 超聲波測距大于50.0 cm
如圖13所示,按下鍵盤模塊中的按鍵,復(fù)位系統(tǒng),數(shù)碼管顯示距離數(shù)歸零。
圖13 啟動復(fù)位功能
[1]沙占友.集成化智能傳感器原理與應(yīng)用[M].北京:電子工業(yè)出版社,2004.
[2]吳研,劉蘇莉,盧日萬.超聲波倒車雷達系統(tǒng)設(shè)計[J].工業(yè)控制技術(shù),2005(6):88-90.
[3]肖景和,趙健.紅外線熱釋電與超聲波遙控電路[M].北京:人民郵電出版社,2003.
[4]沈紅衛(wèi). 基于單片機智能系統(tǒng)的設(shè)計與實現(xiàn)[M].北京:電子工業(yè)出版社,2005.
[5]賴壽宏.微型計算機控制技術(shù)[M].北京:機械工業(yè)出版社,2002.
[6]尤一鳴. 傅景義,王俊省. 單片機總線擴展技術(shù),1版[M].北京:北京航空航天大學(xué)出版社,1993.