2012年9月17日 星期一

HC-SR04 超音波感測器介紹

2012-09-16_23h53_28 

超音波感測器(老外好像把它叫作 PING))) sensor)是由超音波發射器、接收器和控制電路所組成。當它被觸發的時候,會發射一連串 40 kHz 的聲波並且從離它最近的物體接收回音。超音波是人類耳朵無法聽見的聲音,因為它的頻率很高。

如下圖所示,超音波測量距離的方法,是測量聲音在感測器與物體之間往返經過的時間:

image

記得國中理化有教過,聲音在空氣中的傳播速度大約是每秒 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 度。

51tbSvuOcAL._SL500_SS500_

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。下圖是一個輸出結果:

2012-09-17_00h10_30 

LCD 顯示

知道超音波感測器的運作原理與使用方式後,只要結合 LCD 顯示器,便可以把測量到的距離顯示在 LCD 上。

2012-09-17_01h45_52
▲ 利用超音波測量名片的長度,得 9.14 公分,還挺準的!

我用的是 I2C 16x2 LCD,關於 I2C 16x2 LCD 的使用方法,請參考「I2C 16x2 LCD 介紹」 。

完整程式碼如下:

參考資料

0 意見: