资讯详情

【STM32学习笔记】(10)——蜂鸣器实验详解

蜂鸣器实验

蜂鸣器是一种集成结构的电子讯响器直流电压电源广泛应用于计算机、打印机、复印机、报警器电子玩具、汽车电子设备,电话,定时器在电子产品中发声器件。蜂鸣器主要分为压电蜂鸣器和电磁蜂鸣器两种类型的蜂鸣器在电路中使用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。

压电蜂鸣器主要由多谐振荡器、压电蜂鸣片,阻抗匹配器并由共振箱、外壳等组成。一些压电蜂鸣器外壳也配备了发光二极管。

多谐振荡器由晶体管或集成电路组成。(1.5~15V直流工作电压),多谐振荡器振动,输出100~500HZ的音频信号,阻抗匹配器推动压电发声。

压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。将银电极镀在陶瓷片的两侧,经过极化和老化,然后与黄铜片或黄铜片一起使用不锈钢片粘在一起。

电磁蜂鸣器由振荡器组成线圈、由磁铁、振动膜和外壳组成。

振荡器产生的音频信号电流接通电源后,通过电磁线圈产生电磁线圈磁场。在电磁线圈和磁铁的相互作用下,振动膜片定期振动发声。

蜂鸣器的声音原理由振动装置和谐振装置组成,蜂鸣器分为无源他激型和有源自激型。

无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信号输出,无源他激蜂鸣器的工作发声原理图如下图:

         有源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号,有源自激型蜂鸣器的工作发声原理图如下图:

        1、按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器);

        2、按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器;

        3、按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器);

        4、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器。

        其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变。

电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。

        由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一,适用于报警器等设备。而电磁式由于音质好,所以多用于语音、音乐等设备。

        有源蜂鸣器和无源蜂鸣器的外观如下图中a、b所示。

 

                                                                a)有源 b)无源 

        从上图中a、b外观上看,两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两种蜂鸣器的引脚都朝上放置时,可以看出有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。

        进一步判断有源蜂鸣器和无源蜂鸣器,还可以用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器 "-"引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器。

        有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。

        1. 便宜

        2. 声音频率可控,可以做出“多来米发索拉西”的效果

        3. 在一些特例中,可以和LED复用一个控制口

有源蜂鸣器的优点是:

        程序控制方便

        本章需要用到的硬件有:

        1)指示灯 DS0

        2)蜂鸣器

        蜂鸣器的驱动信号连接在 STM32 的 PB8 上。

        图中我们用到一个 NPN 三极管(S8050)来驱动蜂鸣器,R33 主要用于防止蜂鸣器的误发声。

        当 PB8 输出高电平的时候,蜂鸣器将发声,当 PB.8 输出低电平的时候,蜂鸣器停止发声。

 

       在工程文件目录下面新建两个文件夹分别为:beep.c和beep.h。并在把源文件添加到工程,和添加头文件的路径。

      

#include "beep.h"
//初始化 PB8 为输出口.并使能这个口的时钟 
//LED IO 初始化
void BEEP_Init(void)
{
 	GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
 	//使能 GPIOB 端口时钟
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //BEEP-->GPIOB.8 端口配置
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为 50MHz
 	GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化 GPIOB.8
 	GPIO_ResetBits(GPIOB,GPIO_Pin_8); //输出 0,关闭蜂鸣器输出
} 

        这段代码 仅包含 1 个函数:void BEEP_Init(void),该函数的作用就是使能 PORTB 的时钟,同时配置 PB8 为推挽输出。

        

#ifndef __BEEP_H
#define __BEEP_H
#include "sys.h" 
//蜂鸣器端口定义
#define BEEP PBout(8) // BEEP,蜂鸣器接口
void BEEP_Init(void); //初始化 
#endif

        通过位带操作来实现某个 IO 口的输出控制,BEEP 就直接代 表了 PB8 的输出状态。我们只需要令 BEEP=1,就可以让蜂鸣器发声。

        

#include "sys.h"
#include "delay.h"
#include "led.h" 
#include "beep.h"
//ALIENTEK 精英 STM32 开发板实验 2
//蜂鸣器实验 
int main(void)
{
    delay_init(); //延时函数初始化 
    LED_Init(); //初始化与 LED 连接的硬件接口
    BEEP_Init(); //初始化蜂鸣器端口
    while(1)
    {
  	    LED0=0;
        BEEP=0; 
        delay_ms(300);
        LED0=1; 
        BEEP=1; 
        delay_ms(300);
    }
} 

 

        DS0 亮的时候蜂鸣器不叫,而 DS0 灭的时候,蜂鸣器叫(因为他们的有效信号相反)。间隔为 0.3 秒左右,符合程序设计。

标签: 2k1贴片电阻三极管lb电子20pin连接器09pin电子连接器252贴片mos三极管三极管针推挽式连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台