3D프린터와 아두이노/아두이노

아두이노 초음파 센서와 부저 활용

메카럽 2020. 10. 13. 09:51

안녕하세요. 메카럽입니다.

이번 포스팅에서는 지난 포스팅에 이어서 초음파 센서와 부저를 이용하여 근접 감지기를 만들어 보도록 하겠습니다.

근접 감지기는 포탄이나 유도탄의 거리, 표적의 속도, 회피기동, 센서 오차 등을 감안할 때 대공포나 대공 유도탄으로 직접 타격하는 것에 많은 어려움이 있습니다. 표적 근처까지 탄을 보낼 수 있으나 직접 타격하는데 기술적, 확률적 어려움이 있기에 명중에 이르기까지 많은 탄이 소비되는 문제가 있습니다. 그래서 제2차 세계대전을 거치며 개발된 것이 근접 신관(Proximity Fuze)입니다. 전파 따위를 송출하여 가까운 거리의 물체를 맞고 반사되는 파가 확인되면 기폭 신호를 출력하여 탄을 터뜨리는 방식입니다.

일상에서 근접 신관과 비슷한 방법으로 구현된 것이 차량용 후방 감지기, 스마트폰의 근접 센서입니다. 차량용 후방 감지기는 초음파 센서의 반사파 입력에 대한 거리 변화에 따라 운전자에게 소리 종류나 크기를 변화시켜주는 역할을 합니다. 스마트폰의 근접 센서는 사용자가 전화 통화를 할 때 활성화 되는데, 거의 대부분 스마트폰의 전면 디스플레이가 터치스크린으로 이루어진 만큼 통화 중 사용자의 뺨 등에 의해 오작동하는 것을 막기 위해 사용합니다.

이러한 원리는 토대로 초음파 센서에서 수신된 거리에 따라 부저음을 달리 내는 장치를 만들어 보겠습니다.

준비물 : 아두이노 우노, 초음파센서, 부저, F-M점퍼선, 브레드 보드

근접 감지기 회로구성

다음은 근접 감지기 스케치입니다. 초음파 센서로 측정된 거리와 부저음 디지털 핀을 맵핑하여 거리에 따른 부저음 간격을 조정하였습니다. 또는 tone( ) 함수를 사용하여 부저의 주파수를 변경하여 알리는 방법도 고려할 수 있습니다.

const int trigPin=7;
const int echoPin=6;
const int buz=5;

void setup()
{
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(5, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  int distance=pulseIn(echoPin, HIGH)*17/1000;
  Serial.println(distance);

  if(distance>60&&distance<100)
  {
    tone(buz, 2093, 800);
    delay(1000);
  }

  else if(distance<=60&&distance>30)
  {
    tone(buz, 2093, 800);
    delay(700);
  }

  else if(distance<=30&&distance>10)
  {
    tone(buz, 2093, 800);
    delay(300);
  }

  else if(distance<=10)
  {
    tone(buz, 2093, 800);
    delay(100);
  }

  else
  {
    tone(buz, 2093, 800);
    delay(1500);
  }
}

초음파 근접센서 회로구성 및 실행결과는 아래와 같습니다.

초음파 근접센서 회로구성

근접센서 실행 동영상

거리에 따라 부저의 간격이 달라지는 것을 확인 할 수 있었습니다.

다음 포스팅에서는 온도센서에 대해 알아보도록 하겠습니다. 오늘 하루도 행복하세요.

728x90