커뮤니티

  • 제 목 [ 기초 ] 아두이노 실습 - 초음파 센서를 활용한 거리측정
  • 작성자 주피터 조회 : 7,498 좋아요 : 0 댓글 : 0
  • 작성일 2019-10-28 오전 11:24:21
  • 초음파 센서 모듈을 이용한 거리측정

     

                                                            ⓞ초음파 선세 모듈 HC-SR04

     

                1. 작동전압:DC5V

                2. 작동전류:15mA

                3. 탐지거리: 2Cm ~ 4M

                4. 크기: 45x20x15mm

     

    작동 방법

     

    (1) 최소 10us 정도의 트리거를 출력하여 초음파센서모듈에 Trig 핀으로 입력시킨다.

    (2) 초음파모듈은 Trig 핀으로 입력된 신호를 감지하고, 자동으로 여덟개의 40kHz 펄스로 음파를 송신합니다.

    (3) 이 때부터 echo핀은 High 상태가 되고, 음파가 반사되어 돌아와서 수신되면 echo핀으로 Low상태가 된다.

    음파가 송신되어 돌아올때 까지의 High신호의 주기가 왕복시간 이 됩니다.

     

    * 음속은 초당 340M 또는 29 microseconds 당 1Cm 거리를 이동합니다.

    * 음파는 반사되어 돌아오고, 왕복거리 이므로 2로 나누어 줍니다.

    * 거리(Cm) = 왕복시간(uSec) / 29 / 2  

     

     

                                                                  ⓞ 그림 - 작동 펄스

     

                       

                                                                       ⓞ 그림 - 핀 배치

     

                                                   

                                                                         ⓞ 실물 규격

     

     

    주요 사양

     

        1. 작동전압: DC5V

        2. 대기전류: <2mA

        3. 레벨출력: high:5V ,low:0V

        4. 유도각도: not more than 15 degrees:

        5. 감지범위: 2cm-400cm

        6. 정 밀 도: 최대 0.2cm

     

                                  

                                                                          ⓞ 하드웨어 구성

     

     

    스케치 작성

     

    < 초기화 부분 >

     

     

     

    < 반복 함수 부분 >

     

     

     

    < 거리구하기 함수 >

     

     

    시리얼 모니터 결과

     

                                    

                                                                ⓞ 시리얼 모니터 거리측정 결과

     

    const int TriggerPin = 13;
    const int EchoPin = 12;
    long Duration = 0;
    
    void setup()
    {
       pinMode(TriggerPin, OUTPUT);
       pinMode(EchoPin, INPUT);
       Serial.begin(9600);
    }
    
    void loop()
    {
       digitalWrite(TriggerPin, LOW);
       delayMicroseconds(2);
       digitalWrite(TriggerPin, HIGH);
       delayMicroseconds(10);
       digitalWrite(TriggerPin, LOW);
    
       Duration = pulseIn(EchoPin, HIGH);
    
       long Distance_mm = Distance(Duration);
    
       Serial.print("Distance = ");
       Serial.print(Distance_mm);
       Serial.println(" mm");
    
       delay(1000);
    }
    
    long Distance(long time)
    {
       long DistanceCalc;
       DistanceCalc = ((time/2.9)/2);
       return DistanceCalc;
    }