2012年12月14日 星期五

超音波模組 USM ( UltraSonic Module ) HC-SR04





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 留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...