前言:在日常生產(chǎn)生活中,很多場(chǎng)合如汽車倒車、機(jī)器人避障、工業(yè)測(cè)井、水庫(kù)液位測(cè)量等需要自動(dòng)進(jìn)行非接觸測(cè)距。超聲波是指頻率大于20kHz的在彈性介質(zhì)中產(chǎn)生的機(jī)械震蕩波,其具有指向性強(qiáng)、能量消耗緩慢、傳播距離相對(duì)較遠(yuǎn)等特點(diǎn),因此常被用于非接觸測(cè)距。由于超聲波對(duì)光線、色彩和電磁場(chǎng)不敏感,因此超聲波測(cè)距對(duì)環(huán)境有較好的適應(yīng)能力,此外超聲波測(cè)量在實(shí)時(shí)、精度、價(jià)格也能得到很好的折衷。
為此,文中嘗試以單片機(jī)AT89S52為核心,利用一對(duì)40kHz壓電超聲傳感器設(shè)計(jì)一款體積較小、價(jià)格低廉、精度較高、具有溫度補(bǔ)償、實(shí)時(shí)LCD顯示和報(bào)警的
超聲波測(cè)距儀。
1、超聲波測(cè)距原理
超聲波傳感器分機(jī)械方式和電氣方式兩類,它實(shí)際上是一種換能器,在發(fā)射端它把電能或機(jī)械能轉(zhuǎn)換成聲能,接收端則反之。本次設(shè)計(jì)超聲波傳感器采用電氣方式中的壓電式超聲波換能器,它是利用壓電晶體的諧振來(lái)工作的。它有兩個(gè)壓電晶片和一個(gè)共振板。當(dāng)它的兩極外加脈沖信號(hào),其頻率等于壓電晶片的固有振蕩頻率時(shí),壓電晶片將會(huì)發(fā)生共振,并帶動(dòng)共振板振動(dòng),產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時(shí),將壓迫壓電晶片作振動(dòng),將機(jī)械能轉(zhuǎn)換為電信號(hào),就成為超聲波接收器。在超聲波電路中,發(fā)射端輸出一系列脈沖方波,脈沖寬度越大,輸出的個(gè)數(shù)越多,能量越大,所能測(cè)的距離也越遠(yuǎn)。超聲波發(fā)射換能器與接收換能器其結(jié)構(gòu)上稍有不同,使用時(shí)應(yīng)分清器件上的標(biāo)志。
超聲波測(cè)距的方法有多種:如往返時(shí)間檢測(cè)法、相位檢測(cè)法、聲波幅值檢測(cè)法。本設(shè)計(jì)采用往返時(shí)間檢測(cè)法測(cè)距。其原理是超聲波傳感器發(fā)射一定頻率的超聲波,借助空氣媒質(zhì)傳播,到達(dá)測(cè)量目標(biāo)或障礙物后反射回來(lái),經(jīng)反射后由超聲波接收器接收脈沖,其所經(jīng)歷的時(shí)間即往返時(shí)間,往返時(shí)間與超聲波傳播的路程的遠(yuǎn)近有關(guān)。測(cè)試傳輸時(shí)間可以得出距離。
假定s為被測(cè)物體到測(cè)距儀之間的距離,測(cè)得的時(shí)間為t/s,超聲波傳播速度為v/m·s-1表示,則有關(guān)系式(1)
s=vt/2(1)
在精度要求較高的情況下,需要考慮溫度對(duì)超聲波傳播速度的影響,按式(2)對(duì)超聲波傳播速度加以修正,以減小誤差。
v=331.4+0.607T(2)
式中,T為實(shí)際溫度單位為℃,v為超聲波在介質(zhì)中的傳播速度單位為m/s。
2、系統(tǒng)總體設(shè)計(jì)方案
本系統(tǒng)由超聲波發(fā)射、回波信號(hào)接收、溫度測(cè)量、顯示和報(bào)警、電源等硬件電路部分以及相應(yīng)的軟件部分構(gòu)成。系統(tǒng)原理框圖,如圖1所示。
整個(gè)系統(tǒng)由單片機(jī)AT89S52控制,超聲波傳感器采用收發(fā)分體式,分別是一支超聲波發(fā)射換能器TCT40-16T和一支超聲波接收換能器TCT40-16R。超聲波信號(hào)通過(guò)超聲波發(fā)射換能器發(fā)射至空氣中,遇被測(cè)物反射后回波被超聲波接收換能器接收。進(jìn)行相關(guān)處理后,輸入單片機(jī)的INT0腳產(chǎn)生中斷,計(jì)算中間經(jīng)歷的時(shí)間,同時(shí)再根據(jù)具體的溫度計(jì)算相應(yīng)的聲速,根據(jù)式(2)就可得出相應(yīng)的距離用來(lái)顯示,當(dāng)然在一些場(chǎng)合也可根據(jù)需要,設(shè)置距離報(bào)警值。
3、硬件設(shè)計(jì)
3.1超聲波發(fā)射部分
超聲波發(fā)射部分是為了讓超聲波發(fā)射換能器TCT40-16T能向外界發(fā)出40kHz左右的方波脈沖信號(hào)。40kHz左右的方波脈沖信號(hào)的產(chǎn)生通常有兩種方法:采用硬件如由555振蕩產(chǎn)生或軟件如單片機(jī)軟件編程輸出,本系統(tǒng)采用后者。編程由單片機(jī)P1.0端口輸出40kHz左右的方波脈沖信號(hào),由于單片機(jī)端口輸出功率不夠,40kHz方波脈沖信號(hào)分成兩路,送給一個(gè)由74HC04組成的推挽式電路進(jìn)行功率放大以便使發(fā)射距離足夠遠(yuǎn),滿足測(cè)量距離要求,zui后送給超聲波發(fā)射換能器TCT40-16T以聲波形式發(fā)射到空氣中。發(fā)射部分的電路,如圖2所示。圖中輸出端上拉電阻R31,R32,一方面可以提高反向器74HC04輸出高電平的驅(qū)動(dòng)能力,另一方面可以增加*的阻尼效果,縮短其自由振蕩的時(shí)間。
3.2超聲波接收部分
上述TCT40-16T發(fā)射的在空氣中傳播,遇到障礙物就會(huì)返回,超聲波接收部分是為了將反射波(回波)順利接收到超聲波接收換能器TCT40-16R進(jìn)行轉(zhuǎn)換變成電信號(hào),并對(duì)此電信號(hào)進(jìn)行放大、濾波、整形等處理后,這里用索尼公司生產(chǎn)的集成芯片CX20106,得到一個(gè)負(fù)脈沖送給單片機(jī)的P3.2(INT0)引腳,以產(chǎn)生一個(gè)中斷。接收部分的電路,如圖3所示。
可以看到,集成芯片CX20106在接收部分電路中起了很大的作用。CX20106是一款應(yīng)用廣泛的紅外線檢波接收的芯片,其具有功能強(qiáng)、性能*、外圍接口簡(jiǎn)單、成本低等優(yōu)點(diǎn),由于紅外遙控常用的載波頻率38kHz與測(cè)距的超聲波頻率40kHz比較接近,而且CX20106內(nèi)部設(shè)置的濾波器中心頻率f0五可由其5腳外接電阻調(diào)節(jié),阻值越大中心頻率越低,范圍為30~60kHz。故本次設(shè)計(jì)用它來(lái)做接收電路。CX20106內(nèi)部由前置放大器、限幅放大器、帶通濾波器、檢波器、積分器及整形電路構(gòu)成。工作過(guò)程如下:接收的回波信號(hào)先經(jīng)過(guò)前置放大器和限幅放大器,將信號(hào)調(diào)整到合適幅值的矩形脈沖,由濾波器進(jìn)行頻率選擇,濾除干擾信號(hào),再經(jīng)整形,送給輸出端7腳。當(dāng)接收到與CX20106濾波器中心頻率相符的回波信號(hào)時(shí),其輸出端7腳就輸出低電平,而輸出端7腳直接接到.AT89S52的INT0引腳上,以觸發(fā)中斷。若頻率有一些誤差,可調(diào)節(jié)芯片引腳5的外接電阻R42,將濾波器的中心頻率設(shè)置在40kHz,就可達(dá)到理想的效果。
3.3其他主要電路
?。?)溫度測(cè)量部分。
由于聲音的速度在不同的溫度下有所不同,為提高系統(tǒng)的精度,采用了溫度補(bǔ)償功能。這里采用的主要元器件是是美國(guó)Dallas半導(dǎo)體公司生產(chǎn)的單總線數(shù)字溫度傳感器DS18B20,其具有精度高、智能化、體積小、線路簡(jiǎn)單等特點(diǎn)。將DS18B20數(shù)據(jù)線與單片機(jī)的P1.1口相連,就可以實(shí)現(xiàn)溫度測(cè)量,如圖4所示。
?。?)LCD顯示部分。
本設(shè)計(jì)顯示部分采用字符型TC1602液晶顯示所測(cè)距離值。TC1602顯示的容量為2行16個(gè)字。液晶顯示屏有微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧、使用方便等諸多優(yōu)點(diǎn),與數(shù)碼管相比,顯得更專業(yè)、美觀。使用時(shí),可將P0與LCD的數(shù)據(jù)線相連,P2口與LCD的控制線相連,如圖5所示。
其中,TC1602第4腳RS為寄存器選擇,第5腳RW為讀寫信號(hào)線,第6腳E為使能端。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。這里要注意的是,為了布線方便,單片機(jī)端的D0~D7是接到LCD/602的D1~D0,正好相反,因此在編寫軟件時(shí)需要做處理,使讀取正確。
?。?)報(bào)警部分。
采用一個(gè)蜂鳴器,由P1.2輸出一定頻率的信號(hào),在連接到蜂鳴器之前,經(jīng)過(guò)一個(gè)三極管9012的放大。報(bào)警部分的連線,如圖6所示。
?。?)電源電路:220V經(jīng)9V變壓器降壓后,再經(jīng)D1~D4橋式整流和7805穩(wěn)壓后給電路各部分供電。
?。?)晶振電路:采用12MHz的晶振。
4、軟件
系統(tǒng)軟件設(shè)計(jì)采用模塊化設(shè)計(jì),主要包括主程序設(shè)計(jì)、T1中斷服務(wù)子程序、INT0外部中斷服務(wù)子程序、測(cè)溫子程序、距離計(jì)算子程序、顯示子程序、延時(shí)子程序和報(bào)警子程序設(shè)計(jì)等。
系統(tǒng)軟件編制時(shí)應(yīng)考慮相關(guān)硬件的連線,同時(shí)還要進(jìn)行存儲(chǔ)空間、寄存器以及定時(shí)器和外部中斷引腳的分配和使用。本設(shè)計(jì)中P1.0引腳連接到7HC04推挽放大電路再連接到超聲波發(fā)射傳感器,P1.0引腳輸出的將是軟件方式產(chǎn)生的40kHz方波,而P3.2(INT0)則被用來(lái)接收回波。定時(shí)器T1,T0均工作在工作方式1,為16位計(jì)數(shù),T1定時(shí)器被用來(lái)開(kāi)啟一次測(cè)距過(guò)程以它的溢出為標(biāo)志開(kāi)始一個(gè)發(fā)射測(cè)量循環(huán),T0定時(shí)器是用來(lái)計(jì)算脈沖往返時(shí)間,它們的初值均設(shè)為0。
系統(tǒng)初始化后就啟動(dòng)定時(shí)器T1從0開(kāi)始計(jì)數(shù),此時(shí)主程序進(jìn)入等待,當(dāng)?shù)竭_(dá)65ms時(shí)T1溢出進(jìn)入T1中斷服務(wù)子程序;在T1中斷服務(wù)子程序中將啟動(dòng)一次新的超聲波發(fā)射,此時(shí)將在P1.0引腳上開(kāi)始產(chǎn)生40kHz的方波,同時(shí)開(kāi)啟定時(shí)器T0計(jì)時(shí),為了避免直射波的繞射,需要延遲1ms后再開(kāi)INT0中斷允許;INT0中斷允許打開(kāi)后,若此時(shí)P3.2(INT0)引腳出現(xiàn)低電平則代表收到回波信號(hào),將提出中斷請(qǐng)求進(jìn)入INT0中斷服務(wù)子程序,在INT0中斷服務(wù)子程序中將停止定時(shí)器T0計(jì)時(shí),讀取定時(shí)器T0時(shí)間值到相應(yīng)的存儲(chǔ)區(qū),同時(shí)設(shè)置接收成功標(biāo)志;主程序一旦檢測(cè)到接收成功標(biāo)志,將調(diào)用測(cè)溫子程序,采集超聲波測(cè)距時(shí)的環(huán)境溫度,并換算出準(zhǔn)確的聲速,存儲(chǔ)到RAM存儲(chǔ)單元中;單片機(jī)再調(diào)用距離計(jì)算子程序進(jìn)行計(jì)算,計(jì)算出傳感器到目標(biāo)物體之間的距離;此后主程序調(diào)用顯示子程序進(jìn)行顯示;若超過(guò)設(shè)定的zui小報(bào)警距離還將啟動(dòng)揚(yáng)聲器報(bào)警;當(dāng)一次發(fā)射、接收、顯示的過(guò)程完成后,系統(tǒng)將延遲100ms重新讓T1置初值,再次啟動(dòng)T1以溢出,進(jìn)入下一次測(cè)距。如果由于障礙物過(guò)遠(yuǎn),超出量程,以致在T0溢出時(shí)尚未接收到回波,則顯示“ERROR”重新回到主流程進(jìn)入新一輪測(cè)試。主程序和定時(shí)器T1、外部中斷INT0中斷服務(wù)子程序的框圖分別,如圖7~圖9所示。
此外,還有幾點(diǎn)需要說(shuō)明的是:
?。?)定時(shí)器T1之所以是65ms溢出是因?yàn)樗?6位定時(shí)/計(jì)數(shù)器(65535)。在使用12MHz的晶振時(shí),由于周期T=1/f=1/[(12×106)/12]=1μs,則一個(gè)機(jī)器周期是1μs,計(jì)數(shù)器每65ms計(jì)數(shù)器溢出。
?。?)本設(shè)計(jì)中40kHz方波的產(chǎn)生采用軟件方式實(shí)現(xiàn):控制P1.0口輸出12μs的高電平,再輸出13μs的低電平,這樣得到一個(gè)周期的40kHz的脈沖,再循環(huán)發(fā)送8次。
?。?)在CPU停止發(fā)送脈沖群后,由于電阻尼,換能器不能立即停止發(fā)送超聲波,在一段時(shí)間內(nèi)仍然會(huì)發(fā)送,故這段時(shí)間內(nèi)不可立即開(kāi)啟INT0接收回波,要等待一段后以避免發(fā)送端的部分直射波未經(jīng)被測(cè)物就直接繞射到接收端,這段被稱為“虛假反射波”。從發(fā)射開(kāi)始一直到“虛假反射波”結(jié)束這段時(shí)間,不開(kāi)放INT0中斷申請(qǐng),可有效躲避干擾,但也會(huì)造成測(cè)試的“盲區(qū)”。本次設(shè)為1ms,假定溫度為20℃,則測(cè)量盲區(qū)為s=1×10-3×344/2≈17.2cm。
?。?)zui大測(cè)試距離將取決于:兩次脈沖群發(fā)送之間的zui小時(shí)間間隔和脈沖的能量。一般來(lái)說(shuō),發(fā)射端脈沖個(gè)數(shù)越多,能量越大,所能測(cè)的距離也越遠(yuǎn)。但也不是無(wú)限制的,本次讀取定時(shí)器T0的計(jì)數(shù)值,zui大能測(cè)試的距離是T0尚沒(méi)溢出,故在溫度20℃下,zui大測(cè)試距離為s=vt/2=65535×344/(2×106)=11.272m。在一些周期性發(fā)射超聲波設(shè)備中,如果要測(cè)試的zui大距離是10m,則兩次脈沖群之間的zui小時(shí)間為t=2×s/v=2×10/344≈60:ms。
5、結(jié)束語(yǔ)
為了驗(yàn)證系統(tǒng)的測(cè)量精度,在實(shí)驗(yàn)室進(jìn)行了實(shí)地測(cè)量。利用本系統(tǒng)對(duì)20~1000cm范圍進(jìn)行了多次測(cè)試,經(jīng)補(bǔ)償后zui大誤差達(dá)2cm,線性度、穩(wěn)定性和重復(fù)性都比較好。系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單、體積小、實(shí)時(shí)LCD顯示和報(bào)警、帶溫度補(bǔ)償、抗干擾性能好等優(yōu)點(diǎn)。系統(tǒng)的誤差主要來(lái)自于發(fā)射探頭發(fā)出的超聲波是呈喇叭狀擴(kuò)散傳播、被測(cè)物的表面不光滑且不一定垂直于兩探頭的軸線而導(dǎo)致所反射回來(lái)的波也許是從不同點(diǎn)獲得,此外電子元器件自身的時(shí)延、干擾等也造成一定影響??梢愿鶕?jù)具體場(chǎng)合,選擇合適功率的探頭,以及調(diào)整程序中脈沖的頻率、寬度和個(gè)數(shù)等提高精度或測(cè)量距離,擴(kuò)大系統(tǒng)的應(yīng)用范圍。