아두이노:초음파센서
아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노
- 아두이노:개요
- 아두이노:하드웨어
- 아두이노:코드
- 아두이노:핀 사용
- 아두이노:시리얼 통신
- 아두이노:편의함수
- 센서 사용
- 아두이노:LCD 사용
- 아두이노:스위치 사용
- 아두이노:릴레이
- 아두이노:WIFI
- 아두이노:해결되지 않은 다양한 의문들
- 수업용 간단 실습
- 분류:아두이노 프로젝트
개요
초음파를 이용하여 일반적으로 거리를 측정한다. 보통 VCC로 5V, 15mA전원을 받고, GND를 접지시킨다.
원리
원리 | 설명 |
---|---|
과학적 원리 | 초음파를 방출한 후, 수신되기까지의 시간을 계산하여 측정한다.
소리의 속도는 (B는 부피탄성, rho는 밀도)이다. 대충 (T는 섭씨온도)가 된다. ∴상온에선 대강 340m/s 이라고 보면 된다. 거리는 이므로 이를 계산해내면 거리를 알 수 있다. |
공학적 원리 | Trig핀에 5V를 입력해주면 초음파를 낸다. 여기서 나온 초음파는 수신부로 돌아와 Echo핀으로 그 값이 입력된다.(디지털 5V) 이를 이용해 거리를 측정한다. |
사용법
연결방법 및 하드웨어 스펙
종류 | 설명 | 연결예시 |
---|---|---|
HC-SR04 | 5V를 받아 2cm~450cm까지 측정한다. | 링크 |
HC-SR04+ | HC-SR04과 사용법은 동일.
2~450cm (5V 기준), 2~400cm (3.3V 기준) |
|
US-015 | HC-SR04보다 정밀함. 사용법은 위와 동일.
측정 범위 : 2~400cm, 정밀도 : 약 0.1mm |
|
방수 초음파 거리센서 | 작동 온도: -10~70℃, 최대 측정거리: 약 5m | 링크 |
코드
해설 없는 원본
int trigPin = 13;
int echoPin = 12;
void setup()
{
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 17 / 1000;
Serial.println(distance);
delay(100);
}
해설본
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;
/* 코드에 17이라는 수가 붙는데, 이는 소리의 속도를 340으로 가정한 후 계산한 값이다.
초음파센서에서 측정된 시간은 음파가 갔다 오기까지의 거리.
때문에 거리*2 만큼 측정되고, 거리를 구하기 위해 2로 나누어 17이 나왔다.
기본단위는 m이기 때문에 100으로 나누어 cm단위로 만들면 보기 편해진다. +센서가 측정한 시간단위도 고려.*/
Serial.println(distance);
delay(100);
}
해볼 만한 과제
- 과학적 원리에 대해 조사 발표.
- 위 코드를 해석, 발표.
- 온도센서를 통해 온도값 T를 얻는다면 코드를 어떻게 고치면 좋을까?
- 시리얼모니터에 단위가 뜨지 않아 헷갈린다. 단위까지 띄우려면 어떻게 해야 할까?
- 이것으로 할 수 있는 활동은 어떤 것들이 있을까?