0 引言
超聲波是一種在彈性介質(zhì)中的機(jī)械震蕩,,它是由與介質(zhì)相接觸的震蕩源所引起的,其頻率在20kHz以上,。由于超聲波的速度相對(duì)于光速要小得多,,其傳播時(shí)間就比較容易檢測(cè),,并且易于定向發(fā)射,方向性好,,強(qiáng)度好控制,,因而利用超聲波測(cè)距在很多距離探測(cè)應(yīng)用中有很重要的用途,包括無損檢測(cè),、過程測(cè)量,、機(jī)器人測(cè)量和定位,以及流體液面高度測(cè)量等,。利用單片機(jī)控制超聲波檢測(cè)往往比較迅速,、方便、計(jì)算簡單,、易于實(shí)現(xiàn),,并且測(cè)量精度高。
1 系統(tǒng)設(shè)計(jì)
超聲波測(cè)距的最遠(yuǎn)距離和分辨能力,,不僅需要良好的換能器,,也需要合理的驅(qū)動(dòng)電路及回波探測(cè)電路。對(duì)發(fā)射而言,,為了使電能到機(jī)械能的轉(zhuǎn)換效益最大,,換能器必須工作在它的共振頻率處。對(duì)接收電路而言,,為了使機(jī)械能到電能的轉(zhuǎn)換效率最大,,最佳工作點(diǎn)必須取在反共振頻率處,在傳感器系統(tǒng)中,,發(fā)射部分的共振頻率要與接收部分的反共振頻率相匹配,。同時(shí),溫度對(duì)聲速有著較大的影響,,溫度補(bǔ)償無疑是減少誤差的很好方法,。本設(shè)計(jì)選用T40-16T/R超聲波傳感器,設(shè)計(jì)了一種以AT89C2051單片機(jī)為核心的低成本,、高精度,、微型化數(shù)字顯示超聲波測(cè)距儀。為了進(jìn)一步提高系統(tǒng)測(cè)量精度和系統(tǒng)穩(wěn)定性,,在硬件上增加了溫度傳感器測(cè)溫電路,,采取聲速預(yù)置和媒質(zhì)溫度測(cè)量相結(jié)合的辦法對(duì)聲速進(jìn)行修正,降低了溫度變化對(duì)測(cè)距精度的影響,。有力提高了超聲波測(cè)距系統(tǒng)的測(cè)量精度,。
設(shè)計(jì)系統(tǒng)由單片機(jī)主控模塊、顯示模塊、超聲波發(fā)射模塊,、接收模塊,、溫度測(cè)量補(bǔ)償模塊等五個(gè)模塊組成,組成框圖如圖1所示,。
超聲波發(fā)射電路由單片機(jī)輸出端直接驅(qū)動(dòng)超聲波發(fā)送,,超聲波接收電路輸出端與單片機(jī)相連接,,單片機(jī)的輸出端與顯示電路輸入端相連接,。單片機(jī)在TO時(shí)刻發(fā)射方波,同時(shí)啟動(dòng)定時(shí)器開始計(jì)時(shí),,當(dāng)收到回波后,,產(chǎn)生一負(fù)跳變到單片機(jī)中斷口,單片機(jī)響應(yīng)中斷程序,,定時(shí)器停止計(jì)數(shù),。計(jì)算時(shí)間差即可得到超聲波在媒介中傳播的時(shí)間t,由此便可計(jì)算出距離,。
2.1 超聲波測(cè)距單片機(jī)控制系統(tǒng)
單片機(jī)AT89C2051采用12MHz高精度的晶振,,以獲得較穩(wěn)定時(shí)鐘頻率,減小測(cè)量誤差,。單片機(jī)P3.5端口輸出超聲波換能器所需的40kHz的方波信號(hào),,P3.6端口監(jiān)測(cè)超聲波接收電路輸出的返回信號(hào)。顯示電路采用簡單實(shí)用的3位共陽LED數(shù)碼管,,段碼輸出端口為單片機(jī)的P1口,,位碼輸出端口分別為單片機(jī)的P3.2、P3.1,、P3.0口,,數(shù)碼管位驅(qū)運(yùn)用PNP三極管S9012三極管驅(qū)動(dòng)。而溫度測(cè)量采用簡單的DS18B20溫度傳感器,,測(cè)量結(jié)果送入P3.4口,,利用公式算出聲速。
2.2 超聲波發(fā)射,、接收電路
超聲波發(fā)射,、接收電路如圖2所示。超聲波發(fā)射電路由電阻R2及超聲波發(fā)送頭T40組成,;接收電路由BG1,、BG2X組成的兩組三級(jí)管放大電路組成;檢波電路,、比較整形電路由C7,、D1、D2及BG3組成。
40kHz的方波由AT89C2051單片機(jī)的P3.5驅(qū)動(dòng)超聲波發(fā)射頭發(fā)射超聲波,,經(jīng)反射后由超聲波接收頭接收到40kHz的正弦波,,由于聲波在空氣中傳播時(shí)衰減,所以接收到的波形幅值較低,,經(jīng)接收電路放大,、整形,最后輸出一負(fù)跳變,,輸入單片機(jī)的P3.7腳,。由于單片機(jī)系統(tǒng)的晶振為12M晶振,所以只能產(chǎn)生半周期為12μs或13μs的方波信號(hào),,頻率分別為41.67kHz和38.46kHz,。本系統(tǒng)在編程時(shí)選用了后者。接收到的信號(hào)加到BG1,、BG2組成的兩級(jí)放大器上進(jìn)行放大,。每級(jí)放大器的放大倍數(shù)為70倍。放大的信號(hào)通過檢波電路得到解調(diào)后的信號(hào),。這里使用的是IN4148檢波二極管,,輸出的直流信號(hào)即兩二極管之間電容電壓。該接收電路結(jié)構(gòu)簡單,,性能較好,,制作難度小。
2.3 溫度測(cè)量補(bǔ)償電路
在空氣中,,常溫下超聲波的傳播速度是334m/s,,但其傳播速度受空氣中溫度、濕度等因素的影響,,其中受溫度影響較大,,如溫度每升高1℃,聲速就會(huì)增加約0.6m/s,。因此在相同的間隔測(cè)量距離,,由于波的傳播時(shí)間是相同的,不同溫度下的聲速不同,,所以最終造成測(cè)量出來的距離不相等,,在距離測(cè)量精度要求很高的情況下,必須要對(duì)溫度進(jìn)行測(cè)量和補(bǔ)償,,以避免溫度對(duì)測(cè)量精度的影響,。本系統(tǒng)選用DS18B20溫度傳感器作為溫度測(cè)量、誤差補(bǔ)償裝置,,與單片機(jī)交換信息僅需要一根I/O口線,,其供電電源可來源于單片機(jī)I/O口數(shù)據(jù)線,而無需額外電源。不同溫度下超聲波在空氣中傳播速度隨溫度變化的關(guān)系如下:
v=331.4+0.61T (1)
式中,,T為實(shí)際溫度(℃),,v為當(dāng)前環(huán)境下聲速,單位為m/s,。
3 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)部分采用模塊化設(shè)計(jì),,由主程序、發(fā)射子程序,、接收子程序,、中斷子程序、溫度測(cè)量等組成,。超聲波測(cè)距的程序既有較復(fù)雜的計(jì)算(計(jì)算距離時(shí)),,又要求精細(xì)計(jì)算程序運(yùn)行時(shí)間(超聲波測(cè)距時(shí)),,所以控制程序采用C語言編程,。主程序完成初始化工作、超聲波發(fā)射和接收順序的控制,、距離上下限超限報(bào)警,。定時(shí)中斷服務(wù)子程序完成超聲波回波接收,外部中斷服務(wù)子程序主要完成時(shí)間值的讀取,、距離計(jì)算,、結(jié)果的輸出等工作。
主程序首先是對(duì)系統(tǒng)環(huán)境初始化,,設(shè)定時(shí)器0為計(jì)數(shù),,設(shè)定時(shí)器1定時(shí)。置位總中斷允許位EA,。進(jìn)行主程序后,,進(jìn)行定時(shí)測(cè)距判斷,當(dāng)測(cè)距標(biāo)志位c1=1,,即進(jìn)行測(cè)量一次,,程序設(shè)計(jì)中,超聲波測(cè)距頻度是2次/秒,。測(cè)距間隔中,,整個(gè)程序主要進(jìn)行循環(huán)顯示測(cè)量結(jié)果。當(dāng)調(diào)用超聲波測(cè)距子程序后,,首先由單片機(jī)產(chǎn)生6~8個(gè)頻率為38.46kHz超聲波脈沖,,加載至超聲波發(fā)送頭上。超聲波頭發(fā)送完超聲波后,,立即啟動(dòng)內(nèi)部計(jì)時(shí)器T0進(jìn)行計(jì)時(shí),,為了避免超聲波從發(fā)射頭直接傳送到接收頭引起的直射波觸發(fā),這時(shí),單片機(jī)需要延時(shí)約1.5~2ms時(shí)間(這也就是超聲波測(cè)距儀會(huì)有一個(gè)最小可測(cè)距離的原因,,稱之為盲區(qū)值)后,,才啟動(dòng)對(duì)單片機(jī)P3.7腳的電平判斷程序。當(dāng)檢測(cè)到P3.7腳的電平由高轉(zhuǎn)為低電平時(shí),,立即停止T0計(jì)時(shí),。
當(dāng)停止計(jì)時(shí)時(shí),立刻啟動(dòng)測(cè)溫程序,,通過對(duì)溫度的讀取,,算得此時(shí)聲速。由于采用單片機(jī)采用的是12MHz的晶振,,計(jì)時(shí)器每計(jì)一個(gè)數(shù)就是1μs,,當(dāng)超聲波測(cè)距子程序檢測(cè)到接收成功的標(biāo)志位后,將計(jì)數(shù)器T0中的數(shù)(即超聲波來回所用的時(shí)間)計(jì)算,,即可得被測(cè)物體與測(cè)距儀之間的距離,。測(cè)出距離后結(jié)果將以十進(jìn)制BCD碼方式送往LED顯示約0.5s,然后再發(fā)超聲波脈沖重復(fù)測(cè)量過程,。我們知道,,溫度對(duì)聲速的影響是很大的,因而應(yīng)該先測(cè)量溫度,,再計(jì)算出此溫度下的聲速,。
4 調(diào)試及數(shù)據(jù)分析
系統(tǒng)組裝調(diào)試時(shí)先焊接各個(gè)模塊,再進(jìn)行模塊的單獨(dú)測(cè)試,,原件安裝完畢后,,將寫好程序的AT89C2051機(jī)裝到測(cè)距板上,通電后將測(cè)距板的超聲波頭對(duì)著墻面往復(fù)移動(dòng),,觀察數(shù)碼管在測(cè)量范圍內(nèi)能否正常顯示,。超聲波發(fā)送功率較大時(shí),測(cè)量距離遠(yuǎn),,則相應(yīng)的下限值(盲區(qū))應(yīng)設(shè)置為較高值,。
系統(tǒng)測(cè)距實(shí)驗(yàn)時(shí)在不同的實(shí)測(cè)溫度下,整個(gè)系統(tǒng)在11個(gè)特定的距離都測(cè)量7次,,共計(jì)77次測(cè)量,。每組7個(gè)數(shù)據(jù),去掉一個(gè)最大值和最小值,,再求其平均值,,用來作為最終的測(cè)量數(shù)據(jù)。
由圖4可見,,不同的實(shí)測(cè)溫度下,,在30~300cm范圍內(nèi)測(cè)量線和實(shí)際線幾乎完全重合,,此時(shí)測(cè)量的精確度最高。所以本設(shè)計(jì)系統(tǒng)的可測(cè)距離為28~400cm,,但是最佳測(cè)量距離為30~250cm,。
5 結(jié)論
本設(shè)計(jì)完成的測(cè)距系統(tǒng)進(jìn)行了有效的溫度補(bǔ)償,測(cè)量精度可達(dá)0.01m,,而且測(cè)量結(jié)果清晰穩(wěn)定,,響應(yīng)時(shí)間短,0.5s刷新一次數(shù)據(jù),,測(cè)量的實(shí)時(shí)性和連續(xù)性好,。本系統(tǒng)可在做細(xì)微調(diào)整、改進(jìn)后用于多個(gè)應(yīng)用領(lǐng)域,,比如簡單的移動(dòng)機(jī)器人,、汽車防碰撞等。