基于STC89C52單片機(jī)的超聲波測距系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
超聲波有以下特點(diǎn):速度小,傳播時(shí)間容易檢測;頻率高,反射性強(qiáng),繞射性弱;傳播距離較遠(yuǎn);對光線和電磁場不敏感等。利用超聲波的這些優(yōu)點(diǎn),結(jié)合微電子技術(shù),超聲波測距技術(shù)應(yīng)運(yùn)而生。與激光測距、紅外線測距等相比,超聲波測距更適于電磁干擾強(qiáng),煙霧等惡劣環(huán)境中。而且,超聲波測距技術(shù)設(shè)計(jì)方便、精度較高。超聲波測距技術(shù)的優(yōu)勢,使它有著廣泛的應(yīng)用,比如:建筑施工工地,液位測量,車輛導(dǎo)航等。傳統(tǒng)的超聲波測距系統(tǒng)采用的電路結(jié)構(gòu)比較復(fù)雜,且當(dāng)回波信號過于微弱時(shí),測量誤差會加大。在系統(tǒng)接收電路中采用的增益控制部分能有效地解決這一難題。
超聲波測距的方法很多,有相位檢測法,幅值檢測法和渡越時(shí)間法等。系統(tǒng)采用的是渡越時(shí)間法TOF(Time of Flight)。原理如下:發(fā)射換能器在一端向某一方向發(fā)射超聲波,同時(shí)計(jì)時(shí)器開始計(jì)時(shí)。超聲波在傳播過程中遇到障礙物被反射回來,接收換能器接收到反射回來的超聲波,此時(shí)結(jié)束計(jì)時(shí)。假設(shè)計(jì)時(shí)時(shí)間為t,超聲波的傳播速度為n,則從換能器到障礙物之間的距離d為超聲波往返距離的一半。其中超聲波傳播速度n與環(huán)境溫度T有關(guān)。系統(tǒng)使用單片機(jī)的定時(shí)器對超聲波的往返時(shí)間進(jìn)行準(zhǔn)確計(jì)時(shí)。采用溫度傳感器測量溫度,并將所得溫度經(jīng)A/D轉(zhuǎn)換,變?yōu)閿?shù)字量后,送入控制器,由軟件對超聲波速度進(jìn)行溫度補(bǔ)償處理。
1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)由單片機(jī)主控部分和超聲波測距部分組成,結(jié)構(gòu)如圖1所示。主控部分包括單片機(jī)控制模塊、液晶顯示模塊、溫度補(bǔ)償模塊和串口通信模塊。超聲波測距部分包括超聲波發(fā)射模塊和接收模塊。
單片機(jī)控制模塊通過控制發(fā)射換能器發(fā)射超聲波到固定端面,同時(shí)啟動定時(shí)器開始計(jì)時(shí)。超聲波經(jīng)反射后由接收換能器接收,當(dāng)單片機(jī)控制模塊接收到第一個(gè)反射波信號即停止計(jì)時(shí)。單片機(jī)根據(jù)計(jì)時(shí)器值計(jì)算出時(shí)間間隔t。溫度補(bǔ)償模塊采集數(shù)字溫度,根據(jù)公式(1)計(jì)算出超聲波速度v。
其中T是空氣介質(zhì)的溫度(℃)。在測量精度要求較高的場合,需要采用溫度補(bǔ)償?shù)姆绞綄Τ暡ǖ乃俣刃U?/p>
最后利用公式(2)計(jì)算出換能器到障礙物之間的距離d。
液晶顯示模塊顯示當(dāng)前的溫度值T和計(jì)算所得的距離d。串口通信模塊可以通過串口在線下載單片機(jī)程序。
1.1 主控部分
1.1.1 單片機(jī)控制模塊
單片機(jī)控制模塊為系統(tǒng)的核心控制單元。單片機(jī)STC89C52的INT1/P3.3端口用于輸出發(fā)射器所需的40 kHz方波信號,INT0/P3.2端口用于檢測接收器輸出的返回信號。液晶顯示電路采用LCD1602,使用單片機(jī)的P0口和P2口完成顯示功能。RXD/P3.0和TXD/P3.1端口用于串口數(shù)據(jù)的接收與發(fā)送。P1.2和P1.3分別為超聲波的接收與發(fā)送使能端口。P3.4端口用于接收從溫度傳感器DS18B20獲取的溫度信息。
1.1.2 溫度補(bǔ)償模塊
由(1)式可知,溫度對聲速的影響較大。為了提高系統(tǒng)的測量精度,增加了溫度補(bǔ)償模塊。其中的溫度傳感器采用的是DALLAS公司生產(chǎn)的數(shù)字式溫度傳感器DS18B20。硬件接口簡單,性能穩(wěn)定,僅需一根接口線與單片機(jī)連接;測量溫度范圍為-55~+125 ℃;溫度數(shù)字量轉(zhuǎn)換時(shí)間為200 ms(典型值);適合于惡劣環(huán)境的現(xiàn)場溫度測量。
DS18B20的管腳2與單片機(jī)P3.4接口相連,單片機(jī)通過此管腳以串行傳送方式讀取測溫結(jié)果。依靠上拉電阻提供電源,以達(dá)到DS18B20工作電流為1 mA的要求。根據(jù)所測溫度值,利用公式(1)對超聲波的速度進(jìn)行校正。
1.1.3 液晶顯示模塊
液晶顯示模塊用于顯示當(dāng)前的環(huán)境溫度和測得的距離值。顯示器件LCD1602的優(yōu)點(diǎn)是微功耗、體積小、顯示內(nèi)容豐富。它識別的是ASCII碼,可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值。
單片機(jī)的P0口和P2口與液晶模塊相連,其中P0.0~P0.7端口用于LCD1602的數(shù)據(jù)輸出,P2.0~P2.2端口分別用于顯示模塊的數(shù)據(jù)命令選擇,讀寫選擇和使能控制。R6和R7分別用于調(diào)節(jié)LCD1602的亮度和對比度。
1.2 超聲波測距部分
超聲波測距單元的框圖如圖2所示。系統(tǒng)中采用的換能器是中心頻率為40.0 kHz±0.1Hz的發(fā)射器255-400ST16和接收器255-400SR16。該換能器具有很高的靈敏度和較強(qiáng)的抗干擾能力。安裝時(shí)應(yīng)保持2個(gè)換能器中心軸線平行并相距4~8 cm,若能將超聲波接收電路用金屬殼屏蔽起來,可提高抗干擾能力。
1.2.1 超聲波發(fā)射電路
只要使用40 kHz的方波激勵(lì)換能器就可以產(chǎn)生超聲波。超聲波發(fā)射電路如圖3所示。電路中使用MOSFET管ZXM61P03F進(jìn)行電源管理,當(dāng)單片機(jī)的P1.3端口為低電平時(shí),電路通電。MAX864為電壓轉(zhuǎn)換芯片,它將輸入的5 V電源進(jìn)行加倍,轉(zhuǎn)換為正電源+10 V和負(fù)電源-10 V兩路輸出,提供給其后的LM8261使用。FC1和FC0為MAX864內(nèi)部晶振頻率選擇位,當(dāng)FC1和FC0均為高電平時(shí),晶振頻率為最大值,高頻率可以保證MAX864不會對其它電路造成干擾,此時(shí)所需的外圍電容值(C9,C11.C12,C13)為1μF。LM8261是一個(gè)具有高輸出電流的運(yùn)算放大器,較高的輸出電流可以使產(chǎn)生的超聲波有足夠的能量傳播較遠(yuǎn)的距離。LM8261的同相輸入端與單片機(jī)的INT1/P3.3端口相連,在這個(gè)端口連續(xù)發(fā)出高低電平時(shí),LM8261的輸出端就會產(chǎn)生方波。當(dāng)方波的頻率為40 kHz時(shí),就會激勵(lì)超聲波發(fā)射器發(fā)出超聲波。
1.2.2 超聲波接收電路
接收電路主要負(fù)責(zé)將超聲波信號轉(zhuǎn)變?yōu)殡娦盘枴Q能器在接收到超聲波信號時(shí),由于壓電效應(yīng)會在兩個(gè)接頭上產(chǎn)生微弱的電壓信號,一般為毫伏級。微弱的電壓信號需通過放大電路進(jìn)行放大、整形,進(jìn)一步設(shè)計(jì)比較器電路將模擬信號轉(zhuǎn)變成為數(shù)字信號。
因此,接收電路包括接收換能器,放大電路以及比較整形電路3部分。電路如圖4所示?;夭ǚ糯箅娐肥褂玫氖蔷哂袃杉壏糯蠊δ艿腖MV82 2MM,R15和R16組成分壓電路,為同相輸入端提供基準(zhǔn)電壓。其中可以通過調(diào)節(jié)第二級中的電位器R22來改變放大器的增益,從而調(diào)節(jié)放大電路的電壓放大倍數(shù),以適應(yīng)接收信號變化范圍大的需要。
回波放大電路和穩(wěn)壓電路輸出的是模擬信號,電路中利用運(yùn)算放大器LMC7215組成的比較器將模擬信號轉(zhuǎn)變?yōu)閿?shù)宇信號,以便單片機(jī)進(jìn)行處理。R20和R21為比較器提供基準(zhǔn)電壓。當(dāng)反向輸入端電壓超過基準(zhǔn)電壓時(shí),輸出低電平,否則輸出為高電平。這樣,若有超聲波信號被接收,比較器電路輸出端會有由高到低的電平跳變。單片機(jī)的INT0/P3.2端口連接到比較器的輸出,以捕捉電平的跳變,從而判斷超聲波是否被接收。同時(shí),比較器還解決了發(fā)射換能器發(fā)出的超聲波脈沖沒有經(jīng)過反射物直接被接收器所接收的問題。
2 系統(tǒng)軟件設(shè)計(jì)
程序設(shè)計(jì)部分的總體思路是:
Step1:系統(tǒng)的初始化工作。主要包括在液晶顯示屏LCD1602上顯示兩行預(yù)設(shè)字符,“Temp:”和“Dist:”,分別為環(huán)境溫度和測量距離的提示字符;設(shè)置定時(shí)器、外部中斷的觸發(fā)方式;打開發(fā)送使能端P1.3和接收使能端P1.2;清零測量成功標(biāo)志succeedFlag。
Step2:利用溫度傳感器DS18B20測量環(huán)境溫度,并將溫度值顯示在液晶顯示屏第一行“Temp:”的后面;根據(jù)公式(2)
計(jì)算出超聲波的傳播速度。
Step3:啟動定時(shí)器T1開始計(jì)時(shí),同時(shí)連續(xù)發(fā)送8個(gè)頻率為40 kHz的超聲波信號(對P3.3口的高、低電平分別進(jìn)行12μs、13μs的延時(shí),實(shí)現(xiàn)從P3.3口輸出頻率為40 kHz的方波信號);延時(shí)10μs后,打開外部中斷EX0和總中斷EA,等待IT0/P3.2處電平的跳變。10μs的延時(shí)也可以有效地避免發(fā)射換能器發(fā)出的超聲波脈沖沒有經(jīng)過反射物直接被接收器所接收的問題。
Step4:超聲波在傳播過程中,遇障礙物后反射回波。當(dāng)接收探頭接收到回波時(shí),外部中斷0被觸發(fā),此時(shí)執(zhí)行中斷服務(wù)程序。即取出定時(shí)器的高低位TH1和TL1,置位測量成功標(biāo)志succeedFlag,并關(guān)閉中斷。定時(shí)器所計(jì)的數(shù)據(jù)即為超聲波所經(jīng)歷的時(shí)間t。
Step5:由以上步驟中所得定時(shí)器的值和超聲波速度,根據(jù)式(1)計(jì)算測量距離。
Step6:重復(fù)步驟2~5五次后,獲得5次測距值。去除其中的最大值和最小值,取中間3值的平均值為當(dāng)前的測距結(jié)果,并將測距結(jié)果顯示在液晶顯示屏第二行“Dist:”之后。
Step7:重復(fù)步驟2~6,當(dāng)有連續(xù)三次的預(yù)備顯示測距結(jié)果與當(dāng)前的顯示結(jié)果不同時(shí),將預(yù)備顯示測距結(jié)果顯示在液晶顯示屏上。這樣設(shè)計(jì)是為了避免顯示頻繁導(dǎo)致的液晶顯示抖動。
Step8:重復(fù)步驟2~7進(jìn)行連續(xù)地測量。
程序中顯示一次測距結(jié)果的流程圖如圖5所示。
3 實(shí)驗(yàn)
3.1 調(diào)試過程中出現(xiàn)的問題及解決方法
1)回波信號的誤接收
由于超聲波發(fā)射探頭和接收探頭距離較近,當(dāng)發(fā)射探頭發(fā)射超聲波后,有部分超聲波沒經(jīng)過障礙物反射就直接繞射到接收探頭上,這部分信號影響了系統(tǒng)的測量結(jié)果。設(shè)計(jì)中采用了兩個(gè)方法來解決這個(gè)問題,一是略微增大發(fā)射探頭和接收探頭之間的距離,使影響降低;二是在發(fā)射完超聲波之后,開外部中斷之前增加10μs的延時(shí),接收電路對此期間接收到的任何信號不予理睬,延時(shí)之后接收到的信號才是有效的回波信號。
2)外部中斷0的觸發(fā)方式
沒有接收到超聲波信號時(shí),INT0/P3.2引腳為高電平;接收到超聲波信號之后,該引腳變?yōu)榈碗娖健R虼死碚撋贤獠恐袛?的觸發(fā)方式采用下降沿觸發(fā)和低電平觸發(fā)均可。而在實(shí)際電路中,當(dāng)采用下降沿觸發(fā)方式時(shí),由于噪聲的影響,在沒有回波被接收的情況下,P3.2引腳的高電平經(jīng)常會出現(xiàn)向下的毛刺信號,該信號引起外部中斷,造成了接收到回波信號的誤判。解決方法是采用低電平觸發(fā),同時(shí)在進(jìn)入外部中斷之后判斷低電平的持續(xù)時(shí)間是否大于20μs,只有當(dāng)滿足持續(xù)時(shí)間要求時(shí),才判定接收到的信號為回波信號,而非噪聲。
3.2 測距結(jié)果及分析
為了驗(yàn)證系統(tǒng)的性能.在實(shí)驗(yàn)室進(jìn)行了實(shí)地測量。將超聲波探頭正對平整的墻壁進(jìn)行測量,根據(jù)距離不同記錄了12次實(shí)驗(yàn)結(jié)果,測距結(jié)果如表1所示。表中的實(shí)際距離是用塑料軟尺測量得到的,測量距離為測量5次結(jié)果之后的平均值。
誤差產(chǎn)生及測量范圍有限的原因主要有:
1)超聲波能量的衰減。由于超聲波在傳播途中回波幅度隨傳播距離成指數(shù)規(guī)律衰減,使得遠(yuǎn)距離回波很難檢測,即使系統(tǒng)已采用相關(guān)措施來避免誤差,但是超聲波能量的衰減是不可能避免的;
2)測量盲區(qū)。超聲波測距系統(tǒng)測量盲區(qū)的計(jì)算方法為啟動定時(shí)器與打開外部中斷之間的時(shí)間間隔的一半與超聲波速度的乘積;
3)接收整形電路造成的時(shí)延,信號傳輸和發(fā)射中的失真。
4 結(jié)論
設(shè)計(jì)的超聲波測距系統(tǒng)具有很好的穩(wěn)定性,連續(xù)測量時(shí)有很好的響應(yīng)速度。同時(shí),系統(tǒng)具有結(jié)構(gòu)簡單、功耗小、成本低的特點(diǎn),有良好的人機(jī)界面,能方便地實(shí)時(shí)顯示測距數(shù)據(jù)。當(dāng)然,要滿足更高的精度要求,還須進(jìn)行適當(dāng)改進(jìn),在某些特殊場合的應(yīng)用中,還要考慮超聲波的入射角、反射角以及超聲波傳播介質(zhì)的密度、表面光滑度等因素。