您现在的位置是:首页 > 科技前沿

高级单片机实战开发-蜂鸣器

智慧创新站 2025-04-12【科技前沿】37人已围观

简介一、蜂鸣器的类型和原理1.压电式使用压电陶瓷片作为发声器件,通过给压电陶瓷加交流信号发声2.电磁式通过线圈产生的磁场和磁铁作用,类似于扬声器的工作原理3.贴片式有贴片和直插安装方式4.有源蜂鸣器加电就响,内置信号发生器驱动发声器件,一般的音调都是固定的。5.无源蜂鸣器加电后有咔嚓声,要用2-5K的方...

一、蜂鸣器的类型和原理

1.压电式

使用压电陶瓷片作为发声器件,通过给压电陶瓷加交流信号发声

2.电磁式

通过线圈产生的磁场和磁铁作用,类似于扬声器的工作原理

3.贴片式

有贴片和直插安装方式

4.有源蜂鸣器

加电就响,内置信号发生器驱动发声器件,一般的音调都是固定的。

5.无源蜂鸣器

加电后有咔嚓声,要用2-5K的方波驱动。无源蜂鸣器的声调会随着外加方波的频率而改变。

二、蜂鸣器产品参数

下面是某一蜂鸣器的具体参数:

★尺寸(size):φ30mm×19.5mm

★电压范围(VoltageRange):3-20VDC

★额定电压(RatedVoltage):12VDC

★使用频率(frequency):3600±500Hz

★声压(SPL):(12VDC/30cm)

★电流(Current):≤50mA

★成品重量(weight):2g

★支持定制:XXXXXX

三、蜂鸣器的检测

1.有源与无源的区分

(1)外形区别

有源蜂鸣器

无源蜂鸣器

两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两种蜂鸣器的引脚郡朝上放置时,可以看出有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。

(2)电参数的区别

把可调电源设定到蜂鸣器的额定电压,一般的常见蜂鸣器额定电压为1.5v、5v、10v、12v这几种,串联一个100-200欧姆的限流电阻,给蜂鸣器加电,有源蜂鸣器会连续的发出滴滴的声音,或者有规律的滴滴声音。

无源蜂鸣器只在接通或者断开电源的瞬间有咔咔声

使用万用表,测量蜂鸣器的电阻,有源蜂鸣器电阻比较大,一般的都在几百欧以上,无源的蜂鸣器阻值在8、16欧姆左右。

2.好坏的检测

使用可调电源调至蜂鸣器的额定电压,串联100欧姆电阻,有源蜂鸣器加上额定电压和电流后如果不能产生明亮的滴滴声,如果声音不正常或者不发声,说明质量不良或者已经损坏。

无源蜂鸣器的测试,使用信号发生器调至2KHz,信号经过100欧姆限流电阻后加到蜂鸣器上,如果蜂鸣器发出明亮的滴声,说明产品是良好的,反之如果声音不正常或者干脆没有声音,说明有蜂鸣器不良或者故障。

四、驱动电路的设计

我们为了使用更多的功能,因此使用无源蜂鸣器。

1.为什么要用三极管?

因为单片机的IO驱动电流较小,直接驱动容易损坏单片机,所以要用三极管来扩大电流

2.用什么样的三极管?

MPSA92三极管参数:

VCEO:-300V

VCBO=-300V

IC=-500mA

PD=625mA

hFE=最小25

三极管的选择,因为单片机上电是高电平,因此选用PNP的三极管,上电后蜂鸣器并没有电流,只有在驱动的控制下才会导通。蜂鸣器的工作电流通常在100mA以下,此蜂鸣器工作电流设定为25mA,因此MPSA92是能够满足的,而且也是常用的型号。

3.电阻R2的计算

设计三极管IC电流25mA,三极管的放大倍数取最小值25,所以基极电流为1mA,

R2=(5-0.7)/0.001=4.3K

功率:4.3*0.001=0.0043W使用1/8W足够,其它温度系数和耐压也没有问题

五、驱动程序

//-----------------------------------------------------------------

//名称:蜂鸣器驱动

//设计:非凡创客

//日期:2015-05-01

//版本:

//-----------------------------------------------------------------

defineuncunsignedchar

#defineuniunsignedint

sbitBUZER=P3^0;//蜂鸣器驱动引脚的定义

//-----------------------------------------------------------------

//毫秒延时程序

//-----------------------------------------------------------------

voidDL(unix)

{unct;while(x--)for(t=0;t120;t++);

}

//-----------------------------------------------------------------

//蜂鸣器驱动程序

//-----------------------------------------------------------------

voidBUZ()

{

unct;

for(t=0;t50;t++)

{

DL(1);

BUZER=~BUZER;

}

}

//-----------------------------------------------------------------

//主程序

//-----------------------------------------------------------------

voidmain()

{

while(1)

{

BUZ();

}

}

本文属于原创首发,未经授权,请勿用于商业用途!

很赞哦!(19)