在这堂课中,大家将要了解如何使用蜂鸣器,蜂鸣器分为无源和有源两种。
目录
第一步 准备材料
- arduino uno
- 有源蜂鸣器
- 无源蜂鸣器
- 若干杜邦线
- 100Ω电阻一个
- 面包板
第二步 原理了解
蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。
有源蜂鸣器与无源蜂鸣器的区别:内部有否震荡源
注意:这里的“源”不是指电源,而是指震荡源。
有源蜂鸣器内部带震荡源,所以只要一通电就会叫;
无源蜂鸣器内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的波形脉冲信号去驱动它
有源蜂鸣器往往比无源的略贵,就是因为里面多个震荡电路。
从外观上看,两种蜂鸣器好像一样. 一般有源有源蜂鸣器比无源蜂鸣器厚一点.
但是, 从外观上并不能绝对的区分出有源与无源,最可靠的做法除了查看产品的参数手册以外. 另一种方式是使用万用表测试蜂鸣器电阻,只有8Ω或者16Ω的是无源蜂鸣器,电阻在几百欧以上的是有源蜂鸣器。
第三步 无源蜂鸣器电路连接
无源蜂鸣器可以不分正负极直接一个脚鱼电阻串接到arduino的9号口。
另一个脚连接GND,如上图。
无源蜂鸣器程序:
其中程序用到了tone的频率控制库,需要单独下载放到库文件夹里。下载在最后面
[scu name=”arduino-ide-post” platform=”arduino:avr:uno”]
int pinBuzzer = 9; //管脚D9连接到蜂鸣器模块的信号脚
void setup() {
pinMode(pinBuzzer, OUTPUT); //设置pinBuzzer脚为输出状态
}
void loop() {
long frequency = 300; //频率, 单位Hz
//用tone()函数发出频率为frequency的波形
tone(pinBuzzer, frequency );
delay(1000); //等待1000毫秒
noTone(pinBuzzer);//停止发声
delay(2000); //等待2000毫秒
}
[/scu]
第四步 有源蜂鸣器电路连接
有源蜂鸣器与无源蜂鸣器有点不一样,有源蜂鸣器最好是需要一个驱动电路。典型的驱动电路如下:
上述电路中用一个PNP型三极管做为控制开关, 图中LS1是蜂鸣器
三极管集电极接GND,发射极接蜂鸣器的负端,三极管的基极极通过一只1K-2K的电阻到单片机的GPIO脚 . 蜂鸣器的正极接VCC.
该电路中三极管相当于一个开关, 运行原理如下:
1, 当GPIO输出高电平,三极基极与发射极间没有电压差,三极管发射极与集电极间不通,蜂鸣器LS1没有电流通过,蜂鸣器不响。
2,当GPIO输出低电平,三极基极与发射极间形成电压差,三极管发射极与集电极之间导通,电流通过蜂鸣器LS1,如果是有源蜂鸣器,则立即发出beep声。
(1) 三极管型号为 8550, 其引脚如下图:
如图所示
1脚=E(发射极,电路图三极管左侧那个脚)
2脚=B(基极,电路图中三极管中间那个脚)
3脚=C(集电极,电路图中右侧的那个脚)
有源蜂鸣器的正极(长脚)接5V, 负极(短脚)接三极管 E极
三极管B极接1K欧姆电阻,再接到Arduino D5脚
三极管C极接地
有源蜂鸣器程序:
int pinBuzzer = 5; //管脚D5连接到蜂鸣器元件的基极
void setup() {
pinMode(pinBuzzer, OUTPUT); //设置pinBuzzer脚为输出状态
}
void loop() {
digitalWrite(pinBuzzer, HIGH);//输出HIGH电平,停止发声
delay(3000); //等待3000毫秒
digitalWrite(pinBuzzer, LOW);//输出LOW电平,发声
delay(1000); //等待1000毫秒
}
第五步 库文件下载与说明
对于无源蜂鸣器模块,必须使用tone()函数,通过PWM管脚,输出一个波形,才能让无源蜂鸣器发声
运行效果: 蜂鸣器发出”beep beep”声音. 响一秒, 停两秒
本课程使用到的库文件:
不错