[ 기초 ] 아두이노 실습 - 초음파 센서를 활용한 거리측정
아두이노와 초음파 센서(HC-SR04)를 이용하여 거리를 측정해 본다
초음파 센서 모듈을 이용한 거리측정
ⓞ초음파 선세 모듈 HC-SR04
1. 작동전압:DC5V
2. 작동전류:15mA
3. 탐지거리: 2Cm ~ 4M
4. 크기: 45x20x15mm
작동 방법
(1) 최소 10us 정도의 트리거를 출력하여 초음파센서모듈에 Trig 핀으로 입력시킨다.
(2) 초음파모듈은 Trig 핀으로 입력된 신호를 감지하고, 자동으로 여덟개의 40kHz 펄스로 음파를 송신합니다.
(3) 이 때부터 echo핀은 High 상태가 되고, 음파가 반사되어 돌아와서 수신되면 echo핀으로 Low상태가 된다.
음파가 송신되어 돌아올때 까지의 High신호의 주기가 왕복시간 이 됩니다.
* 음속은 초당 340M 또는 29 microseconds 당 1Cm 거리를 이동합니다.
* 음파는 반사되어 돌아오고, 왕복거리 이므로 2로 나누어 줍니다.
* 거리(Cm) = 왕복시간(uSec) / 29 / 2
ⓞ 그림 - 작동 펄스
ⓞ 그림 - 핀 배치
ⓞ 실물 규격
주요 사양
1. 작동전압: DC5V
2. 대기전류: <2mA
3. 레벨출력: high:5V ,low:0V
4. 유도각도: not more than 15 degrees:
5. 감지범위: 2cm-400cm
6. 정 밀 도: 최대 0.2cm
ⓞ 하드웨어 구성
스케치 작성
< 초기화 부분 >
< 반복 함수 부분 >
< 거리구하기 함수 >
시리얼 모니터 결과
ⓞ 시리얼 모니터 거리측정 결과
const int TriggerPin = 13;
const int EchoPin = 12;
long Duration = 0;
void setup()
{
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(TriggerPin, LOW);
delayMicroseconds(2);
digitalWrite(TriggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(TriggerPin, LOW);
Duration = pulseIn(EchoPin, HIGH);
long Distance_mm = Distance(Duration);
Serial.print("Distance = ");
Serial.print(Distance_mm);
Serial.println(" mm");
delay(1000);
}
long Distance(long time)
{
long DistanceCalc;
DistanceCalc = ((time/2.9)/2);
return DistanceCalc;
}