아두이노:초음파센서
아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노
- 아두이노:개요
- 아두이노:하드웨어
- 아두이노:코드
- 아두이노:핀 사용
- 아두이노:시리얼 통신
- 아두이노:편의함수
- 센서 사용
- 아두이노:LCD 사용
- 아두이노:스위치 사용
- 아두이노:릴레이
- 아두이노:WIFI
- 아두이노:해결되지 않은 다양한 의문들
- 수업용 간단 실습
- 분류:아두이노 프로젝트
개요
초음파를 이용하여 일반적으로 거리를 측정한다. 보통 VCC로 5V, 15mA전원을 받고, GND를 접지시킨다.
원리
원리 | 설명 |
---|---|
과학적 원리 | 초음파를 방출한 후, 수신되기까지의 시간을 계산하여 측정한다.
소리의 속도는 (B는 부피탄성, rho는 밀도)이다. 대충 (T는 섭씨온도)가 된다. ∴상온에선 대강 340m/s 이라고 보면 된다. 거리는 이므로 이를 계산해내면 거리를 알 수 있다. |
공학적 원리 | Trig핀에 5V를 입력해주면 초음파를 낸다. 여기서 나온 초음파는 수신부로 돌아와 Echo핀으로 그 값이 입력된다.(디지털 5V) 이를 이용해 거리를 측정한다. |
사용법
연결
종류 | 설명 | 연결예시 |
---|---|---|
HC-SR04+ | HC-SR04과 사용법은 동일. | 링크 |
코드
int trigPin = 13; // trig와 연결되는 핀 번호.
int echoPin = 12; // echo와 연결되는 핀 번호.
void setup()
{
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
// 변수 정의
long duration, distance;
// trig에서 초음파 발사~
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // 발사 멈추기.
// 거리 계산.
duration = pulseIn(echoPin, HIGH); // 되돌아온 시간을 저장. 단위는 μs.
distance = duration * 17 / 1000;
Serial.println(distance);
delay(100);
}
유의
코드에 17이라는 수가 붙는데, 이는 소리의 속도를 340으로 가정한 후 계산한 값이다. 초음파센서에서 측정된 시간은 음파가 갔다 오기까지의 거리. 때문에 거리*2
만큼 측정되고, 거리를 구하기 위해 2로 나누어 17이 나왔다. 기본단위는 m이기 때문에 100으로 나누어 cm단위로 만들면 보기 편해진다. +센서가 측정한 시간단위도 고려.