아두이노:초음파센서

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2023년 6월 24일 (토) 10:23 판 (→‎원리)
둘러보기로 이동 검색으로 이동

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

  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과 사용법은 동일. 링크

코드

해설 없는 원본

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