HC-SR04 這模組大概是避障車必選模組之一,網拍上很容易找到.
另外一種 HC-SR06 稍後也會提一下.
所以這篇就來介紹 USM ( UltraSonic Module ).
模組接腳很簡單, 如第一張圖.
+5V 電源.
GND 地.
TRIG 觸發訊號 :
提供一個10usec High pulse,就可以觸發一次量測.
ECHO 回報訊號 :
讀取一個 High pulse的寬度表示音波發射出去,遇到物體反彈到回來被接收的時間.
以這個波型圖來看,就很清楚知道 TRIG, ECHO 訊號的模樣.
因此TRIG可以用個GPIO來控制,而 ECHO 可以用CAPTURE訊號來計算 High pulse訊號的時間.
接下來要來提一下物理課.
USM ( UltraSonic Module ) 就是以物理學聲音及音波反彈的原理,以及音速與時間的數學關係(不過明明 ultrasonic是超音速)來計算距離.
這小學(還是國中?)的課程上過,
題目:一個人在山上大喊一聲 : [ 我要錢 ] ,結果2秒後聽到回音.請問這座山到那座山直線距離有多遠? ( 題目是這樣出的嗎? )
所以要先查一下
- 音速 = 331+0.6 T wiki:音速 T:攝氏溫度 ( 真的已經忘給老師了說)
如果要精準一點,需要能測得溫度.( HC-SR06 就有溫度補償)
而HC-SR04沒有溫度SENDOR, 我的模組也暫時沒有溫度感應器.這裡就先抓個340m/sec來當作音速參數.
unsigned int detect_cm(void)
{
unsigned int time = 0;
CTick timer1;
// Make a 10 us high pulse
trig.write(HIGH);
timer1.reset();
timer1.sleep(12);//us
trig.write(LOW);
// Read timing
time = pulseIn(3, HIGH);
return (time*34/2000);
}
以上範例使用 uCXpresso 內的 CTick 與 arduino pulseIn,
time 以單位 micro sec (*測距見後面規格),
先來將 340m/s 轉換為 34000(cm)/1000000(us) --> 34/1000
另外time為來回的時間,所以需要除 2 ,使用單程時間計算.
因此 系數簡化為 34/2000 ( 17/1000更簡化 ) ,
計算公式就是 time * 34/2000 得到單位為公分,捨棄小數之後的計算值.
另外若需要考慮精準度的話可以使用浮點運算.
對於 HC-SR04其它的規格大概提一下:
- 工作電壓: 5V
- 感應角度: 不大於15度
- 探測距離: 2cm-400cm
- 精準度: 0.3 cm
- 盲區: 2cm ( 最短可測距離為2cm,2cm內無法測出)
另外前面提到的 HC-SR06 則是多了溫度補償,還有除了上述取High pulse方法外,還有UART介面.
是不是很簡單就能控制 USM 啊? 快網拍去買一個來玩玩,發揮你的創意.
p.s. 感謝英倍達/杰森 online help讓我快速熟悉 uCXpresso才能將模組很快的測試完成.
另外 英倍達 也有介紹 USM USM (超音波模組) 還帶七段顯示喔~~
範例下載 Download source code
0 留言:
張貼留言