本文介紹了利用超聲波傳感器實現無接觸式測距。系統由AT89C2051 單片機、超聲波電路、環境溫度電路及顯示電路組成。該測距儀具有高精度(±1mm)、低成本的特點。 引言 超聲波測距主要應用于非接觸測量領域。目前測距專用超聲波系統由于成本高等的原因,在一些中小規模的應用領域中難以廣泛應用。隨著汽車智能化的發展,需要研制出能夠以更高的精度測距的新式傳感器,且成本低廉。但是以往的超聲波傳感器由于高精度的要求,結構復雜,且不能夠根據不同的環境自動調節,成本高,適應性差。本文介紹一種以AT89C2051 單片機為核心的低成本、高精度的數字顯示超聲波測距儀的研制。由于這種超聲波傳感器可以測試周圍環境溫度并可自我調節,性價比要好于現有的一些同類產品。這種傳感器能夠在0℃" 40℃的溫度范圍內,測距范圍為0.1m"0.3m,精度為1mm,因此能夠應用于一些特殊的場合,如自助式停車,智能懸架和車前燈調節等。 測距系統的硬件設計 超聲波測距系統工作原理如圖1。本系統由AT89C2051 單片機、超聲波發射、接收放大電路、環境溫度采集電路及顯示電路組成。AT89C205l單片機是整個系統的核心部件,協調各部件的工作。單片機控制的振蕩源產生40kHz 的頻率信號來驅動超聲波傳感器,每次發射包含l0 個脈沖,當第一個超聲波脈沖發射后,計數器開始計數,在檢測到第一個回波脈沖的瞬間,計數器停止計數,這樣就能夠得到從發射到接收的時間△t;溫度采集電路也將現場環境溫度數據采集送到單片機中,提供計算距離時對超聲波傳播速度的修正。最終單片機利用公式計算出被測距離,由顯示器顯示出來。單片機的串行口RXD、TXD 分別與顯示電路的RXD 和TXD 相連,構成串行靜態顯示電路;定時/記數器T0,與V/F 轉換器的輸出端相連,實現頻率采集功能;P1.7 與CMOS 多諧振蕩器的控制端相連,通過軟件使P1.7 口輸出高或低電平,從而控制超聲波的發射;P1.6 通過一個開關二極管IN4l48 與比較器LM324的基準電壓產生電路控制端連接,發射超聲波時置P1.6 為“1”,輸出的電平可以抑制比較器的翻轉,從而能有效地抑制發射器發射的超聲波直接輻射到接收器而導致錯誤的檢測;發射結束后,P1.6 置為“0”,此時通過掃描與比較器輸出端連接的P1.2 121,根據P1.2 口的輸入狀態判斷是否接收到回波。 超聲波發射及驅動電路由CD4011組成的RC振蕩器產生,溫度傳感器采用AD590。 檢測法及補償原理 超聲波測距通過下列公式計算: 式中,Tf —超聲波傳播時間; Vs—空氣中的聲速; k—系數,近似為0.5。 超聲波脈沖由一個壓電式傳感器發出,它的地面反射波由另一個壓電式傳感器接收。這兩個壓電式傳感器緊密地并排在一起組成了探測頭。由k 引起的誤差通過一個校準器的校準后可以忽略不計。Tf 和Vs 可以認為是不相關的,所以被測距離的標準誤差u(D)可以從下列公式得到: 這里u(Vs)和u(Tf)是聲速和傳播時間的系統誤差。空氣中的聲速受到溫度θ和濕度h 的影響,即: 因此,式(2)變為: 如果濕度在10%RH"90%RH 內變化,它對聲速的影響在20℃時為0.15%左右。在0.3m 的范圍內導致的系統誤差僅為0.3mm 左右,所以沒有必要安裝濕度傳感器。 空氣中的聲速可以根據下式得到: 其中:T—絕對溫度。 聲速在330m/s 到360m/s 范圍內變化時應考慮到0℃到40℃范圍內的溫度變化。在測距中必須考慮到這種影響,因此需要一個溫度傳感器。如果應用于汽車上,另一個影響測距精度的因素是車速,這種影響隨著超聲波傳播距離的增加而增加。如果最大車速相當于聲速的10%,則測量相對誤差可由下式估算: 對于車速在33m/s(約120km/h),在0℃時(Vs=330m/s)誤差約為0.5%,因此一般也可以忽略這一因素帶來得誤差。 智能化實現 本傳感器在電路上可分為兩大部分,其一為時間測量(見圖2),其二為溫度傳感器與誤差的自動補償(見圖3)。其中圖2 輸出的Ni 即為圖3 輸入的Ni。 時間測量 時間測量中采用的超聲波信號周期為25μs,卻需要一個相當于在20°C 時約9mm 波長的超聲波信號源。為了確保精度,需要一個波長檢測器。超聲波信號源由一個信號發生器和一個過零檢測器的電路組成。任意信號發生器由一個可存放任意波形的16Kbyte EPROM,一個用來掃描EPROM的16 位計數器和一個DAC 組成。過零檢測器由臨界值檢測器組成。檢測器的臨界值是接收到的信號峰值的一部分,使檢測器可以根據參考零電位比較接收到的信號。這就使得在信號區的信號能最大范圍地被檢測到,從而使噪聲干擾最小。 存儲在EPROM 中的激勵信號必須設計成可以接收那些低到足以防止第一個臨界值接收器干擾不同周期的回聲。這些特殊的信號由一個約束最優化程序處理,這種程序主要是為了使回波的能量最小從而把回波的峰值限定位一個固定值。最合適的允許接收由固定振幅的最低回波Y(f)的驅動信號X(f)可以由解下列方程得到: 最優的結果主要取決于被選回聲的振幅,回聲越低,振幅越低,那么被一個有關的噪聲振幅干擾的可能性也越低。在任何條件下使用最好的信號取決于噪聲的實際量。傳感器還有一個簡單的噪聲測量系統。該系統可以通過在無回波階段監測輸入信號來估計實際噪聲。這個噪聲測量系統的輸出可以在低、中、高噪聲條件下轉換。 另外,回波的振幅主要取決于地面的反射性和距離。這些影響可以由接收電路中的一個自動增益控制放大器來使其最小化。因此回聲振幅可以保持在一個固定值。這就用到了第一個檢測器中的固定臨界值。越零檢測器的輸出可以用來驅動一個緩沖器(可以在回聲到達的時間內鎖存計數器輸出)。如果一個新的回波未被檢測到,則緩沖器的輸出不被更新。這就避免了無意義的測量。被緩沖的值是根據傳播時間和一個已知的固定值Na(該值由它在EPROM 中的存儲方式及第一個檢測器的臨界值水平決定)來定。系統時鐘為8MHz,因此周期為125ns,當一個距離超過1m,最大的測量時間約8ms。一個50Hz 的多諧波振蕩器每20ms 提供計數器一個讀數。 溫度傳感器與誤差的自動補償 空氣溫度由一個溫度傳感器檢測并經電路處理得出。它裝在探頭中,誤差不超過1℃。誤差的自動補償可以由圖2 所示的簡單模擬電路得出。V 與所測距離成正比。 軟件設計思想 由于超聲發射傳感器與超聲接收傳感器相隔很近,當發射超聲波時,接收傳感器會收到很強的干擾信號。為防止系統的誤測,在軟件上采用延遲接收技術,以此提高系統的抗干擾能力。當起始鍵按下,即發送發射超聲波的指令,控制系統開始執行程序,完成對溫度的采集;發送、接收超聲波的時間間隔的測量;最后通過數值處理程序計算出被測距離,送顯示器顯示。本系統軟件采用模塊化設計,由主程序、測距子程序、測溫子程序、顯示子程序等主要模塊組成。主程序框圖如圖4所示。 測試結果 本系統應用于非接觸式測距。對相距0.1m"0.3m的兩物體、環境溫度從0℃ "40℃之間變化時,進行了實際測試,由于系統增加了溫度修正系統及軟件補償技術,大大提高系統的測量準確度。實際測試證明,經修正后該系統的測量準確度可達到±0.01m。 結束語 本文提出的基于單片機的超聲波測距系統,具有成本低、精度高、誤差小、顯示直觀、電路簡單以及抗干擾性好等優點,能夠滿足一些中小規模系統的測量要求。尤其能夠應用于一些特殊的場合,如自助式停車,智能懸架和車前燈調節等。 |