Arduino学习(五) 蜂鸣器实验


一,  了解蜂鸣器(Buzzer)

蜂鸣器是一种电子发声元器件,可以发出"beep beep"的声音.  采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器在电路中用字母“FM”、“H”或“HA” 或“ZZG”、“LB”、“JD”等表示。




蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。

有源蜂鸣器与无源蜂鸣器的区别:内部有否震荡源
注意:这里的“源”不是指电源,而是指震荡源。
有源蜂鸣器内部带震荡源,所以只要一通电就会叫;
无源蜂鸣器内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的波形脉冲信号去驱动它
有源蜂鸣器往往比无源的略贵,就是因为里面多个震荡电路。


从外观上看,两种蜂鸣器好像一样. 一般有源有源蜂鸣器比无源蜂鸣器厚一点. 

但是, 从外观上并不能绝对的区分出有源与无源,最可靠的做法除了查看产品的参数手册以外. 另一种方式是使用万用表测试蜂鸣器电阻,只有8Ω或者16Ω的是无源蜂鸣器,电阻在几百欧以上的是有源蜂鸣器。


二、蜂鸣器模块实验(使用无源型蜂鸣器模块)

1, 无源蜂鸣器模块
模块如下图:



蜂鸣器模块有三个管脚,其中  (图中右侧)标注‘-’的管脚接地(GND), 中间的管脚接 5V , (图中左侧)标注"S"的管脚接信号(数字I/O)

2, 接线
用三根杜邦线把模块接到开发板上,其中“-”脚接GND, 中间管脚接5V, "S"脚 接 D3口 ( D3口可以用作 PWM)

(所谓PWM, 指的是脉冲宽度调制,脉冲宽度调制可以用数字管脚按某种频率输出波形的 脉冲信号.  单片机上某些数字IO口支持PWM功能, Arduino Nano的D3, D8支持PWM.   对于无源蜂鸣器, 必须用PWM输出波形的脉冲信号,才能驱动它发声)

3, 在Arduino IDE中写个Arduino程序控制无源型蜂鸣器模块
int pinBuzzer = 3; //管脚D3连接到蜂鸣器模块的信号脚

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毫秒
}

程序说明:对于 无源蜂鸣器模块,必须使用tone()函数,通过PWM管脚,输出一个波形,才能让无源蜂鸣器发声
运行效果:    蜂鸣器发出"beep beep"声音.   响一秒, 停两秒


三、蜂鸣器实验(使用蜂鸣器元器件自已搭电路

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. 本例用的是有源蜂鸣器,要注意正负极。
而无源蜂鸣器的是需要波形信号驱动的,两个脚没有正负极。

3, 用面包板接线

把三极管, 蜂鸣器,  电阻插入面包板, 按上述电路原理图,用杜邦线接线,  接线如下图: 


有源蜂鸣器的正极(长脚)接5V,  负极(短脚)接三极管 E极
三极管B极接1K欧姆电阻,再接到Arduino D3脚
三极管C极接地


4, 在Arduino IDE中写个Arduino程序控制蜂鸣器
int pinBuzzer = 3; //管脚D3连接到蜂鸣器元件的基极

void setup() {
  pinMode(pinBuzzer, OUTPUT); //设置pinBuzzer脚为输出状态
}

void loop() { 
   digitalWrite(pinBuzzer, HIGH);//输出HIGH电平,停止发声
   delay(3000); //等待3000毫秒

   digitalWrite(pinBuzzer, LOW);//输出LOW电平,发声
   delay(1000); //等待1000毫秒
}

运行效果:   蜂鸣器发出"beep beep"声音.   响一秒, 停三秒
说明:
1, 根据电路图,当D3脚输出低电压,则 有源蜂鸣器将发声(有源蜂鸣器不需要振荡波,因此不用tone()函数)。
2, 根据电路图,当D3脚输出高电压,则有源蜂鸣器将停止发声
3, 有源蜂鸣器的程序与上例采用无源 蜂鸣器是不同的


课后练习题:


1,连接一个有源蜂鸣器到Arduino开发板,编写程序,让它发出以下模式的声音

   (1)长鸣: 鸣叫2秒,停0.5秒

   (2)滴滴短声: 鸣叫0.5秒,停0.5秒

            (3)急促短声: 鸣叫0.3秒,停0.3秒

   (4)长短声: 鸣叫2秒,停0.5秒,鸣叫0.5秒,停0.5秒


2,在上述电路中测量有源蜂鸣器的电流是多少?如何让有源蜂鸣器不要那么响? 

  测量题:有源蜂鸣器的电阻是多少?


3,连接一个无源蜂鸣器到Arduino开发板,编写一个程序,让它发出 C大调  1, 2, 3, 4, 5, 6, 7, i 的音阶声音。


4, 连接一个无源蜂鸣器 到Arduino开发板 ,编写一个程序,让它播放一首音乐。比如:小蜜蜂

5, 在上述电路中测量无源蜂鸣器的电流是多少?如何让蜂鸣器不要那么响? 

  测量题:无源蜂鸣器的电阻是多少?




  • 53
    点赞
  • 237
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值