코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2015-11-02 17:59:54
1) 피에조 부저란 무엇인가?
피에조 부저 (piezo buzzer)는 피에조 효과를 이용하여 소리를 내는 작은 스피커입니다.
피에조 효과란 수정이나 세라믹 같은 결정체의 성질을 이용하는 것으로 압력을 주게되면 변형이 일어나면서 표면에 전압이 발생하고, 반대로 전압을 걸어주면 응축,신장을 하는 현상을 말하며 압전효과라고도 합니다. 여기에 얇은 판을 붙여주면 미세한 떨림으로 소리가 나게 됩니다.
피에조 부저는 큰 소리를 내지 못 하는 단점이 있으나, 값이 싸고 단순하며, 주파수 2만Hz 이상의 초음파를 발생시킬 수 있기 때문에 초음파을 활용한 다양한제품에서 사용됩니다.
2) 피에조 부저 사용방법
피에조 부저는 2개의 전극단자로 구성되어 있으며, 각 단자는 극성을 가지고 있습니다.
커버 윗면을 확인하면, (+)라고 써져 있거나, 옆에 조그만 홈이 파져있는 쪽, 다리가 긴 쪽의 단자에 +전극을 연결하면 됩니다.
아래의 그림은 옥타브 및 음계별 표준 주파수를 나타내는 표입니다. 피에조 부저에 주파수에 맞는 신호를 줌으로써 원하는 음계의 소리를 낼 수 있습니다.
우리에게 익숙한 음계는 4옥타브에 해당됩니다. 즉, ‘도’라는 음은 4옥타브의 C 261.6256Hz의 주파수를 가지는 소리입니다.
부저로 소리를 내기 위해서는 주파수를 가지는 펄스 신호를 부저에게 보내줘야 합니다.
각 음계에 해당하는 주파수는 위 표와 같습니다. 즉 3 옥타브 C(도) 해당하는 소리를 내기 위해서는 오렌지보드에서 피에조 부저에게 130 Hz로 펄스를 넣어주어야 합니다.
정리하자면 펄스 신호란 아래 그림과 같이 5V(켜짐, ON), GND(꺼짐, OFF)의 신호이고, 이것이 반복되어 주파수를 가지게 되는 것입니다.
NO |
부품명 |
수량 |
상세설명 |
1 |
오렌지 보드 |
1 |
아두이노 UNO |
2 |
피에조 부저 |
1 |
KPX 1203S |
3 |
브레드 보드 |
1 |
|
4 |
점퍼 케이블 |
2 |
|
부품명 |
오렌지 보드 |
피에조 부저 |
브레드 보드 |
점퍼 케이블 |
파트 |
1. 오렌지 보드의 GND핀을 피에조 부저의 -단자(다리가 짧은 쪽)에 연결합니다.
2. 오렌지 보드의 3번핀을 피에조 부저의 +단자(다리가 긴 쪽)에 연결합니다.
3. 스위치(버튼)의 한쪽 다리에 10KΩ 저항과 오렌지 보드의 5번핀을 연결합니다.
4. 오렌지 보드의 5V핀을 스위치(버튼)의 나머지 단자에 연결합니다.
5. 오렌지 보드의 GND핀을 10KΩ 저항의 나머지 단자에 연결합니다.
오렌지보드에서 피에조 부저에 보내줄 펄스 신호를 만들기 위해 엔트리에서 아래와 같은 펄스 블럭을 활용해야 합니다.
펄스 블럭은 오렌지보드 3번핀으로 펄스 신호를 만들어 주는 기능을 합니다.
0부터 255까지의 값으로 펄스를 조절할 수 있습니다.
0으로 갈수록 5V(켜짐, ON), GND(꺼짐, OFF)의 반복이 적어 작은 주파수를 가지게 되고, 255로 갈수록 5V(켜짐, ON), GND(꺼짐, OFF)의 반복이 많아 큰 주파수를 가지게 됩니다.
아래 그림은 버튼이 눌렸을 때 피에조 부저에서 소리가 나도록 하는 엔트리 코딩입니다.
디지털 5번핀에 연결된 버튼은 풀다운으로 연결해 안 눌러졌을 때 0(false), 눌러졌을 때 1(true)의 값을 갖습니다.
Pull up과 pull 다운에 관련된 설명은 아래 링크를 참고하세요.
- 풀업(Pull-up), 풀다운(Pull-down)에 대해 알아보기
즉 디지털 5번 센서값(버튼)이 참(버튼이 눌림)이라면 피에조 부저에 5hz 펄스 신호를 보내고,
거짓(버튼이 눌리지 않음)이라면 피에조 부저에 0hz 펄스 신호를 보내게 되는 것입니다.
// 버튼을 5번핀에 연결합니다.
int button = 5;
// 피에조 부저를 3번핀에 연결합니다.
int buzzer = 3;
void setup() {
pinMode(button,INPUT);
pinMode(buzzer,OUTPUT);
}
void loop() {
//만약 버튼이 눌러졌다면, 피에조 부저에서 소리를 출력합니다.
if (digitalRead(button)) {
digitalWrite(buzzer,5);
}
//버튼이 눌러지지 않았다면, 소리를 출력하지 않습니다.
else {
digitalWrite(buzzer,0);
}
}
<아두이노 피에조 부저 제어 소스>
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!