當(dāng)前位置:首頁 > 技術(shù)學(xué)院 > 技術(shù)前線
[導(dǎo)讀]超聲波模塊HC-SR04調(diào)試經(jīng)驗(yàn)分享

這段時間要用超聲波做一個演示實(shí)驗(yàn),就是使用超聲波和舵機(jī)結(jié)合,做一個自動壁障演示實(shí)驗(yàn)。

就是將超聲波接到舵機(jī)上,通過轉(zhuǎn)動舵機(jī)來獲取各個方向到小車的距離,從而控制小車運(yùn)動,避開障礙物,并尋找最佳路徑。整個小車基于航太電子提供的51智能小車,如下圖:

車前面的超聲波模塊就是固定在下面的舵機(jī)上面的,實(shí)際實(shí)驗(yàn)時需要將顯示屏取下,否則會檔到舵機(jī)。

下面簡單說下超聲波模塊:

HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可達(dá)3mm;模塊包括超聲波發(fā)射器、接收器與控制電路,檢測角度為30°。

另外還有超聲波的控制方式:

(1)采用IO口TRIG觸發(fā)測距,給最少10us的高電平信號。

(2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;

(3)有信號返回,通過IO口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2

下面說說這個超聲波的缺陷了,由于該超聲波測距本身的缺陷以及該模塊也是市面上比較便宜的模塊,在實(shí)際運(yùn)行時往往達(dá)不到要求,特別是小車在運(yùn)行時整個車子是在震動的,對距離測試十分不利。

當(dāng)車子在跑動時測出來的距離變動幅度會較大,如果加上舵機(jī)的轉(zhuǎn)動,想實(shí)時測到距離是更不可能的了。目前超聲波測量周期建議是100ms,在100ms的時間里,超聲波在車上的變動還是比較大的,所以在測量距離的時候,盡量讓車子停下來,而且舵機(jī)停止轉(zhuǎn)動。

另外還有一個大問題,就是前面的障礙物與超聲波不是正對著,而是呈一個較大的角度時,測出來的距離也是不準(zhǔn)的。這種現(xiàn)象體現(xiàn)在當(dāng)小車與墻斜著跑過去時會直接撞上去,顯然是完全沒檢測到墻面。根據(jù)示波器查看結(jié)果,當(dāng)相對正對超聲波傾斜角度小于約30°時,還是可以測出來的,當(dāng)變得更大時,就會出現(xiàn)回響電平突然變得很長的情況,這種時候也會有測量比較接近實(shí)際的時候,所以在這里需要做濾波處理?;仨懶盘栆词墙咏鼘?shí)際,要么是很長,這樣的情況是很好判斷的。

下面是我基于51單片機(jī)平臺做的超聲波讀取的方法,暫沒考慮單片機(jī)性能浪費(fèi)的問題,用到了while等待。觸發(fā)信號輸出以及回響信號計數(shù)采用了定時器T2

如下:

初始化函數(shù),對T2 初始化

void UltraSoundInit()

{

Trig = 0;

TH2 = RCAP2H = 0;

TL2 = RCAP2L = 0;

TR2 = 0;//關(guān)閉定時器

ET2=1; //允許T2中斷

}

然后就是T2的中斷函數(shù),當(dāng)定時器溢出時進(jìn)入,可以用來判斷輸出的回響信號是否過長,當(dāng)超聲波模塊異常時也可用來跳出while死循環(huán)

/*******************************************************************************

* 函 數(shù) 名 :Timer0Int

* 函數(shù)功能 :定時器0中斷服務(wù)函數(shù)

* 輸 入 :無

* 輸 出 :無

*******************************************************************************/

void Timer2Int() interrupt 5 // 定時器2中斷是5號,當(dāng)定時器2發(fā)生溢出時說明量測的距離過遠(yuǎn)或超聲波本次測量異常

{

TF2 = 0;

overflow_count++;

TH2 = 0;

TL2 = 0;

if(overflow_count == 2)

{

status = 5;//超時

}

}

下面就是測量的方法,比較簡單,當(dāng)測量失敗就讓那個全局變量為0,注意:超聲波是有最小測量距離的,一般障礙物理超聲波2cm以內(nèi)時,測得距離就不準(zhǔn)了,所以測量距離不可能為0

void GetDistance()

{

//發(fā)送觸發(fā)信號

Trig = 1;

status = 1;

TH2 = 0;

TL2 = 0;

TR2 = 1;//打開定時器

while(TL2 < 42);//延時超過10us

status = 2;

Trig = 0;

TR2 = 0;

TH2 = 0;

TL2 = 0;

overflow_count = 0;

TR2 = 1;

while(Echo == 0)//等待回向信號起始位置

{

if(status == 5)

{

status = 0;

distance_cm = 0;

return;//本次失敗

}

}

TR2 = 0;//清空計數(shù)

TH2 = 0;

TL2 = 0;

overflow_count = 0;

TR2 = 1;

while(Echo == 1)//開始計算長度

{

if(status == 5)

{

status = 0;

distance_cm = 0;

TR2 = 0;

return;//本次失敗

}

}

dis_count =overflow_count*65536 + TH2*256 + TL2;

TR2 = 0;

distance_cm = (unsigned int)(((long)(dis_count) * 34)/8000);//聲速 dis_count*(1/(FOSC/12))*Vsound*100/2

status = 0;//準(zhǔn)備下次發(fā)送

}

下面就是要調(diào)用上面函數(shù)的方法,注意這個函數(shù)執(zhí)行間隔至少是100ms(其實(shí)75ms的時候也可以)

void GetDistanceDelay()

{

distance_cm = 0;

while(distance_cm == 0)

{

GetDistance();

if(distance_cm != 0)

{

return;

}

Delayms(100);

}

}

這樣做雖然浪費(fèi)了很多處理器性能,但比起獲得錯誤數(shù)據(jù)還是要好些。在這個實(shí)驗(yàn)中,除了車子前行時沒100ms檢測一次距離,在其他時候都是要等車子停止時才測距的,另外使用超聲波做這個事本來就是比較勉強(qiáng)的,如果想要更好的效果,建議搭配其他傳感器如光電對管壁障模塊,用這個模塊來檢測斜邊的障礙物還是很有效的,也就是遠(yuǎn)處交給超聲波處理,近處交給壁障模塊處理。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉