超音波感測器 為什個這麼難用

更新日期:2月 26

看似萬能的超音波感測器其實有許多限制,一起一探究竟吧!

超音波感測器為什麼這麼難用? 你是否有遇過感測器常常怪怪的,該偵測沒偵測到,或是前面明明沒東西,卻感測到物體?

超音波感測器的原理,就是發射超音波出去,撞到物體之後,接收回來。


常見的HC-SR04這種兩個探 頭的形式,一邊是喇叭發出聲音,另一邊是麥克風接收音波,計算發出去到回來的時間差,推測物體的距離到底是多遠。


所以感測器如果要運作正常,超音波就必須能順利發射出去,撞到東西反彈,然後回來接收到訊號。


超音波感測器距離測量物體不可以太近,這時候因為距離太近沒辦法反彈,超音波根本聽不到回傳的訊號,就會感測錯誤。


但有些超音波的library,會將沒聽到聲音這件事,回傳0cm這個數值,導致許多同學會誤會以為手直接遮住感測器有感測到東西,這其實是錯誤的。


正確的作法是讓感測器距離物體稍微有點距離,至少超過2公分,才能正確感測喔~


HC-SR04這種常見的感測器,最遠偵測大概就是2公尺左右,超過2公尺能不能偵測到就是看被測物體跟運氣了。


畢竟超音波衰弱的程度跟距離成正比,當然有些網拍賣家會寫最遠可偵測3公尺或是4公尺,但老師建議還是以2公尺以內為主比較實際,真的要偵測很遠的物體就換顆更好的感測器吧。


超音波偵測距離的原理,需要物體來反彈聲波,所以如果要偵測很小的物體,比如說橡皮擦大小的東西,最好放進一點,讓反彈的聲波夠大,足夠偵測到。


由於聲波必須反彈回來,所以會吸收聲音的材質就不太適合作為目標物了。


我有些學生會用超音波感測器來偵測家裡的貓狗,但常常感應失敗,通常就是這個原因。


另外衣物的材質影響也很大,尤其是毛衣或是絲質材質,常常感應不良,建議可以選用別種方式來偵測。


超音波發射2公尺外的物件,到反彈回來的時間大約12毫秒,如果在接收的期間又發射第2次超音波,這時候就會接收到第1次超音波的訊號,導致判斷錯誤。


如果用Arduino序列埠觀察,就會發現很穩定偵測的訊號突然跳一個很近的數字,這就是接收到前一次的聲波了。


所以建議每發出一次聲波後,延遲delay約100毫秒,可以讓超音波感測器更為穩定,不會偵測到幽靈訊號。


超音波聲波會依據物體反射,所以如果偵測的物件是平面物件,有可能導致聲波反彈出去,感測器就無法感應回來的訊號。


所以如果需要偵測平面物件一定要注意角度不可過大。


最好的偵測物體就是能讓聲波反彈的東西,所以堅硬的物體以及圓形、不規則形狀的東西,是最適合的。


坊間許多避障車比賽會用寶特瓶來做為障礙物,也是因為這個關係。


如果要偵測物體有沒有經過,球滾過去,或是人經過,請在背後2公尺以內的距離,放上一個物體作為背景物件。


讓超音波平常的狀態都偵測到背景物體,一旦數值變小,就代表有東西通過了。


超音波感測器完全是依靠聲音的速度來計算,所以在程式或是library都會有個數值,需要依據環境的溫度調整。


V(m/s)=331+0.6T(℃)


也就是說20度C的冷氣房音速是343m/s,30度C的戶外是349m/s。


用超音波感測器偵測1公尺的物體,就會有1.7公分的誤差,如果氣溫差越多誤差越大,所以如果要準確一點,記得將程式內的算式修改為正確的音速喔。