瀏覽分類:

Arduino

Arduino 超音波距離檢測 效率改進

目的

由於HC-SR04超音波模組是利用聲音反射來計算距離,在物體距離較遠時ECHO Pin 會回傳一個較長的訊號,Arduino等待訊號電位變化時需要較長的時間,這會導致執行效率變差,本篇希望能改善超音波距離檢測之效率。

問題

根據HC-SR04的官方文件來讀取ECHO Pin的電位變化就能取得超音波資訊,我們可以利用 pulseIn() 函數來取得回傳訊號高電位的時間。

根據Arduino官方文件指出 pulseIn() 有三個參數 pin、value、timeout ,我們可以利用第二個參數value來設定我們要計時的電位,例如LOW或HIGH;利用第三個參數timeout來設定時間限制(非必要),預設為1秒,也就是說如果HC-SR04感測不到物體時,Arduino可能會停住等待 pulseIn() 整整1秒才會繼續下一個指令。

改進

最直覺的改進方式就是將pulseIn() 的timeout 設定的小一點,例如100ms,不過這會縮小HC-SR04能夠檢測的距離,不是一個最好的方法。

閱讀更多

Arduino 超音波距離檢測

目的

我們希望自動控制的四軸飛行器能夠固定在指定的高度上,那我們就需要感測器來偵測目前飛行高度。本篇內容僅專注於超音波感測器。

材料


HC-SR04 超音波距離感測器

量測距離最近2cm,最遠400cm,感應角度小於15度。
四軸飛行器的飛行高度也就是垂直距離,距離量測中常見的感測器又有光學(紅外線、LIDAR)與超音波(Ultrasonic)兩大類,兩者的測距原理都是發射器發射一段脈衝訊號出去,由接收器接收訊號回來,計算兩者時間差來反算距離。
光學感測器具有精準度高、速度快,且能夠量測遠距離物體的優點,不過比起超音波來說真的太貴了XD
而超音波是藉由空氣傳導,聲音傳播速率計算公式為 331+0.6T,其中T為攝氏溫度,由此可知聲速會因為空氣溫度變化而改變,除此之外也會因為反射物體的表面材質、物體大小、擺放角度而影響,例如吸音棉可能會量不到距離、測量物體太小無法反射超音波等。 閱讀更多