로봇의 감각 기관: 초음파 센서로 거리 측정하기 > 초보자를 위한 로봇 프로젝트

본문 바로가기
사이트 내 전체검색

초보자를 위한 로봇 프로젝트

로봇의 감각 기관: 초음파 센서로 거리 측정하기

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 296회 작성일 25-11-20 14:30

본문

로봇의 감각 기관: 초음파 센서로 거리 측정하기

초음파 센서는 눈에 보이지 않는 소리(초음파)를 이용하여 주변 물체까지의 거리를 측정하는 장치입니다. 로봇이 장애물을 피하거나, 벽과의 거리를 유지하거나, 심지어 특정 물체의 위치를 감지하는 데 활용됩니다.


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를 확인하는 것이 좋습니다.

환경 노이즈: 초음파는 다른 초음파 센서의 신호나 주변 소음의 영향을 받을 수 있습니다. 주변에 다른 초음파 기기가 있다면 오작동할 가능성이 있습니다.

데이터 필터링: 센서 값이 불안정하게 튀는 경우가 있다면, 여러 번 값을 읽어 평균을 내거나 이동 평균 필터 등을 적용하여 데이터를 안정화할 수 있습니다.

서보 모터와 조합: 서보 모터에 초음파 센서를 달아 좌우로 회전시키면, 로봇이 전방뿐만 아니라 좌우 공간도 탐색할 수 있어 더 넓은 시야를 확보하게 됩니다. (장애물 회피, 미로 탈출 로봇 등)

초음파 센서는 로봇에게 '거리'라는 중요한 정보를 제공하여 주변 환경을 '감지'할 수 있도록 해줍니다. 이 로봇의 감각 기관을 잘 활용하여 당신의 로봇이 더욱 똑똑하고 안전하게 움직이도록 만들어 보세요!

[이 게시물은 관리자님에 의해 2025-11-22 10:15:07 초보자를 위한 로봇 프로젝트에서 이동 됨]
[이 게시물은 관리자님에 의해 2025-11-29 13:01:12 18에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.


회사소개 개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

작크와콩나무
대표:이강복 등록번호:129-30-34337 개인정보관리책임자:이경영

Copyright © https://roboman.co.kr/ All rights reserved.