로봇의 감각 기관: 초음파 센서로 거리 측정하기
페이지 정보
작성자 관리자 작성일 25-11-20 14:30 조회 287 댓글 0본문
로봇의 감각 기관: 초음파 센서로 거리 측정하기
초음파 센서는 눈에 보이지 않는 소리(초음파)를 이용하여 주변 물체까지의 거리를 측정하는 장치입니다. 로봇이 장애물을 피하거나, 벽과의 거리를 유지하거나, 심지어 특정 물체의 위치를 감지하는 데 활용됩니다.
1. 초음파 센서, 어떻게 거리 감지 마법을 부릴까요? (작동 원리)
초음파 센서(예: HC-SR04)는 마치 박쥐나 돌고래처럼 소리를 사용하여 주변을 감지합니다.
초음파 발사 (Trig 핀): 센서 내부에 있는 송신기가 인간의 귀로는 들을 수 없는 **초음파(Ultrasonic Wave)**를 발사합니다. 이는 아두이노에서 Trig 핀에 짧은 신호를 줌으로써 시작됩니다.
초음파 반사: 발사된 초음파는 앞에 있는 물체에 부딪히면 반사되어 되돌아옵니다.
초음파 수신 (Echo 핀): 센서 내부에 있는 수신기가 반사되어 돌아온 초음파를 감지합니다. 이는 Echo 핀에서 신호를 받음으로써 아두이노에 전달됩니다.
시간 측정 및 거리 계산: 아두이노는 초음파가 발사된 순간부터 다시 수신될 때까지 걸린 시간을 측정합니다. 그리고 이 시간을 이용하여 다음과 같은 공식으로 거리를 계산합니다.
거리 = 시간 × 소리의 속도 / 2
'소리의 속도'는 약 340m/s (온도에 따라 약간 달라짐) 또는 0.034cm/μs 입니다.
' / 2 '를 하는 이유는 초음파가 '갔다가' '돌아오는' 왕복 시간이기 때문입니다.
2. 초음파 센서 연결하기 (HC-SR04 기준)
HC-SR04 초음파 센서는 주로 4개의 핀을 가지고 있습니다.
VCC: 전원 공급 (+5V)
GND: 접지
Trig (Trigger): 초음파를 발사하는 핀 (아두이노의 디지털 출력 핀에 연결)
Echo: 초음파를 수신하는 핀 (아두이노의 디지털 입력 핀에 연결)
배선 예시:
HC-SR04 VCC → 아두이노 5V
HC-SR04 GND → 아두이노 GND
HC-SR04 Trig → 아두이노 핀 4 (디지털 핀 아무거나 가능)
HC-SR04 Echo → 아두이노 핀 7 (디지털 핀 아무거나 가능)
3. 아두이노로 초음파 센서 값 읽기 (코딩 꿀팁)
아두이노에서는 pulseIn() 함수를 사용하여 Echo 핀으로 들어오는 신호의 시간을 측정합니다.
cpp
// 초음파 센서 핀 정의
const int trigPin = 4;
const int echoPin = 7;
void setup() {
pinMode(trigPin, OUTPUT); // Trig 핀을 출력으로 설정
pinMode(echoPin, INPUT); // Echo 핀을 입력으로 설정
Serial.begin(9600); // 시리얼 통신 시작 (거리 값 출력용)
}
void loop() {
// 1. Trig 핀에 짧은 펄스를 보내 초음파 발사
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // 안정화를 위한 잠시 대기
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // 10us 동안 HIGH 유지 (초음파 발사)
digitalWrite(trigPin, LOW);
// 2. Echo 핀으로 초음파가 돌아올 때까지 걸린 시간 측정
long duration = pulseIn(echoPin, HIGH); // Echo 핀이 HIGH로 유지되는 시간을 측정
// 3. 측정된 시간으로 거리 계산
// 거리 = 시간 * 소리의 속도 / 2
// 소리의 속도 = 340m/s = 0.034cm/microsecond
long distance_cm = duration * 0.034 / 2;
// 시리얼 모니터에 거리 출력
Serial.print("Distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(100); // 0.1초마다 반복하여 거리 측정
}
코드 업로드 후 테스트: 아두이노에 코드를 업로드하고 시리얼 모니터를 엽니다. 초음파 센서 앞에 손을 가져다 대거나 멀리 떨어뜨려가면서 출력되는 거리 값이 변하는 것을 확인하세요.
4. 초음파 센서 사용 시 꿀팁
방향성: 초음파 센서는 원뿔 모양으로 초음파를 발사하고 수신합니다. 따라서 옆면에 있는 물체는 감지하지 못하고, 정면에 있는 물체만 감지합니다. 이 특성을 이용하여 특정 방향의 장애물 감지에 활용합니다.
물체 재질 영향: 초음파는 부드럽거나 흡음성이 있는 물체(커튼, 스펀지 등)에서는 반사가 잘 되지 않아 거리 측정이 불안정할 수 있습니다. 딱딱하고 평평한 물체에서 가장 잘 작동합니다.
최소/최대 측정 거리: HC-SR04의 경우 일반적으로 2cm ~ 400cm 정도의 거리를 측정할 수 있습니다. 센서에 따라 최소/최대 측정 거리가 다르므로 datasheet를 확인하는 것이 좋습니다.
환경 노이즈: 초음파는 다른 초음파 센서의 신호나 주변 소음의 영향을 받을 수 있습니다. 주변에 다른 초음파 기기가 있다면 오작동할 가능성이 있습니다.
데이터 필터링: 센서 값이 불안정하게 튀는 경우가 있다면, 여러 번 값을 읽어 평균을 내거나 이동 평균 필터 등을 적용하여 데이터를 안정화할 수 있습니다.
서보 모터와 조합: 서보 모터에 초음파 센서를 달아 좌우로 회전시키면, 로봇이 전방뿐만 아니라 좌우 공간도 탐색할 수 있어 더 넓은 시야를 확보하게 됩니다. (장애물 회피, 미로 탈출 로봇 등)
초음파 센서는 로봇에게 '거리'라는 중요한 정보를 제공하여 주변 환경을 '감지'할 수 있도록 해줍니다. 이 로봇의 감각 기관을 잘 활용하여 당신의 로봇이 더욱 똑똑하고 안전하게 움직이도록 만들어 보세요!
댓글목록 0
등록된 댓글이 없습니다.
