Arduino 초음파센서(HC-SR04) 사용하기
사용할 센서는 HC-SR04이다.
HC-SR04 센서는 초음파를 이용하여 거리를 측정할 수 있는 센서다. 초음파는 귀에
들리지 않을 정도의 높은 주파수(약 20MHz이상)의 소리를 말하며, 초당 340m의 속도를
갖는다. 이러한 초음파의 속도를 바탕으로 시간관련 함수를 응용하면 초음파를 활용하여
거리나 수위, 적설 등을 측정할 수 있다.
초음파 거리센서의 구조는 생각보다 간단하다. 총 4개의 핀으로 구성되어있으며 양끝의
VCC와 Gnd를 통해 전원(5V)을 입력받고, Trig핀을 통해 신호를 입력 받으면 초음파를
발신, 초음파가 다시 수신되면 Echo핀을 통해 신호를 출력한다. 센서는 5V에서 작동하며
약 15mA의 전류를 사용한다. 측정 범위는 최소 2cm에서 4m이지만 주변 환경에 의해
오차가 발생할 수 있다.
초음파 거리 측정
회로도 연결
Vcc,Pin13,12,GND 차례로 연결해주었다.
실제 연결 모습이다.
초음파 거리센서의 VCC와 GND는 전원(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로 단위를 맞추기 위함이다.
|
결과
'Study Note > SBC' 카테고리의 다른 글
[라즈베리파이] RasberryPi TOF센서 사용 (0) | 2016.12.20 |
---|---|
[아두이노] LED 제어하기 (0) | 2016.12.19 |
[아두이노] 온도센서(LM35) 사용 (0) | 2016.12.19 |
[아두이노] Tool 설치 및 기본 정보 (0) | 2016.12.19 |
[라즈베리파이] LED 제어 (C언어) (1) | 2016.11.03 |