커뮤니티
- 제 목 [ 기초 ] 아두이노 실습 - 초음파 센서를 활용한 거리측정
- 작성자 주피터 조회 : 9,984 좋아요 : 0 댓글 : 0
- 작성일 2019-10-28 오전 11:24:21
-
초음파 센서 모듈을 이용한 거리측정
ⓞ초음파 선세 모듈 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; }