0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于有源蜂鸣器及无源蜂鸣器的区别及驱动各类单片机案例

jf_88434166 来源:jf_88434166 作者:jf_88434166 2025-07-22 09:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

有源蜂鸣器与无源蜂鸣器区别

有源蜂鸣器与无源蜂鸣器区别在于是否有振荡源。
有源蜂鸣器即有震荡源的蜂鸣器,通常只需要在正负极上加对应的供电电压就可以驱动发声。
无源蜂鸣器即无震荡源的蜂鸣器,这个时候就需要搭建驱动电路(后面章节会提到相关驱动电路)进行驱动蜂鸣器进行发声了。

有源蜂鸣器

有源蜂鸣器的话相当于在这个模块内部已经为我们搭建好了驱动电路了,这个时候我们只需要在蜂鸣器两端加上对应的电压驱动即可(注意有源蜂鸣器引脚区分正负)。
例如下面的这张图可以看到一般有源蜂鸣器会清楚的写出驱动的电压参数以及输出的频率是多少的,因为内部加了震荡源了,所以一般输出频率都是固定的(通常引脚是长脚正,短脚负 )。
图中的这个有源蜂鸣器的驱动电压是5V,输出频率是2.3KHz左右的。
请添加图片描述

无源蜂鸣器

无源蜂鸣器需要自己外搭驱动电路,此时对于蜂鸣器本身来说引脚是不分正负的。
同样可以查看自己手中的无源蜂鸣器提供的参数,重要的就是两个,一个驱动电压,一个是驱动的频率(常见:2-5KHz)。这里给出一个简单的驱动电路可以用来驱动无源蜂鸣器发声的。

在这里插入图片描述

这里我用来试验的是输入2KHz驱动的蜂鸣器,看下实际接线图:

在这里插入图片描述

这里使用的是PWM发生器来给蜂鸣器提供一个方波信号驱动其发声,最快速方法就是搭建洞洞板来驱动就能快速知道这个无源蜂鸣器是否可以正常驱动及好坏。

模块化有源蜂鸣器及无源蜂鸣器驱动方式的说明

在这里插入图片描述

单片机驱动比较常用的是这种模块化的蜂鸣器,可以看到两者之间的外观是一模一样的(这里有些厂商会用贴纸区分,有些是一样的),如果是贴纸是一样的,只能通过输入信号听蜂鸣器是否发声分辨是有源还是无源。
VCC,GND按参数供电5V,这里供电建议还是使用稳压电源会好些(有些人用USB转TTL或者STlink进行供电发现无法驱动的情况,市面上还是有部分USB转串口和stlink是劣质的,很容易出现供电不足的情况,所以模块的供电都是建议使用稳压电压进行供电),然后在I/O口输入一个低电平(看自己手中的模块写的是高/低电平驱动然后输入对应的电平,这里是低电平驱动)看蜂鸣器是否发声:

  • 蜂鸣器发声-->模块为有源蜂鸣器
  • 蜂鸣器无声-->坏了或者为无源蜂鸣器
    然后把 I/O口输入从低电平换成一个方波信号来驱动,输入方波信号后可以听到蜂鸣器发声就是无源蜂鸣器,依旧无声的话,排查自己的方波信号是否驱动能力不够大/信号地和电源地没有共地的问题,如果驱动能力足够且都有共地的话那可能就是模块坏了。

有源、无源蜂鸣器代码驱动

有源蜂鸣器:单片机IO口输出一个高/低电平信号
无源蜂鸣器:单片机IO口输出一个方波(占空比不为0%或者100%的)
这里只举例STM32F103C8T6的驱动主函数代码,需要整个工程的可以评论区留言!(其他单片机arduino,51等都是同理,配置好IO口输出即可)
有源蜂鸣器驱动代码(main.c):

##现象:蜂鸣器响一下停一下,按这样一直循环
int main(void)
{
	/*开启时钟*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	//开启GPIOB的时钟
	/*GPIO初始化*/
	GPIO_InitTypeDef GPIO_InitStructure;					//定义结构体变量
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//GPIO模式,赋值为推挽输出模式
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;				//GPIO引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//GPIO速度,赋值为50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure);				    //实现GPIOB的初始化
	while (1)
	{
		GPIO_ResetBits(GPIOB, GPIO_Pin_9);		//将PB9引脚设置为低电平,蜂鸣器鸣叫
		Delay_ms(200);							//延时100ms
		GPIO_SetBits(GPIOB, GPIO_Pin_9);		//将PB9引脚设置为高电平,蜂鸣器停止
		Delay_ms(200);							//延时100ms
	}
}

无源蜂鸣器驱动代码(pwm.c)

#这个的现象主要和设置的频率和占空比有关,自行在主函数确定好即可输出对应的现象
void PWM_Init(void)
{
	/*开启时钟*/
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);			//开启TIM2的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);			//开启GPIOA的时钟
	/*GPIO初始化*/
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;		
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);							//将PA0引脚初始化为复用推挽输出	

	/*配置时钟源*/
	TIM_InternalClockConfig(TIM2);		//选择TIM2为内部时钟,若不调用此函数,TIM默认也为内部时钟
	
	/*时基单元初始化*/
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;				//定义结构体变量
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;     //时钟分频,选择不分频,此参数用于配置滤波器时钟,不影响时基单元功能
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器模式,选择向上计数
	TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;					//计数周期,即ARR的值
	TIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1;				//预分频器,即PSC的值
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;            //重复计数器,高级定时器才会用到
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);             
	/*输出比较初始化*/
	TIM_OCInitTypeDef TIM_OCInitStructure;							//定义结构体变量
	TIM_OCStructInit(&TIM_OCInitStructure);							//结构体初始化,若结构体没有完整赋值
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;				//输出比较模式,选择PWM模式1
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;		//输出极性,选择为高,若选择极性为低,则输出高低电平取反
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;	//输出使能
	TIM_OCInitStructure.TIM_Pulse = 0;								//初始的CCR值
	TIM_OC1Init(TIM2, &TIM_OCInitStructure);						//将结构体变量交给TIM_OC1Init,配置TIM2的输出比较通道1
	/*TIM使能*/
	TIM_Cmd(TIM2, ENABLE);			//使能TIM2,定时器开始运行
}
/**
  * 函    数:PWM设置CCR
  * 参    数:Compare 要写入的CCR的值,范围:0~100
  * 注意事项:CCR和ARR共同决定占空比,此函数仅设置CCR的值,并不直接是占空比
  *           占空比Duty = CCR / (ARR + 1)
  */
void PWM_SetCompare1(uint16_t Compare)
{
	TIM_SetCompare1(TIM2, Compare);		//设置CCR1的值
    //这里的ARR+1正好是100 所以CCR设置为多少占空比就是多少
}

无源蜂鸣器驱动代码主要是PWM的输出,这个时候改变频率改变的是输出声音的音调。

总结

1.区分好有源、无源蜂鸣器后再进行驱动,不要不发声就认为模块是坏的。
2.有些贴片式的无源蜂鸣器有多个引脚,有些是固定引脚要看手册区分好引脚的功能。
3.有源区分正负,一般长脚正,短脚负;无源不分正负。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 有源蜂鸣器
    +关注

    关注

    0

    文章

    31

    浏览量

    11984
  • 无源蜂鸣器
    +关注

    关注

    0

    文章

    43

    浏览量

    11568
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    浅谈有源晶振与晶振的关键参数

    有源晶振和晶振在电路结构、性能特性以及应用上各有不同。今天,凯擎小妹就带大家一起来深入了解两类晶振的关键参数与差异。
    的头像 发表于 12-04 14:21 288次阅读
    浅谈<b class='flag-5'>有源</b>晶振与<b class='flag-5'>无</b><b class='flag-5'>源</b>晶振的关键参数

    有源晶振与晶振的优缺点

    晶振(Crystal,晶体谐振器) 结构:仅包含石英晶体,内置振荡电路。 工作原理:依赖外部电路(如MCU的振荡器)驱动,通过机械振动产生谐振频率。
    的头像 发表于 11-28 14:30 180次阅读
    <b class='flag-5'>有源</b>晶振与<b class='flag-5'>无</b><b class='flag-5'>源</b>晶振的优缺点

    一文教你分辨有源晶振

    有源晶振和晶振的区别
    的头像 发表于 11-21 15:37 2.2w次阅读
    一文教你分辨<b class='flag-5'>有源</b>与<b class='flag-5'>无</b><b class='flag-5'>源</b>晶振

    有源晶振晶振的不同-先盘6点~

    1、如何区分有源晶振?外观上:如下图1所示:晶振一般两个引脚,当然也有四脚封装的,但四脚
    的头像 发表于 11-21 15:37 8725次阅读
    <b class='flag-5'>有源</b>晶振<b class='flag-5'>无</b><b class='flag-5'>源</b>晶振的不同-先盘6点~

    探头与有源探头的安全性差异解析

    在电子测量中,探头作为示波器与被测电路的连接桥梁,其安全性直接关乎人身与设备的双重防护。探头与有源探头因结构原理的根本不同,在绝缘能力、电路保护、操作风险等维度呈现显著差异,需基于测量场景精准
    的头像 发表于 11-10 11:23 152次阅读
    <b class='flag-5'>无</b><b class='flag-5'>源</b>探头与<b class='flag-5'>有源</b>探头的安全性差异解析

    晶振和有源晶振如何辨别脚位

    石英晶振的引脚指的是电子元件与电路连接的焊接部位,又称为“脚位”或者“焊盘”,通常分为晶振和有源晶振两大类,不同类别的引脚数量和功能存在差异。
    的头像 发表于 09-26 10:31 961次阅读
    <b class='flag-5'>无</b><b class='flag-5'>源</b>晶振和<b class='flag-5'>有源</b>晶振如何辨别脚位

    单片机怎么驱动电机?

    各类自动化设备和智能装置中,电机是重要的执行部件,而单片机作为控制核心,需要通过特定的方式驱动电机运转。单片机驱动电机并非直接连接即可,而
    的头像 发表于 07-25 09:31 456次阅读

    伺服系统和单片机有什么区别

    伺服系统和单片机是两类完全不同的技术,主要区别体现在功能定位、工作原理、应用场景等方面。
    的头像 发表于 06-28 15:21 484次阅读

    有源滤波器与滤波器的区别

    滤波器是根据电路参数对电路频带宽度的影响而设计出来的工程应用电路,滤波器种类很多,有源滤波器和滤波器的区别我们最简单的分别办法是看看是否需要电源,在作用上最大的
    的头像 发表于 06-18 09:03 1282次阅读

    单片机和伺服有什么区别

    单片机和伺服的区别 单片机(Microcontroller)和伺服(Servo System)是两种完全不同的技术概念,分别属于 控制系统硬件 和 运动控制执行系统 。以下是它们的详细对比和
    的头像 发表于 05-26 09:18 611次阅读

    晶振vs有源晶振:参数差异如何影响系统设计

    分析其在系统设计中的应用。 一、基本概念 (一)晶振 晶振,即晶体谐振器,英文名为Crystal,它本身不包含振荡电路,需要借助外部的时钟电路(如
    的头像 发表于 05-22 16:14 877次阅读
    <b class='flag-5'>无</b><b class='flag-5'>源</b>晶振vs<b class='flag-5'>有源</b>晶振:参数差异如何影响系统设计

    怎么测量有源蜂鸣器的电感

    用特定仪器或者自己搭电路的方式,怎么测出有源蜂鸣器的电感
    发表于 03-20 10:07

    QJ系列胶壳蜂鸣器产品参考说明书

    胶壳蜂鸣器因其卓越的性能特点,在报警装置中发挥着重要作用。这种蜂鸣器采用环氧树脂灌封胶全面防护,确保在各种恶劣环境下都能稳定工作,如防尘、防水、耐高低温,有效防止电击穿。其粘附力和密封性出色,能够
    发表于 02-27 13:44 0次下载

    如何区分有源滤波器和滤波器,它们各自的应用场景是什么

    有源滤波器与滤波器的主要区别在于元件构成。滤波器主要由无源元件组成,如电阻、电容和电感,
    的头像 发表于 02-08 11:45 1887次阅读
    如何区分<b class='flag-5'>有源</b>滤波器和<b class='flag-5'>无</b><b class='flag-5'>源</b>滤波器,它们各自的应用场景是什么

    蜂鸣器与电吉他拾音器区别

    蜂鸣器(Buzzers) 定义与功能 蜂鸣器是一种小型的电子设备,主要用于产生声音信号。它们通常用于报警、通知、定时器和其他需要声音反馈的场合。蜂鸣器的声音通常是单一频率的,可以是连续的或间歇
    的头像 发表于 01-02 15:53 1275次阅读