안녕하세요
아두이노 초음파 센서 HC-SR04를 다뤄 봅시다.
초음파 센서를 다루기 전에
초음파란 무엇일까요?
초음파
초음파란 사람의 귀로 들을 수없는 높은 주파수를 가진 소리입니다.
사람이 들을 수 있는 소리는 20Hz~20,000Hz입니다. 즉 20,000hz 이상의 주파수를 가진 소리가
초음파입니다.
박쥐나 돌고래가 자신들의 생리적 자극으로 초음파를 발생하여 물체를 알아내는 음파 위치인식을 하고 있다고 합니다.
초음파 센서 원리
초음파 센서는 일정한 간격으로 높은 주파수 사운드 펄스를 통하여 짧게 소리를 발사합니다.
그리고 펄스가 물체에 충돌했을 때 센서에게 에코 신호로 반사되어 올 것이고 이 시간을 측정해
목표까지의 거리를 측정할 수 있습니다.
실험
회로는 다음과 같이 연결해주세요
초음파 센서를 잘 보시면 VCC, GND, Trig, Echo가 있는 걸 확인할 수 있습니다.
Trig에서 10 마이크로 펄스를 보내고
Echo가 보낸 펄스를 수신합니다. 그리고 같은 펄스를 만듭니다. 그러면 펄스 간의 지속시간이 생기는데
arduino가 이 펄스의 지속 시간을 측정하여 거리를 계산합니다.
제품 특성상 브레드보드를 쓰면 좋을 거 같습니다.
아두이노 코드
코드는 다음과 같이 작성해주세요
int trigPin = 9; // TRIG pin
int echoPin = 8; // ECHO pin
float duration_us, distance_cm;
void setup() {
// begin serial port
Serial.begin (9600);
// configure the trigger pin to output mode
pinMode(trigPin, OUTPUT);
// configure the echo pin to input mode
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration_us = pulseIn(echoPin, HIGH);
distance_cm = 0.017 * duration_us;
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(500);
}
코드를 잘 보시면 이 부분이 있는데
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
이 부분이 10 마이크로 펄스를 생성하는 부분입니다.
그리고
duration_us = pulseIn(echoPin, HIGH);
distance_cm = 0.017 * duration_us;
이 부분이 있는데 duration은 한국말로 지속이라는 뜻입니다. 즉 지속시간을 계산하는 코드이고
이 지속시간으로 0.017 곱해야 cm가 나옵니다.
거리 계산
거리 계산은 다음과 같이 합니다.
먼저 초음파의 이동시간(µs)을 구합니다.
그리고 초음파의 속도 = 340m/s = 0.034cm/µs
이므로
초음파의 이동 거리는 속도 x 이동시간이고
나누기 2를 해줍니다.
왜냐면 왔다 갔다 했기 때문입니다.
그래서 0.034 / 2 * 이동시간이라는 공식이 나옵니다.
실험 결과
잘 나오네요
이상 글 읽어주셔서 감사합니다.
'Coding > Arduino' 카테고리의 다른 글
아두이노 우노랑 OV7670로 카메라 만들기 (0) | 2022.07.10 |
---|---|
아두이노 인체 감지센서 HC-SR501 다루기 (0) | 2022.07.08 |
아두이노 프로미니로 스마트 조명 스위치 만들기 (0) | 2022.07.07 |
아두이노 조도센서 DM460로 스마트 LED 만들기 (0) | 2022.07.07 |
아두이노 우노로 아두이노 프로 미니 업로드 하기 (0) | 2022.07.07 |