* 개인 학습 목적으로 작성되었습니다.
1. 초음파 센서 (Ultrasonic Sensor)
초음파의 특성을 이용하거나 초음파를 발생시켜 가까운 거리에 있는 물체 혹은 사람의 유무, 거리 및 속도 측정 등에 사용
초음파 소자는 고유 진동에 상당하는 교류전압을 가하면 압전 효과에 의해서 효율이 좋게 진동해서 초음파를 발생 시킵니다.
- 광학 센서 및 IR 센거와 달리 색상에 독립적으로 작동합니다.
즉, 물체의 색상이 측정 정확도에 영향을 미치지 않음을 의미합니다.
- 유리 및 물과 같이 반투명하거나 투명한 타겟도 측정에 영향을 미치지 않습니다.
- 넓은 범위의 물체 감지 및 거리 측정을 제공합니다.
2. 동작 원리
물체에 반사된 음파를 그대로 센서로 입력 (진동) 시켜서 발생된 전압을 회로에서 처리해 측정 거리를 계산합니다.
- 파장과 분해능: 파장이 짧으면 거리 방향의 분해능이 높고 정밀도가 높아집니다.
- 파장의 반사: 물체의 유/무 감지를 위해 초음파가 물체에 닿으면 반사됩니다.
- 온도 영향: 물체까지의 거리를 정밀하게 측정하기 위해서는 온도에 따른 보정이 필요합니다.
* MCU에서 초음파 센서의 정밀도를 확보하기 위해서 온도센서를 같이 사용하기도 함.
3. 초음파 센서 기술
3.1. 초음파 센서 종류
- 아날로그 센서:
초음파 처프를 생성하고 해당하는 에코를 수신하며, 이후 디지털 형식으로 변환이 필요
* 시스템 설계자는 계산 시, 아날로그 --> 디지털 변환 지연을 고려해야함.
- 디지털 센서:
디지털 센서 모듈에는 통신 버스를 통해 마스터 시스템 MCU로 수치를 전송하기 전에,
거리를 수행하는 슬레이브 MCU를 포함하고 있습니다.
4. 어플리케이션
- 물체, 장애물, 사람 감지
- 레벨 측정
- 두께 측정
- 투명 물체 감지
- 릴 (Reel) 감지
- 바람 제어
- 건설 기계, 자동 도어 및 산업용 도어 감지
5. 장단점
장점 | 단점 |
물체 색상 및 투명도에 영향 없음 (유리, 물, 투명/반투명 타겟) |
온도 및 습도에 영향을 받음 |
물체 감지 및 거리 측정을 위한 뛰어난 유연성 제공 | 물체의 위치를 나타내거나 모양이나 색상에 대한 정보를 얻을 수 없음 |
산업용 및 자동차용 제품에 적합 | 컴팩트한 제품에 적합하지 않음 |
전기적 잡음에 대한 높은 내성을 가지고 있음 | 진공 상태에서는 사용할 수 없음 |
배경 음향 잡음의 영향을 적게 받기 위해 처프를 전송하도록 설계 가능 | |
초당 여러번의 특정이 요구되는 제품에서 사용 가능 | |
구하기 쉽고 상대적으로 저렴함 |
출처: https://www.freecon.co.kr/?act=board&bbs_code=solu&page=2&bbs_mode=view&bbs_seq=10
Vcc = 5VDC
Trig = 10us TTL신호를 전달 (MCU --> Sensor)
Echo = Echo back 신호 , pulse의 길이가 , 거리를 의미함
라이브러리 코드는 아래와 같다.
10us GPIO OUT High 유지구간에 따라서 출력이 나간다.
에코핀을 PulseIn이라는 아두이노 내부 함수로 읽는다. 해당 함수 원형은 밑에 첨부하였다.
이는 us단위로 해당 값을 반환해준다.
그 후 데이터시트처럼 값을 cm단위로 반환 받을 수 있도록 한다.
/*
Ultrasonic.cpp - Library for HC-SR04 Ultrasonic Ranging Module.library
Created by ITead studio. Apr 20, 2010.
iteadstudio.com
*/
#include "Arduino.h"
#include "Ultrasonic.h"
Ultrasonic::Ultrasonic(int TP, int EP)
{
pinMode(TP,OUTPUT);
pinMode(EP,INPUT);
Trig_pin=TP;
Echo_pin=EP;
}
long Ultrasonic::Timing()
{
digitalWrite(Trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(Trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(Trig_pin, LOW);
duration = pulseIn(Echo_pin,HIGH);
return duration;
}
long Ultrasonic::Ranging(int sys)
{
Timing();
distacne_cm = duration /29 / 2 ;
distance_inc = duration / 74 / 2;
if (sys)
return distacne_cm;
else
return distance_inc;
}
'로보틱스 > physical device' 카테고리의 다른 글
LiDAR, 라이다 센서 원리, 종류, 특징, 단점, 예제, 아두이노(TFmini Plus LiDAR) (0) | 2025.04.04 |
---|---|
PIO (0) | 2025.04.01 |
BLDC, Stepper, DC Motor 차이점 및 스펙 분석 (0) | 2025.03.30 |