아두이노 기본실습 3 - 패시브버저 Passive Buzzer 구동실험

여기서는 패시브버저(Passive Buzzer)를 가지고 소리를 내는 실험을 해봅니다. 아두이노 우노보드에서는 2 가지의 주파수를 만들어내고 이 를 디지털IO 포트로 출력하는 프로그램을 작성하게 됩니다.

버저에는 패시브버저와 액티브버저(Active Buzzer)가 있으며 이 둘의 차이점은 다음과 같습니다.

패시브버저

패시브버저는 일반적인 스피커와 비슷한 구조를 가지고 있으며, 전원만 가해서는 소리가 나지 않고 소리를 만들어 낼 수 있는 주파수를 만들어 출력해야 합니다. 아두이노 보드에서는 디지털 IO를 가지고 주파수를 만들어내며 이 주파수는  HIGH(SOUND ON), LOW(SOUND OFF)를 반복하며 ON 시간과 OFF 시간을 딜레이함수를 사용하여 제어하면 원하는 주파수를 만들어 낼 수 있습니다.

일반적으로 아두이노 보드의 디지털 IO 출력은 전류가 약하여 소리가 작으므로 더 큰 소리를 내기 위해서는 트렌지스터(TR) 등으로 소리를 증폭해야 합니다.

아래는 일반적인 패시브 버저의 모습입니다. 멀티테스터로 저항을 재어보면 8옴 또는 16옴으로 측정됩니다.

 

액티브버저

액티브버저는 단지 전원만 가하면 버저음이 울립니다. 따라서 아두이노 보드의 디지털 IO로 HIGH 신호를 보내면 버저가 울리고 LOW신호를 보내면 버저가 꺼집니다. LED를 ON/OFF 하는 것도 동일하다고 보시면 됩니다.

아래는 일반적인 액티브버저 모습니다. 테스터로 저항을 재어보면 수백옴 이상의 저항이 측정되는 것이 특징입니다.

 

아래는 패시브버저와 아두이노 보드와의 결선도 입니다. 패시브버저의 -를 아두이노 보드의 GND에 연결하고 +를 아두이노 보드의 디지털IO 7번과 연결하면 됩니다.

 

 

소스코드

아래는 소스코드입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드해봅니다.

// 아두이노 패시브버저 실험
int buzzer=7;//버저 출력용 디지털IO 설정
void setup()
{
  pinMode(buzzer,OUTPUT);//버저용 디지털IO를 출력으로 설정
}
void loop()
{
  unsigned char i,j;//변수 선언
  while(1)
  {
    for(i=0;i<80;i++)//출력 주파수
    {
      digitalWrite(buzzer,HIGH);//SOUND ON
      delay(1);//1ms 딜레이
      digitalWrite(buzzer,LOW);//SOUND OFF
      delay(1);//1ms 딜레이
    }
    for(i=0;i<100;i++)//출력 주파수
    {
      digitalWrite(buzzer,HIGH);//SOUND ON
      delay(2);//2ms
      digitalWrite(buzzer,LOW);//SOUND OFF
      delay(2);//2ms
    }
  }
}

업로드가 완료되면 패시브버저에서 2가지의 주파수(500Hz, 250Hz)로 소리가 출력되는 것을 확인할 수 있습니다.