這次利用Adruino來作一個距離的小實驗

超音波感測器由超音波發射器、接收器和控制電路所組成。當它被觸發的時候,發射器會發射一連串

40kHz的聲波,當碰觸到物體時,音波反回接收器。超音波是很高頻的聲因,人類耳朵無法聽見的聲音。

這次利用HC-SR04的超音波模組來測試

HC-SR04  

Working Voltage: DC 5 V 
Working Current: 15mA 
Working Frequency: 40Hz 
Max Range: 4m 
Min Range: 2cm 
MeasuringAngle: 15 degree 
Trigger Input Signal: 10uS TTL pulse 
Echo Output Signal: Input TTL lever signal and the range in proportion 
Dimension: 45*20*15mm
 
HC-SR04 timing diagram  
給Trig pin一個10 us TTL pluse, 模組會發射8個40k Hz的聲波,如果有收到TTL的高電位訊號,那Echo會送出超音波來回的時間,使用者再計算音速換算成距離。
換算公式 =>「距離(cm) = 時間(us) / 2(來回) /29(cm/us)」。其它要注意的是量測物體最好大於0.5公尺平方,而trigger時間最好大於60ms,以免trig與echo干擾。
 

HC-SR04 的接線方式很簡單,總共只有 4 支接腳。

HC-SR04 Arduino
Vcc +5V
Trig GPIO
Echo GPIO
GND GND

我們使用的是HC-SR04 Ultrasonic Sensor Library,因為這個 library 已經把測距的公式都包成了函式庫,

使用上很方便。HCSR04Ultrasonic library 目前最新的版本是 1.1.2 版

 

#include <Ultrasonic.h>

#define TRIGGER_PIN 12
#define ECHO_PIN 13
#define Alarm_PIN 8

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

void setup()
{
Serial.begin(9600);
pinMode(Alarm_PIN,8);
}

void loop()
{
float cmMsec, inMsec;
long microsec = ultrasonic.timing();

cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);

Serial.print("MS: ");
Serial.print(microsec);
Serial.print(", CM: ");
Serial.print(cmMsec);
Serial.print(", IN: ");
Serial.println(inMsec);
//if(cmMsec <=10)
//{
// Serial.println("too close");
// digitalWrite(Alarm_PIN,HGHI);

//}

delay(1000);
}


超音波的應用
http://www.youtube.com/watch?v=70xXKDU9z8w

https://www.youtube.com/watch?v=LY2wxKSlN4E





 

arrow
arrow
    文章標籤
    Arduino HC-SR04 GTVISION
    全站熱搜

    一定!! 發表在 痞客邦 留言(0) 人氣()