아두이노:초음파센서: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
편집 요약 없음
 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
4번째 줄: 4번째 줄:
초음파를 이용하여 일반적으로 거리를 측정한다. 보통 VCC로 5V, 15mA전원을 받고, GND를 접지시킨다.
초음파를 이용하여 일반적으로 거리를 측정한다. 보통 VCC로 5V, 15mA전원을 받고, GND를 접지시킨다.


=== 원리 ===
===원리===
Trig핀에 5V를 입력해주면 초음파를 낸다. 여기서 나온 초음파는 수신부로 돌아와 Echo핀으로 그 값이 입력된다.(디지털 5V) 이를 이용해 거리를 측정한다.
{| 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> 이므로 이를 계산해내면 거리를 알 수 있다.
https://postfiles.pstatic.net/MjAxNzAxMDlfMjAw/MDAxNDgzOTQwOTUxNjU3.bH4kF3l7KcGev6_sGRBirdeOFPsHvci5kuYtTXY-y2sg.XOKICjFdglemqkMMdOjJ3rIh0t16ALj3PWGm9za0K90g.JPEG.roboholic84/HC-SR04-Example_bb.jpg
|-
|공학적 원리
|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으로 가정한 후 계산한 값이다. 초음파센서에서 측정된 시간은 음파가 갔다 오기까지의 거리. 때문에 <code>거리*2</code> 만큼 측정되고, 거리를 구하기 위해 2로 나누어 17이 나왔다. 기본단위는 m이기 때문에 100으로 나누어 cm단위로 만들면 보기 편해진다. +센서가 측정한 시간단위도 고려.
<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 기준 최신판

아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노

  1. 아두이노:개요
  2. 아두이노:하드웨어
    1. 아두이노:우노보드
  3. 아두이노:코드
    1. 아두이노:기초 문법
    2. 아두이노:라이브러리
    3. 아두이노:컴퓨터에서 보드로
    4. 아두이노:안드로이드에서 보드로
  4. 아두이노:핀 사용
    1. 아두이노:전원공급
  5. 아두이노:시리얼 통신
    1. 아두이노:엑셀기록
    2. 아두이노:파이썬과 통신
  6. 아두이노:편의함수
  7. 센서 사용
    1. 아두이노:모션센서
    2. 아두이노:온습도센서
    3. 아두이노:조도센서
    4. 아두이노:pH미터 만들기(Gravity 아날로그 pH센서)
  8. 아두이노:LCD 사용
  9. 아두이노:스위치 사용
  10. 아두이노:릴레이
  11. 아두이노:WIFI
  12. 아두이노:해결되지 않은 다양한 의문들
  13. 수업용 간단 실습
    1. 아두이노:LED
    2. 아두이노:초음파센서
  14. 분류:아두이노 프로젝트

개요[편집 | 원본 편집]

초음파를 이용하여 일반적으로 거리를 측정한다. 보통 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를 얻는다면 코드를 어떻게 고치면 좋을까?
  • 시리얼모니터에 단위가 뜨지 않아 헷갈린다. 단위까지 띄우려면 어떻게 해야 할까?
  • 이것으로 할 수 있는 활동은 어떤 것들이 있을까?