南通開放大學(xué) 江蘇城市職業(yè)學(xué)院南通校區(qū) 顧添翼
基于STC89C52超聲波測(cè)距儀設(shè)計(jì)
南通開放大學(xué)江蘇城市職業(yè)學(xué)院南通校區(qū)顧添翼
在現(xiàn)有的測(cè)距方案中,超聲波測(cè)距是目前應(yīng)用最為普遍的一種,它廣泛應(yīng)用于倒車?yán)走_(dá)、水位測(cè)量、防盜、建筑施工工地等一些工業(yè)現(xiàn)場(chǎng)。本系統(tǒng)以STC89C52最小系統(tǒng)為核心,主要部件有超聲波發(fā)射接收器、檢波接收芯片CX20106A以及數(shù)碼管顯示部分等,實(shí)現(xiàn)了測(cè)距以及簡(jiǎn)單的方位判斷功能。
超聲波傳感器;測(cè)距;CX20106A;STC89C52單片機(jī)
1.1系統(tǒng)的工作原理
超聲波測(cè)距是利用超聲波波長(zhǎng)較短,其繞射能力較差,反射能力較強(qiáng)的特性,使超聲波發(fā)射器向某一方向發(fā)射超聲波,并且在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中傳播時(shí)碰到障礙物就立即返回來(lái),當(dāng)超聲波接收器收到反射波就立即停止計(jì)時(shí)。由此假設(shè)超聲波在空氣中的傳播速度為v,根據(jù)記錄的發(fā)射超聲波和接收發(fā)射波的時(shí)間差t,即可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離s為:s=(v×t)/2。
1.2系統(tǒng)的組成
該系統(tǒng)由單片機(jī)控制系統(tǒng)、超聲波發(fā)生電路、超聲波接收處理電路和顯示電路等構(gòu)成。單片機(jī)是整個(gè)系統(tǒng)的核心部件,它協(xié)調(diào)和控制各部分電路的工作。工作過(guò)程:開機(jī),單片機(jī)復(fù)位,然后控制程序使單片機(jī)產(chǎn)生的多個(gè)40KHz的方波信號(hào)加到超聲波傳感器上,觸發(fā)超聲波發(fā)射器發(fā)射超聲波。在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波立即立即停止計(jì)時(shí),并經(jīng)過(guò)超聲波接收電路的處理產(chǎn)生一個(gè)低電平觸發(fā)單片機(jī)的外部中斷0,然后單片機(jī)進(jìn)行中斷處理,通過(guò)計(jì)算將測(cè)出的結(jié)果以十進(jìn)制送數(shù)碼管顯示。系統(tǒng)原理框圖如圖1所示。
圖1.1 系統(tǒng)原理框圖
2.1單片機(jī)最小系統(tǒng)
2.1.1 主控芯片STC89C52簡(jiǎn)介
本系統(tǒng)選用的是STC89C52系列的單片機(jī),它是一種帶8K字節(jié)閃爍可編程、高性能、低功耗、采用CMOS工藝的8位微處理器。STC89系列單片機(jī)大部分具有在系統(tǒng)可編程(ISP)特性,可以省去購(gòu)買通用編程器的麻煩。此外由于一般的距離測(cè)量中,距離的變化速度并不太快,而且單片機(jī)us級(jí)的精度完全可以滿足系統(tǒng)測(cè)量的要求,并且成本較低。STC89C52引腳圖如圖2.1所示。
VCC(Pin40):電源輸入,接+5V電源VSS(Pin20):接地線
XTAL1(Pin19):片內(nèi)振蕩電路的輸入端XTAL2(Pin18):片內(nèi)振蕩電路的輸出端RST(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。
EA(Pin31):訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)。為使能從0000H到FFFFH的外部程序存儲(chǔ)器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。
圖2.1 STC89C52引腳圖
PO口(Pin39~Pin32):P0.0~P0.7。P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。
P1口(Pin1~Pin8):P1.0~P1.7。P1口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P1口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。
P2口(Pin21~Pin28):P2.0~P2.7。P2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P2端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。
P3口(Pin10~Pin17):P3.0~P3.7。P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P3端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。
2.1.2時(shí)鐘電路
本系統(tǒng)采用的是內(nèi)部時(shí)鐘方式,在XTAL1和XTAL2引腳上外接12MHZ石英晶體和兩個(gè)20pF電容組成并聯(lián)諧振回路,使單片機(jī)內(nèi)部振蕩器產(chǎn)生自激振蕩。
2.1.3復(fù)位電路
本系統(tǒng)中采用上電/按鍵手動(dòng)復(fù)位,除了具有上電自動(dòng)復(fù)位功能外,若工作過(guò)程中需要復(fù)位,只需按復(fù)位鍵,在RESET端就產(chǎn)生一個(gè)復(fù)位高電平。
2.2超聲波發(fā)射電路設(shè)計(jì)
本系統(tǒng)利用軟件程序產(chǎn)生40KHz方波信號(hào),由單片機(jī)P1.0端口輸出,將方波信號(hào)經(jīng)反響器加到超聲波換能器的兩端,提高超聲波發(fā)射強(qiáng)度。超聲波發(fā)射電路原理圖如圖2.2所示。
圖2.2 超聲波發(fā)射電路原理圖
2.3超聲波接收電路設(shè)計(jì)
超聲波接收電路包括超聲波接收探頭和CX20106A處理兩部分。超聲波接收探頭與發(fā)射探頭型號(hào),頻率一致。CX20106是一款紅外線檢波接收的芯片,它由前置放大器、檢波器、帶通濾波器、限幅放大器、積分整型電路等組成,其中濾波器中心頻率為30K-60KHz。CX20106更多的被用于電視機(jī)紅外遙控接收器,這里由于紅外遙控常用的載波頻率38kHz與測(cè)距超聲波頻率40kHz較為接近,所以本系統(tǒng)中就可以利用它來(lái)進(jìn)行超聲波檢測(cè),并且該芯片內(nèi)集成前置放大器,可以用來(lái)將超聲波接收器是輸出的毫伏級(jí)電壓進(jìn)行放大,以觸發(fā)單片機(jī)中斷處理。超聲波接收電路原理圖如圖2.3所示。
圖2.3 超聲波接收電路原理圖
2.4顯示電路設(shè)計(jì)
本系統(tǒng)的測(cè)量結(jié)果采用十進(jìn)制數(shù)通過(guò)LED數(shù)碼管顯示。利用P0口的低電平驅(qū)動(dòng)方式。為增強(qiáng)其驅(qū)動(dòng)能力,加入了74LS240反相器。數(shù)碼管的位選通過(guò)P2口來(lái)進(jìn)行選擇,同樣的,為了增強(qiáng)I/O口引腳驅(qū)動(dòng)能力,在P2口與數(shù)碼管公共端之間接入與門集成芯片SN75451(該芯片驅(qū)動(dòng)能力比較強(qiáng),輸出電流可達(dá)幾百mA),如圖2.4所示。
圖2.4 顯示電路原理圖
軟件設(shè)計(jì)運(yùn)用模塊化程序設(shè)計(jì)思想,對(duì)不同功能的程序進(jìn)行分別編程,主要包含主函數(shù)程序,超聲波發(fā)生子程序,超聲波接收程序(中斷處理)以及顯示子程序。
3.1主程序設(shè)計(jì)
在主程序中,首先對(duì)系統(tǒng)環(huán)境初始化,其中包含對(duì)定時(shí)器,中斷以及所涉及的I/O端口設(shè)置。然后進(jìn)入主程序循環(huán)體,調(diào)用超聲波發(fā)生子程序來(lái)發(fā)出超聲波,等待聲波遇到障礙物將反射回來(lái),需要特別說(shuō)明的是主函數(shù)中引入了變量flag用來(lái)區(qū)分以下三種情況,當(dāng)無(wú)中斷產(chǎn)生時(shí),flag=0;當(dāng)因?yàn)榻邮盏匠暡ǚ祷匦盘?hào)而產(chǎn)生的中斷時(shí),flag=1;當(dāng)因?yàn)橛?jì)時(shí)器溢出時(shí)還未檢測(cè)到超聲波返回信號(hào)而產(chǎn)生的溢出中斷時(shí),flag=2。因此當(dāng)接收到返回的超聲波信號(hào)時(shí)程序?qū)⑦M(jìn)入相應(yīng)的中斷處理,并且flag標(biāo)志將被置1,通過(guò)計(jì)算得到障礙物的距離。最后調(diào)用顯示子程序?qū)⒔Y(jié)果以十進(jìn)制送LED顯示。
3.2超聲波發(fā)生子程序
在超聲波發(fā)生程序中主要完成產(chǎn)生40KHz的方波信號(hào)的功能,用幾個(gè)空操作語(yǔ)句進(jìn)行延時(shí),每隔半周期時(shí)間,將方波輸出腳的電平取反,便可產(chǎn)生40kHz方波。此外由于測(cè)量盲區(qū)的存在,發(fā)射脈沖個(gè)數(shù)也需要仔細(xì)考慮,脈沖個(gè)數(shù)少,可以提高測(cè)量精度,但減少了發(fā)射能量減小了測(cè)距量程,脈沖個(gè)數(shù)過(guò)多會(huì)增大測(cè)量盲區(qū),在設(shè)計(jì)中經(jīng)過(guò)比較,選擇發(fā)射5個(gè)40KHz的脈沖方波作為測(cè)量信號(hào)。實(shí)踐證明此時(shí)的可測(cè)范圍在6cm至4m左右。
3.3超聲波接收子程序
超聲波接收子程序即中斷處理程序,主要是當(dāng)接收到反射波時(shí)(即INT0引腳出現(xiàn)低電平),單片機(jī)立即響應(yīng)外中斷的請(qǐng)求,進(jìn)入對(duì)應(yīng)的中斷服務(wù)程序,其中包含關(guān)閉定時(shí)器T0,關(guān)閉T0的中斷允許位(ET0)和外部中斷0中斷允許位(EX0),并將標(biāo)志位flag賦值1,表示本次測(cè)距成功。如果當(dāng)計(jì)數(shù)器溢出時(shí)還未檢測(cè)到反射波,則進(jìn)入相應(yīng)的定時(shí)器0中斷的中斷服務(wù)程序,其中包含關(guān)閉定時(shí)器和中斷,并將標(biāo)志位flag賦值2,表示本次測(cè)距失敗。
圖4.1?。?) 實(shí)物測(cè)試圖左
圖4.1 (2) 實(shí)物測(cè)試圖右
在檢查完電路焊接,排除短路斷路等情況后,接通電源,按下復(fù)位鍵將系統(tǒng)復(fù)位,然后將所有程序燒到芯片后,在距離超聲波探頭適當(dāng)?shù)奈恢糜檬终趽酰⑶仪昂笠苿?dòng),觀察數(shù)碼管上顯示的數(shù)字與實(shí)際距離是否相符。在測(cè)試完畢之后就可進(jìn)行實(shí)際的測(cè)距,若要實(shí)現(xiàn)簡(jiǎn)單的方位判斷,只需在超聲波發(fā)射探頭的另一邊再增加一個(gè)超聲波接收探頭,然后比較一下左右兩個(gè)接收探頭接收回波信號(hào)的所耗時(shí)間即可。
測(cè)試結(jié)果:系統(tǒng)能很好的發(fā)射和接收超聲波信號(hào),可實(shí)現(xiàn)大約17cm至400cm范圍內(nèi)的距離測(cè)量,并且可以實(shí)現(xiàn)障礙物相對(duì)于超聲波發(fā)生方位的簡(jiǎn)單判斷。實(shí)物測(cè)試圖如圖4.1所示。
[1]馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京航天航空大學(xué)出版社,2001.
[2]劉瑞星.單片機(jī)原理及應(yīng)用教程[M].機(jī)械工業(yè)出版社,2006.
[3]趙珂.高準(zhǔn)確度超聲波測(cè)距儀的研制[J].傳感器技術(shù),2003,22(2).
[4]藏日章.基于AT89C51單片機(jī)的超聲波測(cè)距系統(tǒng)[J].電氣時(shí)代,2005(7).
[5]牛余朋.基于單片機(jī)的高精度超聲波測(cè)距電路[J].電子世界,2005(5).
[6]姜道連.用AT89C2051設(shè)計(jì)超聲波測(cè)距儀[J].維普資訊,編號(hào):00121.
[7]胡萍.超聲波測(cè)距儀的研制[J].計(jì)算機(jī)與現(xiàn)代化,2003(10):10062 2475(2003)1020054203.
[8]吳銀鳳.紅外線接收電路CX20106的應(yīng)用[J].電氣時(shí)代,2003(9).
[9]馬殷元.基于新型單片機(jī)P89C51RD2的倒車?yán)走_(dá)設(shè)計(jì)[J].甘肅科技,2004,20(9).
[10]劉鳳然.基于單片機(jī)的超聲波測(cè)距系統(tǒng)[J].傳感器世界,2001,5.
顧添翼(1989—),女,碩士,研究方向:電路與系統(tǒng),嵌入式系統(tǒng)設(shè)計(jì)。