蜂鸣器

作者: 秋冬不寒 | 来源:发表于2022-05-03 22:40 被阅读0次

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。
本文就其简要区分方法和驱动电路作简要总结

有源蜂鸣器和无源蜂鸣器

区分:

有源蜂鸣器和无源蜂鸣器.jpg
  • 有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm

  • 还可以用万用表电阻档Rxl档测试,黑表笔接蜂鸣器 "-"引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器;有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声

“源”是什么?

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

各有所长

无源蜂鸣器的优点是:

  1. 便宜
  2. 声音频率可控,可以做出“多来米发索拉西”的效果
  3. 在一些特例中,可以和LED复用一个控制口

有源蜂鸣器的优点是:程序控制方便

驱动电路

由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口是无法直接驱动的*(但AVR可以驱动小功率蜂鸣器),所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了

蜂鸣器驱动电路一般都包含以下几个部分:一个三极管、一个蜂鸣器、一个续流二极管和一个电源滤波电容。

1.蜂鸣器
发声元件,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器)就可以发声,其主要参数是外形尺寸、发声方向、工作电压、工作频率、工作电流、驱动方式(直流/方波)等。这些都可以根据需要来选择。
2.续流二极管
蜂鸣器本质上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。
3.滤波电容
滤波电容C1的作用是滤波,滤除蜂鸣器电流对其它部分的影响,也可改善电源的交流阻抗,如果可能,最好是再并联一个220uF的电解电容。
4.三极管
三极管起开关作用,其基极的高电平使三极管饱和导通,使蜂鸣器发声;而基极低电平则使三极管关闭,蜂鸣器停止发声。

驱动方式

单片机驱动他激蜂鸣器的方式有两种:一种是PWM 输出口直接驱动,另一种是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动

PWM 输出口直接驱动是利用PWM 输出口本身可以输出一定的方波来直接驱动蜂鸣器。在单片机的软件设置中有几个系统寄存器是用来设置PWM 口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出,PWM 输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。比如频率为2000Hz 的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM 的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz 的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了
而利用I/O 定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O 口每200μs 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。

基于STM32F103ZET6的蜂鸣器的PWM输出的设计

STM32的单个IO口最大可提供25mA电流(数据手册),蜂鸣器驱动电流为30mA左右,因此,通过三极管扩流后再驱动蜂鸣器,只需要不到1mA的电流就够了

蜂鸣器与STM32连接原理图

image.png

图中我们用到一个 NPN 三极管(S8050)来驱动蜂鸣器, R33 主要用于防止蜂鸣器的误发
声。当 PB.8 输出高电平的时候,蜂鸣器将发声, 当 PB.8 输出低电平的时候,蜂鸣器停止发声。

单片机音乐产生的原理

音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂鸣器发音,要想产生音频脉冲信号,需要算出某音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用单片机定时器计时这个半周期的时间,每当计时到后就输出脉冲的I/O口反相,这样就在此I/O口上得到此脉冲的频率。

音阶与频率的对照: 百度即可

PWM的频率有个计算公式:


image

我们需要让PWM的这个频率与实际的音调频率相一致,那么我们可以这样来设定:设需要的音调频率为f,psc为8,arr为8M/f-1,我们就正好得到了F=f。我们只需要不断变化这个f值,就能变化音调。

四分之一音符、二分之一音符、全音符,我们可以通过delay_ms延时函数来实现。

除了arr和psc我们需要设定外,音乐的音量也需要通过下面的函数来实现。

TIM_SetCompare2(TIM3,ulVal/100);

这里面CCR2值为ulVal/100,是控制PWM的输出脉宽。这个值越大,发出的声音越大。

关于音符0的处理以及改进

在我写完的程序中,我是这样处理的,一旦遇到音符0,让PWM停止输出。有想过关闭TIM14和PORTF时钟,但是没有用——因为用同样的方法,在一首歌结束之后就是一段相同频率的杂音。所以这种方法是不可以让PWM输出停止的。最后换了个方法,把PF9设置成普通IO口而且是输入模式就可以了,就不会有噪声了
最后,遇到音符0的时候,只需要将PWM输出频率变大,让蜂鸣器发出一个人耳听不到的超声波就可以了

按键的使用

采用NVIC中断实现
音量加减:KEY0 ,KEY1 Volume(); CCR2值为ulVal/100,是控制PWM的输出脉宽。这个值越大,发出的声音越大
暂停与继续:KEY_UP PlayControl(); (默认播放,flag=0,按下一次,falg=1,break;)

相关文章

  • 【树莓派+arduino实验记录6】无源与有源蜂鸣器

    Arduino 有源蜂鸣器 无源蜂鸣器 树莓派 有源蜂鸣器 C Python 无源蜂鸣器 C Python

  • 树莓派基础实验9:蜂鸣器实验

    一、介绍    蜂鸣器是音频信号装置,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器直接接上额定电源就可以连续发声...

  • Arduino基础入门篇08—播放音乐

    本篇介绍电子产品中的发声器件—蜂鸣器,通过控制蜂鸣器播放「葫芦娃」,带你回归美好童年。 1. 了解蜂鸣器 蜂鸣器是...

  • proteus仿真 BUZZER 不响

    蜂鸣器分类 蜂鸣器按照驱动方式可分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指有无电源,而是指有无振荡源。有源...

  • 蜂鸣器驱动程序(STM 32)

    有源蜂鸣器和无源蜂鸣器的区别有源蜂鸣器:内置频率发生电路;通电就能发出声音;声音频率固定;成本较高无源蜂鸣器:内部...

  • 蜂鸣器的控制linux

    蜂鸣器的控制linux 1设备的节点 2控制方法,输入1,蜂鸣器响,输入0蜂鸣器停止 3控制代码

  • 单片机程序练习1

    蜂鸣器如图是51单片机和蜂鸣器的接口电路,当P1.0输出0时,晶体管导通,在蜂鸣器两端加上工作电压5V,蜂鸣器发声...

  • 蜂鸣器

    蜂鸣器是一种一体化结构的电子讯响器,采用直流电压[https://baike.baidu.com/item/%E7...

  • 蜂鸣器

    蜂鸣器通常是低功率器件,工作电流范围在20至30mA之间,通常可以由输出直接驱动。有的需要用三极管驱动,通常一个三...

  • 蜂鸣器

    version2 显示函数做了略微的修改 定时器模拟门铃

网友评论

      本文标题:蜂鸣器

      本文链接:https://www.haomeiwen.com/subject/gozzsftx.html