蜂鸣器在电子产品里特别常见,从家电到工控设备,几乎所有需要"声音提示"的场合都能看到它。很多新手以为蜂鸣器直接接个IO口就能响,结果接上去要么不响要么响得很奇怪。其实蜂鸣器分有源和无源两种,驱动方式完全不一样,搞错了根本玩不转。今天就聊聊蜂鸣器驱动的那些事儿。
先说两种蜂鸣器的区别。有源蜂鸣器(Active Buzzer)内部带振荡电路,只要给它通上直流电(一般是3V或5V)就会响,频率是固定的,声音单一但驱动简单。无源蜂鸣器(Passive Buzzer)内部没有振荡电路,需要给它输入一定频率的方波信号(一般1.5KHz到5KHz)才会响,不同频率对应不同音高,可以演奏简单的旋律。怎么区分?最简单的办法是给蜂鸣器接上额定电压,有源蜂鸣器直接响,无源蜂鸣器不响或者响一下就停。
有源蜂鸣器的驱动最简单。一般有两种接法:一种是高电平驱动,IO口输出高电平、串联一个三极管(比如S8050)放大电流、蜂鸣器接在三极管的集电极,低电平时三极管截止、蜂鸣器不响;另一种是低电平驱动,接法反过来,IO口低电平时蜂鸣器响(这种蜂鸣器是"低电平触发"型)。要注意蜂鸣器的工作电流一般在20-30mA左右,单片机的IO口驱动能力有限(一般几mA到20mA),所以一定要用三极管驱动,别直接接IO口,否则蜂鸣器声音小或者单片机复位。
无源蜂鸣器的驱动相对复杂一些。本质上无源蜂鸣器就是一个微型喇叭,需要给它输入PWM波才能响。单片机驱动无源蜂鸣器一般用PWM输出功能,设置好频率和占空比就能响。比如用STM32的TIM定时器输出1.5KHz、50%占空比的PWM波,蜂鸣器就会响;改变频率就能改变音高,比如1.5KHz是低音、2.5KHz是中音、4KHz是高音。播放音乐的话要做一个音阶表(音符对应的频率),然后用定时器切换频率,复杂点的可以用定时器中断或者DMA来减少CPU占用。
几个设计上的注意事项。第一,续流二极管不能少。蜂鸣器是感性元件,关闭时会产生反向电动势,没续流二极管会击穿三极管或者干扰单片机。接法是在蜂鸣器两端并联一个1N4148二极管(阴极接VCC,阳极接地),给反向电流提供回路。第二,限流电阻要算好。蜂鸣器工作电压一般是3V到5V,如果单片机是3.3V、蜂鸣器是5V供电,可以在驱动线上串联一个限流电阻(比如100Ω),既保护IO口又能调声音大小。第三,多个蜂鸣器并联要小心,并联后总电流是单个相加的,驱动三极管的电流能力要够。
工程上还有一个细节是EMC。蜂鸣器在关闭时会产生高频噪声,影响附近的RF电路(比如WiFi、蓝牙),设计PCB时蜂鸣器要远离RF部分,必要时在蜂鸣器两端并联一个小的瓷片电容(比如0.1μF)来吸收高频分量。如果蜂鸣器距离单片机很近,建议用屏蔽线或者在地线上做隔离。
上一篇:重磅!三星发布CUBE战略:垂直堆叠突破AI存储瓶颈
下一篇:没有了