超音波感測器(老外好像把它叫作 PING))) sensor)是由超音波發射器、接收器和控制電路所組成。當它被觸發的時候,會發射一連串 40 kHz 的聲波並且從離它最近的物體接收回音。超音波是人類耳朵無法聽見的聲音,因為它的頻率很高。
如下圖所示,超音波測量距離的方法,是測量聲音在感測器與物體之間往返經過的時間:
記得國中理化有教過,聲音在空氣中的傳播速度大約是每秒 340 公尺,傳播速度會受溫度影響,溫度愈高,傳播速度愈快。假設以 340 公尺計算,1000000 / 340 * 100 = 29.4 microseconds,四捨五入後,可知聲音傳播 1 公分所需的時間為 29 microseconds (百萬分之一秒)。
由於超音波從發射到返迴是兩段距離,因此在計算時必須將結果除以 2 才是正確的物體距離。所以我們可以利用底下的公式算出物體距離(距離單位為公分,其中 timing 是測量得到的音波傳播時間):
timing / 29 / 2
超音波感測器主要應用在機器人或自走車避障、物體測距等。
HC-SR04
HC-SR04 是一個超音波感測器,價格大約 100 元左右,它可以探測的距離為 2cm-400cm,精度為 0.3 cm,感應角度為 15 度。
HC-SR04 的接線方式很簡單,總共只有 4 支接腳。
HC-SR04 | Arduino |
Vcc | +5V |
Trig | GPIO |
Echo | GPIO |
GND | GND |
程式
Arduino 軟體內建了一個超音波測距的範例,Sketch 位置為 File > Examples > 06.Sensors > Ping,它所用的方法,是送出一個 HIGH 訊號到 Trig 腳位,接著測量音波從發射到返回的時間,再套用公式算出距離。
這邊我們不用 Arduino 內建的 Ping 範例,而是使用 HC-SR04 Ultrasonic Sensor Library,因為這個 library 已經把測距的公式都包成了函式庫,使用上比較方便。HCSR04Ultrasonic library 目前最新的版本是 1.1.2 版,可以在這裏下載。底下是一個範例:
這支程式每秒鐘會測量一次物體距離,並且將音波傳播時間(單位為 microseconds, MS)、物體距離(分成公分與英吋兩種單位,分別以 CM 和 IN 表示)印到 Serial Port。下圖是一個輸出結果:
LCD 顯示
知道超音波感測器的運作原理與使用方式後,只要結合 LCD 顯示器,便可以把測量到的距離顯示在 LCD 上。
▲ 利用超音波測量名片的長度,得 9.14 公分,還挺準的!
我用的是 I2C 16x2 LCD,關於 I2C 16x2 LCD 的使用方法,請參考「I2C 16x2 LCD 介紹」 。
完整程式碼如下:
0 意見:
張貼留言