一, 了解蜂鸣器(Buzzer)
蜂鸣器是一种电子发声元器件,可以发出'beep beep'的声音. 采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器在电路中用字母“FM”、“H”或“HA” 或“ZZG”、“LB”、“JD”等表示。
蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。
有源蜂鸣器与无源蜂鸣器的区别:内部有否震荡源
注意:这里的“源”不是指电源,而是指震荡源。
有源蜂鸣器内部带震荡源,所以只要一通电就会叫;
无源蜂鸣器内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的波形脉冲信号去驱动它
有源蜂鸣器往往比无源的略贵,就是因为里面多个震荡电路。
从外观上看,两种蜂鸣器好像一样. 一般有源有源蜂鸣器比无源蜂鸣器厚一点.
但是, 从外观上并不能绝对的区分出有源与无源,最可靠的做法除了查看产品的参数手册以外. 另一种方式是使用万用表测试蜂鸣器电阻,只有8Ω或者16Ω的是无源蜂鸣器,电阻在几百欧以上的是有源蜂鸣器。
1, 准备元器件和器材
无源蜂鸣器 一个
面包板一块
PNP型三极管(型号8550)一个
1K 电阻一个
杜邦线若干
2, 蜂鸣器驱动电路原理图
蜂鸣器元件需要通过一个驱动电路接在单片机上. 典型的驱动电路原理图如下:
上述电路中用一个PNP型三极管做为控制开关, 图中FM是蜂鸣器
三极管C极接GND,E极接蜂鸣器的负端,三极管的B极通过一只1K-2K的电阻到单片机的GPIO脚 . 蜂鸣器的正端接VCC.
该电路中三极管相当于一个开关, 运行原理如下:
1, 当GPIO输出高电平,三极B极与E极间没有电压差,三极管E极与C极间不通,蜂鸣器FM没有电流通过,蜂鸣器不响。
2,当GPIO输出低电平,三极B极与E极间形成电压差,三极管E极与C极之间导通,电流通过蜂鸣器FM,如果是有源蜂鸣器,则立即发出beep声。
(1) 三极管型号为 8550, 其引脚如下图:
如图所示,
1脚=E(发射极,电路图中带箭头的那个)
2脚=B(基极,电路图中跟R相接的那个)
3脚=C(集电极,与E相对的那个)
(2) 蜂鸣器有两个脚有源蜂鸣器是一通电就响的,两个脚分别是正负极, 两个脚一长一短, 短脚为负极, 长脚为正极接VCC. 本例用的是无源蜂鸣器。
而无源蜂鸣器的是需要波形信号驱动的,两个脚没有正负极。
用面包板接线
把三极管, 蜂鸣器, 电阻插入面包板, 按上述电路原理图,用杜邦线接线, 接线如下图:
蜂鸣器的正极(长脚)接5V, 负极(短脚)接三极管 E极
三极管B极接1K欧姆电阻,再接到Arduino D3脚
三极管C极接地
写入以下程序
void setup(){
pinMode(3,OUTPUT);
}
void loop(){
tone(3,400);//频率400
delay(1000);
tone(3,1000);//频率1000
delay(1000);
tone(3,600);
delay(1000);
tone(3,300);
delay(1000);
}
这里,我们用到了一个内置程序,tone(pin,p)。pin代表输出脚,p代表输出频率。
tone()函数可以产生固定频率的PWM信号来驱动扬声器发声。发声时间长度和声调都可以通过参数控制。定义发声时间长度有两种方法,第一种是通过tone()函数的参数来定义发声时长,另一种是使用noTone()函数来停止发声。如果您在使用tone()函数时没有定义发声时间长度,那么除非您通过noTone()函数来停止声音,否则Arduino将会一直通过tone()函数产生声音信号。
Arduino一次只能产生一个声音。假如Arduino的某一个引脚正在通过tone()函数产生发声信号,那么此时让Arduino使用另外一个引脚通过tone()函数发声是不行的。
请注意:
1. 对于Arduino Mega以外的控制器,使用tone()函数时会影响引脚3和引脚11的PWM信号输出。
2. 如果你想要使用不同的引脚产生不同的声音音调,每一次更换发声引脚以前都要使用noTone函数停止上一个引脚发声。Arduino是不支持两个引脚同时发声的。
各种蜂鸣器都有适用的频率,在这个频率下,发生最大。读者可以从4000的频率试用,更改频率直到声音合适。
联系客服