看似萬能的超音波感測器其實有許多限制,一起一探究竟吧!
![](https://static.wixstatic.com/media/77ef90_07b54d5ec7d5471ba58f90aa28824543~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_07b54d5ec7d5471ba58f90aa28824543~mv2.jpg)
超音波感測器為什麼這麼難用? 你是否有遇過感測器常常怪怪的,該偵測沒偵測到,或是前面明明沒東西,卻感測到物體?
![](https://static.wixstatic.com/media/77ef90_f0a11849fd0b4fb2a94d15bffb71ad9a~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_f0a11849fd0b4fb2a94d15bffb71ad9a~mv2.jpg)
超音波感測器的原理,就是發射超音波出去,撞到物體之後,接收回來。
常見的HC-SR04這種兩個探 頭的形式,一邊是喇叭發出聲音,另一邊是麥克風接收音波,計算發出去到回來的時間差,推測物體的距離到底是多遠。
所以感測器如果要運作正常,超音波就必須能順利發射出去,撞到東西反彈,然後回來接收到訊號。
![](https://static.wixstatic.com/media/77ef90_a804ca6684ab4a93879e095d32d44b79~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_a804ca6684ab4a93879e095d32d44b79~mv2.jpg)
超音波感測器距離測量物體不可以太近,這時候因為距離太近沒辦法反彈,超音波根本聽不到回傳的訊號,就會感測錯誤。
但有些超音波的library,會將沒聽到聲音這件事,回傳0cm這個數值,導致許多同學會誤會以為手直接遮住感測器有感測到東西,這其實是錯誤的。
正確的作法是讓感測器距離物體稍微有點距離,至少超過2公分,才能正確感測喔~
![](https://static.wixstatic.com/media/77ef90_e395f33329d349e2a3e4fdd7b705cab3~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_e395f33329d349e2a3e4fdd7b705cab3~mv2.jpg)
HC-SR04這種常見的感測器,最遠偵測大概就是2公尺左右,超過2公尺能不能偵測到就是看被測物體跟運氣了。
畢竟超音波衰弱的程度跟距離成正比,當然有些網拍賣家會寫最遠可偵測3公尺或是4公尺,但老師建議還是以2公尺以內為主比較實際,真的要偵測很遠的物體就換顆更好的感測器吧。
![](https://static.wixstatic.com/media/77ef90_cf15f4df48df4f5684aa46251dac8238~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_cf15f4df48df4f5684aa46251dac8238~mv2.jpg)
超音波偵測距離的原理,需要物體來反彈聲波,所以如果要偵測很小的物體,比如說橡皮擦大小的東西,最好放進一點,讓反彈的聲波夠大,足夠偵測到。
![](https://static.wixstatic.com/media/77ef90_565f7329025e45f3a7aca487849dde6b~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_565f7329025e45f3a7aca487849dde6b~mv2.jpg)
由於聲波必須反彈回來,所以會吸收聲音的材質就不太適合作為目標物了。
我有些學生會用超音波感測器來偵測家裡的貓狗,但常常感應失敗,通常就是這個原因。
另外衣物的材質影響也很大,尤其是毛衣或是絲質材質,常常感應不良,建議可以選用別種方式來偵測。
![](https://static.wixstatic.com/media/77ef90_205861d809fd415fb608c27a0c635ae3~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_205861d809fd415fb608c27a0c635ae3~mv2.jpg)
超音波發射2公尺外的物件,到反彈回來的時間大約12毫秒,如果在接收的期間又發射第2次超音波,這時候就會接收到第1次超音波的訊號,導致判斷錯誤。
如果用Arduino序列埠觀察,就會發現很穩定偵測的訊號突然跳一個很近的數字,這就是接收到前一次的聲波了。
所以建議每發出一次聲波後,延遲delay約100毫秒,可以讓超音波感測器更為穩定,不會偵測到幽靈訊號。
![](https://static.wixstatic.com/media/77ef90_7f192d77f98e4791a58c18be5347e509~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_7f192d77f98e4791a58c18be5347e509~mv2.jpg)
超音波聲波會依據物體反射,所以如果偵測的物件是平面物件,有可能導致聲波反彈出去,感測器就無法感應回來的訊號。
所以如果需要偵測平面物件一定要注意角度不可過大。
![](https://static.wixstatic.com/media/77ef90_b6d30983b65f4c368a4146e9104bfb9f~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_b6d30983b65f4c368a4146e9104bfb9f~mv2.jpg)
最好的偵測物體就是能讓聲波反彈的東西,所以堅硬的物體以及圓形、不規則形狀的東西,是最適合的。
坊間許多避障車比賽會用寶特瓶來做為障礙物,也是因為這個關係。
![](https://static.wixstatic.com/media/77ef90_f142699864d949e29f77dacb08bd6f31~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_f142699864d949e29f77dacb08bd6f31~mv2.jpg)
如果要偵測物體有沒有經過,球滾過去,或是人經過,請在背後2公尺以內的距離,放上一個物體作為背景物件。
讓超音波平常的狀態都偵測到背景物體,一旦數值變小,就代表有東西通過了。
![](https://static.wixstatic.com/media/77ef90_bcef69957d2b44cebf73fd52a3d05436~mv2.jpg/v1/fill/w_980,h_693,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/77ef90_bcef69957d2b44cebf73fd52a3d05436~mv2.jpg)
超音波感測器完全是依靠聲音的速度來計算,所以在程式或是library都會有個數值,需要依據環境的溫度調整。
V(m/s)=331+0.6T(℃)
也就是說20度C的冷氣房音速是343m/s,30度C的戶外是349m/s。
用超音波感測器偵測1公尺的物體,就會有1.7公分的誤差,如果氣溫差越多誤差越大,所以如果要準確一點,記得將程式內的算式修改為正確的音速喔。
댓글