본문 바로가기
Coding/Arduino

아두이노 초음파 센서 HC-SR04 다루기

by 루민즈 2022. 7. 8.
반응형

안녕하세요 

아두이노 초음파 센서 HC-SR04를 다뤄 봅시다. 

초음파 센서를 다루기 전에 

초음파란 무엇일까요? 

 

초음파

초음파란 사람의 귀로 들을 수없는 높은 주파수를 가진 소리입니다.

사람이 들을 수 있는 소리는 20Hz~20,000Hz입니다. 즉 20,000hz 이상의 주파수를 가진 소리가 

초음파입니다.  

 

박쥐나 돌고래가 자신들의 생리적 자극으로 초음파를 발생하여 물체를 알아내는 음파 위치인식을 하고 있다고 합니다.

 

초음파 센서 출처 : 알파 마이크로

 

초음파  센서 원리

 

 

초음파 센서는 일정한 간격으로 높은 주파수 사운드 펄스를 통하여 짧게 소리를 발사합니다. 

그리고 펄스가 물체에 충돌했을 때 센서에게 에코 신호로 반사되어 올 것이고 이 시간을 측정해 

목표까지의 거리를 측정할 수 있습니다. 

 

실험

회로는 다음과 같이 연결해주세요 

 

초음파 센서를 잘 보시면 VCC, GND, Trig, Echo가 있는 걸 확인할 수 있습니다. 

Trig에서 10 마이크로 펄스를 보내고 

Echo가 보낸 펄스를 수신합니다. 그리고 같은 펄스를 만듭니다. 그러면 펄스 간의 지속시간이 생기는데 

arduino가 이 펄스의 지속 시간을 측정하여 거리를 계산합니다. 

 

제품 특성상 브레드보드를 쓰면 좋을 거 같습니다. 

 

 

 

아두이노 코드

코드는 다음과 같이 작성해주세요 

int trigPin = 9;    // TRIG pin
int echoPin = 8;    // ECHO pin

float duration_us, distance_cm;

void setup() {
  // begin serial port
  Serial.begin (9600);

  // configure the trigger pin to output mode
  pinMode(trigPin, OUTPUT);
  // configure the echo pin to input mode
  pinMode(echoPin, INPUT);
}

void loop() {
  
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration_us = pulseIn(echoPin, HIGH);

  distance_cm = 0.017 * duration_us;

  Serial.print("distance: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  delay(500);
}

 

코드를 잘 보시면 이 부분이 있는데 

 digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

이 부분이 10 마이크로 펄스를 생성하는 부분입니다.

 

그리고 

duration_us = pulseIn(echoPin, HIGH);

  distance_cm = 0.017 * duration_us;

 이 부분이 있는데 duration은 한국말로 지속이라는 뜻입니다. 즉 지속시간을 계산하는 코드이고 

이 지속시간으로 0.017 곱해야 cm가 나옵니다. 

 

거리 계산

거리 계산은 다음과 같이 합니다.

먼저 초음파의 이동시간(µs)을 구합니다.

그리고 초음파의 속도 = 340m/s = 0.034cm/µs

이므로

 

초음파의 이동 거리는 속도 x 이동시간이고 

나누기 2를 해줍니다. 

왜냐면 왔다 갔다 했기 때문입니다. 

그래서 0.034 / 2 * 이동시간이라는 공식이 나옵니다. 

 

실험 결과

 

 

 

잘 나오네요 

이상 글 읽어주셔서 감사합니다.


Post

다음글 무직자 대출 알아보기 >