何乃味
(柳州職業(yè)技術(shù)學(xué)院,柳州 545005)
何乃味(講師),研究方向?yàn)殡娮蛹夹g(shù)、嵌入式系統(tǒng)應(yīng)用。
用超聲波測(cè)量距離是一種非常實(shí)用的非接觸測(cè)量方法,廣泛應(yīng)用于物料液面測(cè)量、機(jī)器人定位、汽車防撞系統(tǒng)等領(lǐng)域。傳統(tǒng)的超聲波測(cè)距方法是用單片機(jī)的一個(gè)定時(shí)器和一個(gè)外部中斷來(lái)測(cè)量超聲波從發(fā)射探頭發(fā)射到被接收探頭接收所經(jīng)過(guò)的時(shí)間t,再根據(jù)超聲波測(cè)量距離的公式[1]S=vt/2進(jìn)行計(jì)算,得到距離S。這種方法除了多占用單片機(jī)的一個(gè)外部中斷源外,還會(huì)使測(cè)量時(shí)間t的誤差增大,降低測(cè)量精度。本文介紹了一種用AVR單片機(jī)ATmega16作為核心控制器的距離儀,該測(cè)距儀利用AT-mega16輸入捕獲功能實(shí)現(xiàn)時(shí)間t的精確測(cè)量;用溫度傳感器DS18B20檢測(cè)周圍環(huán)境的溫度,補(bǔ)償溫度變化對(duì)超聲波傳播速度的影響,提高測(cè)量精度;用語(yǔ)音芯片ISD4004實(shí)現(xiàn)測(cè)距結(jié)果等語(yǔ)音信息的播報(bào)功能。
測(cè)距儀的總體設(shè)計(jì)方案[2]如圖1所示。系統(tǒng)以AVR單片機(jī)ATmega16作為核心控制器,負(fù)責(zé)控制和協(xié)調(diào)各模塊電路的工作。超聲波發(fā)射模塊發(fā)射40kHz的超聲波信號(hào),超聲波接收模塊對(duì)接收到的回波信號(hào)進(jìn)行放大、濾波、比較,形成下降沿。溫度傳感器DS18B20負(fù)責(zé)對(duì)環(huán)境溫度進(jìn)行檢測(cè),補(bǔ)償溫度變化對(duì)超聲波傳播速度的影響。顯示電路采用YM12864中文液晶顯示器,顯示當(dāng)前溫度和距離等信息。語(yǔ)音電路采用ISD4004語(yǔ)音芯片,該芯片采用SPI通信接口,可以方便地與ATmega16單片機(jī)進(jìn)行通信,實(shí)時(shí)播報(bào)測(cè)量距離等語(yǔ)音信息。

圖1 測(cè)距儀總體設(shè)計(jì)方案
超聲波發(fā)射模塊電路[3]如圖2所示。由ATmega16的PB3發(fā)送10μs的高電平至SN8P2501B的P2.2,當(dāng)P2.2檢測(cè)到高電平時(shí),從P2.3輸出低電平,三極管Q1飽和導(dǎo)通,MAX3232接通電源,SN8P2501B內(nèi)部的定時(shí)器產(chǎn)生8個(gè)40kHz的脈沖信號(hào),由P2.4和P2.5推挽輸出,經(jīng)MAX3232升壓后推動(dòng)超聲波換能器發(fā)送超聲波信號(hào)。然后P2.3輸出高電平,三極管Q1截止,關(guān)斷MAX3232的電源,停止發(fā)射超聲波信號(hào)。

圖2 超聲波發(fā)射模塊電路
超聲波接收模塊電路[4]如圖3所示。從超聲波發(fā)射探頭發(fā)出的超聲波信號(hào)遇障礙物后返回,被接收探頭接收并轉(zhuǎn)換成微弱的電信號(hào),經(jīng)集成運(yùn)算放大器TL074放大、濾波、比較后,產(chǎn)生下降沿,觸發(fā)SN8P2501B的P2.2引腳產(chǎn)生中斷,在中斷程序中將P2.1置高電平。高電平持續(xù)的時(shí)間即為超聲波從發(fā)射探頭發(fā)射遇到障礙物后返回,并被接收探頭接收所經(jīng)過(guò)的時(shí)間。

圖3 超聲波接收模塊電路
語(yǔ)音播報(bào)模塊電路[5]如圖4所示。由集成穩(wěn)壓芯片AMS1117-3.3構(gòu)成的穩(wěn)壓電路輸出3.3V電壓供給語(yǔ)音芯片ISD4004。ISD4004的語(yǔ)音輸入由麥克風(fēng)MIC輸入或由插頭輸入,插入插頭時(shí)麥克風(fēng)輸入電路自動(dòng)斷開(kāi),此時(shí)可以與電腦連接進(jìn)行錄音。放音時(shí),音頻輸出經(jīng)LM386放大驅(qū)動(dòng)揚(yáng)聲器進(jìn)行放音。ATmega16通過(guò)SPI接口向ISD4004發(fā)送錄音地址和錄音命令進(jìn)行錄音,發(fā)送放音地址和放音命令進(jìn)行放音。中文液晶YM12864和溫度傳感器DS18B20與單片機(jī)ATmega16的連接較為簡(jiǎn)單,在此不作詳述。
超聲波測(cè)量距離的表達(dá)式[4]為 S=[(331.4+0.607T)×t]/2。其中,T為環(huán)境溫度,t為從發(fā)射超聲波信號(hào)到接收到回波信號(hào)所經(jīng)過(guò)的時(shí)間。由此可見(jiàn),測(cè)量距離的關(guān)鍵是盡可能精確地測(cè)出時(shí)間t。測(cè)量時(shí)間t常用的方法是用一個(gè)定時(shí)器/計(jì)數(shù)器和一個(gè)外部中斷來(lái)實(shí)現(xiàn)。定時(shí)器/計(jì)數(shù)器用來(lái)計(jì)時(shí),外部中斷設(shè)置成電平觸發(fā)方式,用于檢測(cè)一個(gè)脈沖的上升沿和下降沿,當(dāng)ATmega16外部中斷引腳輸入電平由低變高時(shí)觸發(fā)第一次中斷,讀取時(shí)間值t1,然后將外部中斷設(shè)置為下降沿觸發(fā)中斷,等到ATmega16外部中斷引腳輸入的電平由高變低時(shí),再次觸發(fā)中斷,讀取時(shí)間值t2,然后將外部中斷設(shè)置為上升沿觸發(fā)中斷,兩次時(shí)間值之差t=t2-t1即為脈沖的寬度。這種方法除了多占用ATmega16的一個(gè)外部中斷源外,讀取的時(shí)間值精度還容易受到中斷響應(yīng)時(shí)間的影響,造成測(cè)量距離誤差增大。單片機(jī)ATmega16具有一路輸入捕獲功能,配合內(nèi)部的定時(shí)器/計(jì)數(shù)器T/C1,可以非常方便和精確地測(cè)出一個(gè)脈沖從上升沿到下降沿間的時(shí)間。方法是先將T/C1設(shè)置為輸入捕獲模式、上升沿捕獲,并開(kāi)啟全局中斷;當(dāng)發(fā)射探頭發(fā)射的超聲波信號(hào)遇到障礙物后返回,被接收探頭接收時(shí),ATmega16的PD6(ICP1)引腳由低電平變高電平,觸發(fā)第一次輸入捕獲,將T/C1的TCNT1中的計(jì)數(shù)值自動(dòng)寫入輸入捕獲寄存器ICR1,在程序中將ICR1的值保存在變量t1中,然后將T/C1設(shè)置為下降沿捕獲;當(dāng)接收到的信號(hào)下降沿到來(lái)時(shí),再一次觸發(fā)輸入捕獲,將ICR1的值保存在變量t2中,然后將TCNT1中的值清0,并將T/C1設(shè)置為上升沿捕獲。假設(shè)單片機(jī)ATmega16所使用的晶振為8MHz,采用1/8分頻,則兩次捕獲發(fā)生的時(shí)間之差t=t2-t1(μs)即為發(fā)射超聲波信號(hào)至接收到回波信號(hào)所經(jīng)過(guò)的時(shí)間。定時(shí)器/計(jì)數(shù)器T/C1捕獲中斷程序如下:

圖4 語(yǔ)音播報(bào)模塊電路

語(yǔ)音播報(bào)程序主要分為錄音和放音程序。由單片機(jī)ATmega16的SPI端口按照ISD4004的時(shí)序要求發(fā)送錄/放音地址和命令。錄音程序?qū)⑿枰浿频恼Z(yǔ)音元素按照事先分配好的錄音地址分段錄制到IDS4004中。把錄音起始地址存放在數(shù)組當(dāng)中,在放音程序中根據(jù)要播報(bào)的語(yǔ)音信息查找到相應(yīng)語(yǔ)音元素的地址,發(fā)送放音命令,即可清晰流暢地播報(bào)出語(yǔ)音信息。錄音和放音的參考子程序如下:


測(cè)試條件[6]為:在環(huán)境溫度為29℃,超聲波發(fā)射探頭與接收探頭離地面30cm,障礙物為0.6cm×0.5cm垂直于地面放置的木板,用鋼卷尺測(cè)量實(shí)際距離,測(cè)試結(jié)果如表1所列。
本文設(shè)計(jì)的超聲波測(cè)距儀充分利用ATmega 16的輸入捕捉功能,實(shí)現(xiàn)了2cm~4.2m的距離測(cè)量,通過(guò)ATmega 16的硬件SPI接口控制語(yǔ)音芯片ISD4004實(shí)時(shí)播報(bào)測(cè)量距離等語(yǔ)音信息。多次測(cè)試結(jié)果表明,該測(cè)距儀具有工作穩(wěn)定可靠、重復(fù)性好、測(cè)量精度高、語(yǔ)音播報(bào)流暢清晰等特點(diǎn)。可應(yīng)用于物料液位測(cè)量、汽車防撞系統(tǒng)、機(jī)器人定位等場(chǎng)合,在非接觸測(cè)量方面具有很好的應(yīng)用前景。

表1 距離測(cè)試結(jié)果
[1]李翠花,梁德民,周曉美.高精度的超聲波測(cè)距系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].合肥學(xué)院學(xué)報(bào):自然科學(xué)版,2012,22(1):41-44.
[2]張禾,李俊蘭,葛亮,等.一種高精度超聲波測(cè)距系統(tǒng)的設(shè)計(jì)[J].自動(dòng)化儀表,2012(2):62-64.
[3]苑潔,常太華.基于STM32單片機(jī)的高精度超聲波測(cè)距系統(tǒng)的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011,19(15),76-78.
[4]程維東.基于P89LPC932超聲波測(cè)距儀[J].現(xiàn)代電子技術(shù),2011,34(13):136-138.
[5]周志勇,徐家愷,劉兵.ISD4004語(yǔ)音器件信息快進(jìn)功能的巧妙應(yīng)用[J].微處理機(jī),2007(5):104-106.
[6]李云龍,卜雄洙,趙文,等.新型嵌入式超聲波測(cè)距系統(tǒng)[J].儀表技術(shù)與傳感器,2012(1):97-99.