아두이노:초음파센서: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
편집 요약 없음 |
잔글 (→연결방법 및 하드웨어 스펙) |
||
(같은 사용자의 중간 판 5개는 보이지 않습니다) | |||
4번째 줄: | 4번째 줄: | ||
초음파를 이용하여 일반적으로 거리를 측정한다. 보통 VCC로 5V, 15mA전원을 받고, GND를 접지시킨다. | 초음파를 이용하여 일반적으로 거리를 측정한다. 보통 VCC로 5V, 15mA전원을 받고, GND를 접지시킨다. | ||
=== 원리 === | ===원리=== | ||
{| class="wikitable" | |||
!원리 | |||
!설명 | |||
|- | |||
|과학적 원리 | |||
|초음파를 방출한 후, 수신되기까지의 시간을 계산하여 측정한다. | |||
= | 소리의 속도는 <math>v=\sqrt{\tfrac{B}{\rho}}</math> (B는 부피탄성, rho는 밀도)이다. 대충 <math>v=331.5 + 0.61T</math>(T는 섭씨온도)가 된다. ∴상온에선 대강 340m/s 이라고 보면 된다. | ||
= | 거리는 <math>d= (v * time) / 2</math> 이므로 이를 계산해내면 거리를 알 수 있다. | ||
|- | |||
|공학적 원리 | |||
|Trig핀에 5V를 입력해주면 초음파를 낸다. 여기서 나온 초음파는 수신부로 돌아와 Echo핀으로 그 값이 입력된다.(디지털 5V) 이를 이용해 거리를 측정한다. | |||
|} | |||
<br /> | |||
=사용법= | |||
== 코드 == | ==연결방법 및 하드웨어 스펙== | ||
{| class="wikitable" | |||
!종류 | |||
!설명 | |||
!연결예시 | |||
|- | |||
|HC-SR04 | |||
|5V를 받아 2cm~450cm까지 측정한다. | |||
|[https://postfiles.pstatic.net/MjAxNzAxMDlfMjAw/MDAxNDgzOTQwOTUxNjU3.bH4kF3l7KcGev6_sGRBirdeOFPsHvci5kuYtTXY-y2sg.XOKICjFdglemqkMMdOjJ3rIh0t16ALj3PWGm9za0K90g.JPEG.roboholic84/HC-SR04-Example_bb.jpg?type=w2 링크] | |||
|- | |||
|HC-SR04+ | |||
|HC-SR04과 사용법은 동일. | |||
2~450cm (5V 기준), 2~400cm (3.3V 기준) | |||
| | |||
|- | |||
|US-015 | |||
|HC-SR04보다 정밀함. 사용법은 위와 동일. | |||
측정 범위 : 2~400cm, 정밀도 : 약 0.1mm | |||
| | |||
|- | |||
|방수 초음파 거리센서 | |||
|작동 온도: -10~70℃, 최대 측정거리: 약 5m | |||
|[https://mechasolution.com/shop/goods/goods_view.php?goodsno=583208&category= 링크] | |||
|} | |||
==코드== | |||
===해설 없는 원본=== | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
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); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== | ===해설본=== | ||
코드에 17이라는 수가 붙는데, 이는 소리의 속도를 340으로 가정한 후 계산한 값이다. 초음파센서에서 측정된 시간은 음파가 갔다 오기까지의 거리. 때문에 | <syntaxhighlight lang="c++"> | ||
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); | |||
} | |||
</syntaxhighlight> | |||
=해볼 만한 과제= | |||
*과학적 원리에 대해 조사 발표. | |||
*위 코드를 해석, 발표. | |||
*온도센서를 통해 온도값 T를 얻는다면 코드를 어떻게 고치면 좋을까? | |||
*시리얼모니터에 단위가 뜨지 않아 헷갈린다. 단위까지 띄우려면 어떻게 해야 할까? | |||
*이것으로 할 수 있는 활동은 어떤 것들이 있을까? |
2024년 4월 2일 (화) 15:20 기준 최신판
아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노
- 아두이노:개요
- 아두이노:하드웨어
- 아두이노:코드
- 아두이노:핀 사용
- 아두이노:시리얼 통신
- 아두이노:편의함수
- 센서 사용
- 아두이노: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를 얻는다면 코드를 어떻게 고치면 좋을까?
- 시리얼모니터에 단위가 뜨지 않아 헷갈린다. 단위까지 띄우려면 어떻게 해야 할까?
- 이것으로 할 수 있는 활동은 어떤 것들이 있을까?