位差超聲波傳感器在智能玩具機(jī)器人中的應(yīng)用
2 軟件設(shè)計(jì)
2.1 測(cè)距子程序設(shè)計(jì)
根據(jù)位差超聲波傳感器的時(shí)序原理圖,對(duì)C51單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器編程,實(shí)現(xiàn)對(duì)前方物體距離的測(cè)量并將測(cè)量結(jié)果在LCD模塊上顯示。測(cè)距子程序的基本設(shè)計(jì)算法,用流程圖表示如圖4所示。本文引用地址:http://m.butianyuan.cn/article/161086.htm
程序設(shè)計(jì)思路主要分為2步:
1)根據(jù)位差超聲波傳感器的控制時(shí)序圖(圖3),啟動(dòng)位差超聲波距離傳感器,即通過(guò)單片機(jī)編程,給超聲波傳感器的信號(hào)引腳提供一個(gè)持續(xù)時(shí)間為5μs的高電平,然后拉低信號(hào)引腳750μs,這樣位差超聲波傳感器就被啟動(dòng),發(fā)出超聲爆裂,與此同時(shí),啟動(dòng)單片機(jī)的定時(shí)器開(kāi)始計(jì)數(shù),當(dāng)超聲波遇到物體時(shí)會(huì)立即反射回來(lái),位差超聲波傳感器的接收器接到回波時(shí),會(huì)自動(dòng)拉低其信號(hào)引腳的電平,單片機(jī)查詢到此引腳的電平下降沿到來(lái)時(shí)停止定時(shí)器計(jì)數(shù),此時(shí)定時(shí)器計(jì)數(shù)值就間接反應(yīng)了超聲波從反射到返回所經(jīng)歷的時(shí)間。
2)讀出定時(shí)器的計(jì)數(shù)值除以2,便得到超聲波在遇到被測(cè)物體返回的時(shí)間,根據(jù):距離=速度×時(shí)間,就可以計(jì)算出前方物體的距離,因超聲波在常溫下的空氣介質(zhì)中傳播的速度大約為344 m/s,即29.034μs超聲波能傳播1 cm,具體編程時(shí)在程序中用語(yǔ)句x=count/29.034來(lái)計(jì)算距離值,獲得被測(cè)距離值后,調(diào)用LCD顯示函數(shù)將距離值在LCD模塊上顯示出來(lái)。
2.2 超聲波導(dǎo)航程序設(shè)計(jì)
利用位差超聲波距離傳感器測(cè)得的“距離”信息,可以引導(dǎo)智能玩具機(jī)器人實(shí)現(xiàn)避障行走。當(dāng)智能玩具機(jī)器人距離前面障礙物小于20 cm時(shí),它會(huì)向左拐改變行進(jìn)方向,避免與物體碰撞,下面簡(jiǎn)要分析以超聲波導(dǎo)航程序的基本設(shè)計(jì)思路,程序設(shè)計(jì)算法用流程圖表示如圖5所示。
程序通過(guò)反復(fù)調(diào)用超聲波測(cè)距子程序,獲取智能玩具機(jī)器人前方被測(cè)物體的距離值;判斷距離是否在設(shè)定閾值以內(nèi),若大于程序設(shè)定的距離閾值,調(diào)用函數(shù)Forward(),驅(qū)動(dòng)智能玩具機(jī)器人前進(jìn);若小于程序設(shè)定的距離閾值,調(diào)用Backward(),驅(qū)動(dòng)智能玩具機(jī)器人后退一段距離;接著又調(diào)用Left_Turn(),驅(qū)動(dòng)智能玩具機(jī)器人左拐后程序再返回重復(fù)以上過(guò)程。
3 系統(tǒng)調(diào)試
3.1 硬件系統(tǒng)的調(diào)試
硬件系統(tǒng)的制作與調(diào)試相對(duì)簡(jiǎn)單,其具體過(guò)程簡(jiǎn)述如下:首先根據(jù)硬件設(shè)計(jì)原理圖,采用Protel DXP2004軟件合理布局和布線,設(shè)計(jì)出智能玩具機(jī)器人的控制器PCB,然后用制板設(shè)備制作出PCB樣板;根據(jù)元器件清單,在PCB上安裝焊接好元器件,連接好直流伺服電機(jī),將測(cè)試軟件下載到智能玩具控制器的單片機(jī)存儲(chǔ)器,接通電源開(kāi)機(jī)運(yùn)行,用示波器測(cè)試觀察控制器的單片機(jī)最小系統(tǒng)運(yùn)行時(shí)關(guān)鍵點(diǎn)信號(hào)波形是否正常。
3.2 系統(tǒng)整體調(diào)試
根據(jù)上述程序設(shè)計(jì)思路,在Keil C編譯環(huán)境中用C語(yǔ)言編寫程序代碼,編譯程序,將生成的HEX文件燒寫到控制板上的單片機(jī)程序存儲(chǔ)器,開(kāi)機(jī)運(yùn)行,智能玩具機(jī)器人按程序設(shè)定運(yùn)行模式前進(jìn),當(dāng)前方有物體時(shí),在LCD顯示屏上實(shí)時(shí)準(zhǔn)確地顯示出小車和前方物體之間的距離值;當(dāng)小車距前方物體小于程序設(shè)定的距離閾值時(shí),小車掉轉(zhuǎn)方向繼續(xù)前進(jìn),經(jīng)反復(fù)實(shí)驗(yàn)表明:位差超聲波距離傳感器在下列情況下不能精確地測(cè)量距離,如圖6所示。
1)與物體距離大于3 m當(dāng)被測(cè)物體距離智能玩具機(jī)器人3 m之外時(shí),如圖6(a)所示,因位差超聲波傳感器的發(fā)射功率不夠,反射回來(lái)的信號(hào)太弱,導(dǎo)致LCD上顯示出的距離值不能反映實(shí)際距離值。
2)被測(cè)物體不在正前方 當(dāng)被測(cè)物體不在智能玩具機(jī)器人正前方,如圖6(b)所示,而是有一定的偏角,因與物體的表面形成的反射角度太小,使傳感器接收器接收不到反射回來(lái)的信號(hào),導(dǎo)致LCD上顯示出的距離值不能反映實(shí)際距離值。
3)前方被測(cè)物體橫截面太小 當(dāng)前方被測(cè)物體體積太小或是橫截面太小,如圖6(c)所示,因?yàn)闆](méi)有足夠強(qiáng)度的信號(hào)返回到傳感器,導(dǎo)致LCD上顯示出的距離值不能反映實(shí)際距離值。
4 結(jié)束語(yǔ)
超聲波傳感器在非接觸性測(cè)量方面的應(yīng)用非常廣泛,可用于檢測(cè)液體水位(特別是具有腐蝕性的液體,如硫酸、硝酸液體),汽車倒車防撞系統(tǒng),金屬(或非金屬)探傷,機(jī)器人感知系統(tǒng)設(shè)計(jì)等,利用位差超聲波傳感器與51單片機(jī)構(gòu)成智能玩具機(jī)器人的“距離感知系統(tǒng)”,具有電路接口簡(jiǎn)單,成本低廉,穩(wěn)定性好等特點(diǎn),但其測(cè)量精度受到位差超聲波傳感器的最大測(cè)量距離以及與被測(cè)物體反射角等的限制。
伺服電機(jī)相關(guān)文章:伺服電機(jī)工作原理
評(píng)論