아두이노에서 초음파 거리 측정 센서 사용하기
초음파 센서 거리 측정 원리와 공식
다음은 아두이노에서 실습용으로 가장 많이 사용하고 있는 초음파 거리측정 센서이다.거리측정 방법은 다음 그림과 같이 송신기에서 짧은 펄스를 출력한 다음, 반사되어 오는 펄스를 수신기로 감지한다.
거리를 계산하는 공식은 다음과 같다.
여기에서 t는 펄스 출력 후 감지하기까지 걸린시간이고 c는 소리의 속도이다. 음속 c는 다음과 같다.
c=331.5+0.6*온도
하지만 이 식보다는 근사적으로 온도 15도 일 때를 기준으로 340 m/s 또는 0.034 cm/μs를 사용할 예정이다.
공식에서 θ는 송신기와 수신기가 이루는 각도인데 송신기와 수신기의 거리가 가까우면 거의 0도에 가깝기 때문에 cosθ는 거의 1이 된다. 따라서 거리 계산하는 공식은 다음과 같이 간단하게 쓸 수 있다.
d=t*0.017
단, 이 식은 시간 t는 μs 단위로 입력해야 하고, 거리 d는 cm단위로 출력된다는 것을 주의해서 사용해야 한다.
초음파 센서 연결
초음파 센서와 아두이노의 연결은 다음 회로도와 같이 하였다.센서의 2번 핀 TRIG는 초음파를 출력하는데 사용하는데 아두이노 디지펄 핀 4번 (D4)에 연결하였다. 3번 핀 ECHO는 초음파를 감지하는데 사용되며 D2에 연결하였다.
연결된 모습은 다음과 같다.
프로그램은 다음과 같다.
#define TRIG_PIN 2
#define ECHO_PIN 4
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
long echotime;
float distance;
// 10us pulse를 TRIG_PIN으로 출력한다.
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// ECHO_PIN으로 반사된 펄스를 입력받고
// 경과된 시간을 us단위로 echotime 변수에 저장한다.
echotime = pulseIn(ECHO_PIN, HIGH);
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// ECHO_PIN으로 반사된 펄스를 입력받고
// 경과된 시간을 us단위로 echotime 변수에 저장한다.
echotime = pulseIn(ECHO_PIN, HIGH);