안녕하세요~~ 매드 입니다.
이번 시간에는 Buzzer 동작에 대해서 알아보도록 하겠습니다.
원래는 지난시간에 세그먼트에 대해서 하려고 했는데 Multi-Function 동작 중에 아직 안한 기능이 있어서 좀 더 쉬운것부터 하려고 골랐습니다~~
그럼 먼저 부저가 무엇인지부터 알아볼까요~?
7-1. 부저란?
<구글 사진> |
부저는 몇가지 종류가 있는데요. 저희가 일반적으로 보는 부저는 피에조 부저(piezo buzzer)라고 하는 것입니다~ 이게 무엇인고 하니 전압을 걸어주면 그에 따라 떨림이 발생하면서 그 원리로 소리가 나게되는 것이죠. 반대로는 피에조에 압력을 주게되면 전압이 발생하게 됩니다. 간단하죠~? 우리가 사용하는 부저 방식은 전압을 걸어서 떨리게 하여 소리가 나게 만드는 것이죠.
이런 피에조 부저는 다시 2가지 종류로 나뉘는데요. 일반적으로 피에조 부저에는 전압만 넣으면 아무소리도 나지 않습니다. 말씀드린데로 떨림을 만들어줘야 하는데 입력으로 주파수를 넣어주는 것이죠. 다른 하나는 이렇게 주파수 넣어주는 것도 귀찮아서 내부에 발진회로가 들어가 있는 부저 입니다. 이 부저의 경우에는 전원만 넣어도 소리가 나는 것이죠!
둘다 장단 점이 있는데요. PWM을 사용하는 부저는 원하는 음계의 소리를 낼 수가 있고 제어가 불편한 반면에 회로 내장형은 전원만 넣으면 소리가 나지만 원하는 음계를 표현하지 못하고 대신 편법이지만 PWM으로 소리 음량 조절은 가능하죠.
자.. 그럼 좀 더 자세히 알아볼까요!
7-2. 주파수와 소리
주파수를 넣어 원하는 음계를 만들 수 있는 부저에는 위와 같은 음계와 주파수의 관계를 통해서 원하는 소리를 만들어 낼 수 있습니다. 이는 곧 원하는 음악도 만들 수 있다는 것과 동일한 얘기이죠.
여기서 가장 중요한 것이 주파수(hz)는 알겠는데 이걸 어떻게 만들어주지? 일 것입니다.
아.. 여기서 중요한 공식 나오네요. V = IR 과 동등할 정도로 중요한 공식인데요.
바로
t(s) = 1/f(hz)
입니다. 시간을 주파수로 변경하고 주파수를 다시 시간으로 변경할 수 있는 바로 그 공식!! t는 초가 단위이며 f는 hz가 단위이니 변경하실 때는 단위에 주의하세요~
<구글 사진> |
그럼 아두이노에서는 PWM을 통해서 Period의 간격을 원하는대로 조절하여 부저에 넣어주면 원하는 음계의 소리를 낼 수가 있게 되는 것입니다~
간단하죠!?
7-3. TR이란?
이런 부저 같은 경우 순간적으로 많은 전류를 소비하게 되는데 아두이노의 핀에서 최대 소비할 수 있는 전류는 40mA 밖에 되지 않습니다. 따라서 부저를 큰 소리로 만들기 위해서는 TR이라는 것을 이용해야하는데요!
지난시간 스위치 동작에서 잠깐 말씀드렸다시피 TR은 전자 스위치라고 볼 수 있습니다. 내가 원하는대로 아두이노 포트를 이용 해서 붙였다 때였다 하는 것이죠~
<구글 사진> |
이것도 헤깔리는데 이런 TR이 종류도 2가지나 되네요 ㅠ NPN, PNP 라고 하는 것입니다. 사실 종류가 2가지 이기는 하나 NPN 과 PNP는 동작만 반대라고 생각하시면 됩니다. 나머지는 다 동일한 것이죠.
동작 방법을 NPN을 기준으로 간단히 설명하면 B(Base) 부분에 로직 1이 입력되면 C(Collector)와 E(Emitter)가 연결되고 로직 0이 입력되면 C(Collector)와 E(Emitter)가 끊어지는 것이죠! PNP는 반대로 동작한다고 보시면 됩니다. B(Base) 부분에 로직 1이 입력되면 끊어지고 0이 입력되는 연결되는 동작입니다~
자 그럼 우리가 직접 다루는 멀티 펑션 쉴드 회로를 봐볼까요?~
7-4. Multi-function Shield Buzzer 회로
멀티 펑션보드의 회로는 위와 같이 되어 있는데요~ 아두이노의 3번핀과 연결되어 동작되게 되어있습니다. 이전의 회로들과 다른 점은 TR이 있다는 것인데 여기에 사용된 TR은 PNP TR이 사용되었네요. 따라서 앞서 설명 드렸다시피 Base 단자에 0이 들어가면 켜지고 1이 들어가면 꺼지게 되는 것입니다.
7-5. 펌웨어 코드
// 1초동안 삐~ 소리났다가 꺼지는 동작
void setup() {
pinMode(3, OUTPUT);
digitalWrite(3, 0);
delay(1000);
digitalWrite(3, 0);
}
void loop() {
}
이번에도 마찬가지로! 코드 설명은 영상으로 대체할께요~~
그럼 다들 수고하시고~ 다음주는 멀티펑션보드 마지막 시간이 될 것 같네요!
그럼 다음주에 뵈요~
8 댓글
Nice article. I have a problem with sound level of buzzer. Only short tick very low level could be heard in switching pin 3. There is no clear beep signal.
답글삭제Thanks
There are two kinds buzzer. internal circuit buzzer and PWM buzzer. Perhaps your buzzer is internal circuit buzzer. if you use PWM buzzer(not internal circuit buzzer), you will be able to hear the sound of your own.
삭제Thanks you for so very fast answer! Link of product is:
삭제http://www.aliexpress.com/item/1pcs-Multifunctional-Expansion-Board-Shield-Learning-Education-For-Arduino-UNO-R3-free-shipping/32653952558.html
It is piezzo buzzer.
if you want to make user own sound. you have to use 'passive buzzer'
삭제http://ko.aliexpress.com/item/High-Quality-Passive-Buzzer-Module-for-Arduino/32533870715.html?isOrigTitle=true
Multi-Function B/D Buzzer is Active Buzzer(Internal circuit buzzer)
:)
PASSIVE BUZZER LECTURE
http://maduinos.blogspot.kr/2016/01/11passive-buzzer.html
Thanks again.:) I will read your new article. Well, but my Active Buzzer produces very, very low level "tick" sound. I can hear it only when I put my ear a few centimeters away from buzzer.
삭제Again me.:) I have been watching your lecture video carefully and try analogWrite on pin 3. This works very well!
삭제Your site is very useful.
Thanks
피에조부저의 원리와 주파수에 관한 내용을 보고서 쓸때 인용하고 싶은데 사용 해도 될까요?
답글삭제넵! 물론입니다. 저도 인터넷 구글에서 퍼온 사진이니 출처는 제 블로그 링크보다는 구글 사진으로 하시면 될것 같네요~~
삭제감사합니다.