아두이노:초음파센서

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 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를 얻는다면 코드를 어떻게 고치면 좋을까?
  • 시리얼모니터에 단위가 뜨지 않아 헷갈린다. 단위까지 띄우려면 어떻게 해야 할까?
  • 이것으로 할 수 있는 활동은 어떤 것들이 있을까?