Arduino 초음파센서(HC-SR04) 사용하기


사용할 센서는 HC-SR04이다.


HC-SR04 센서는 초음파를 이용하여 거리를 측정할 수 있는 센서다초음파는 귀에

들리지 않을 정도의 높은 주파수(약 20MHz이상)의 소리를 말하며초당 340m의 속도를

갖는다이러한 초음파의 속도를 바탕으로 시간관련 함수를 응용하면 초음파를 활용하여

거리나 수위적설 등을 측정할 수 있다.

 

초음파 거리센서의 구조는 생각보다 간단하다총 4개의 핀으로 구성되어있으며 양끝의

VCC와 Gnd를 통해 전원(5V)을 입력받고, Trig핀을 통해 신호를 입력 받으면 초음파를

발신초음파가 다시 수신되면 Echo핀을 통해 신호를 출력한다센서는 5V에서 작동하며

약 15mA의 전류를 사용한다측정 범위는 최소 2cm에서 4m이지만 주변 환경에 의해

오차가 발생할 수 있다.



초음파 거리 측정

 

회로도 연결


Vcc,Pin13,12,GND 차례로 연결해주었다.



실제 연결 모습이다.


초음파 거리센서의 VCCGND는 전원(5V,GND)에 연결을 해주며 Trig는 초음파를 쏘기

위해 디지털 핀 출력 설정을, Echo는 초음파를 받기 위해 디지털 핀 입력을 설정해준다.



Source


int trig = 13; // 변수 trig를 생성하고 13를 대입한다

int echo = 12; // 변수 echo를 생성하고 12을 대입한다

 

void setup() {

pinMode(trig, OUTPUT); // trig(13)핀을 출력모드로 설정한다

pinMode(echo, INPUT); // echo(12)핀을 입력모드로 설정한다

Serial.begin(9600); //보드레이트를 설정합니다.

}

 

void loop() {

digitalWrite(trig, HIGH); // trig(13)핀에 HIGH신호를 보낸다

delayMicroseconds(10); // 10마이크로초(1/100,000) 동안

digitalWrite(trig, LOW); // trig(13)핀에 LOW신호를 보낸다

int distance = pulseIn(echo, HIGH) * 17 / 1000;

// 변수 distance = echo핀이 다시 HIGH신호를 받기까지의 시간 * 17/1000

Serial.print(distance); // 변수 distance를 출력한다

Serial.println("cm"); // 문자열 cm을 출력하고 줄바꿈

delay(200); // 딜레이 0.1

}

 

계산식


거리를 구하기 위한 식은 다음과 같다.

거리 = 시간 x 속도

거리를 구하기 위해서는 시간과 속도를 구해야하며, 시간과 속도는 다음과 같다.

 

속도 : 초음파의 속도는 초당 340m.

 

시간을 구하기 위해 pulseIn()이라는 함수가 등장했다. 위에서 사용한 pulseIn(echo,HIGH)

해석해보자면, echo핀이 HIGH상태에서 LOW신호를 받고, 다시 HIGH를 받기까지의 시간, 즉 다시

HIGH가 되기까지의 시간을 반환한다. , 10 마이크로초동안 쏜 초음파를 받기까지의 시간을

구하게된다.

시간: pulseIn(echo, HIGH); // 초음파가 돌아오는 시간

*17을 한 이유는 pulseln()함수로 구한 시간이 왕복 시간이기

때문입니다. 그렇기에 식에 나누기2를 합니다. /1000을 한 이유는 그냥 보기 좋게 cm로 단위를

맞추기 위함이다.

 

 

 

 

결과



+ Recent posts