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