蜂鸣器和LED在嵌入式开发中经常用来做声光报警输出,LED比较简单,蜂鸣器在驱动的时候要注意区分是有源蜂鸣器还是无源蜂鸣器,有源蜂鸣器驱动比较简单,直接给电平信号就可以驱动,但是无源蜂鸣器,因为内部没有振荡源,所以必须给一定频率的脉冲信号或者正弦信号去驱动,才能发出声音。今天我们就来看看无源蜂鸣器。
注意,这里的“源”不是指电源。而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫,而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。
有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。
无源蜂鸣器的优点是:
1, 便宜,
2, 声音频率可控。
有源蜂鸣器的优点是:程序控制方便。
有源蜂鸣器和无源蜂鸣器的根本区别是产品对输入信号的要求不一样;有源蜂鸣器工作的理想信号是直流电,通常标示为VDC、VDD等。因为蜂鸣器内部有一简单的振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,从面实出磁场交变,带动钼片振动发音。但是在某些有源蜂鸣器在特定的交流信号下也可以工作,只是对交流信号的电压和频率要求很高,此种工作方式一般不采用。而无源蜂鸣器没有内部驱动电路,有些公司和工厂称为讯响器,国标中称为声响器。无源蜂鸣器工作的理想信号方波。如果给预直流信号蜂鸣器是不响应的,因为磁路恒定,钼片不能振动发音。
无源电磁蜂鸣器工作原理是:交流信号通过绕在支架上的线包在支架的芯柱上产生一交变的磁通,交变的磁通和磁环恒定磁通进行叠加,使钼片以给定的交流信号频率振动并配合共振腔发声。产品的整个频率和声压的响应曲线与间隙值、钼片的固有振动频率(可粗略折射为小钼片的厚度)、外壳(亥姆霍兹共振声腔)频率、磁环的磁强漆包线的线径有直接关系。
压电蜂鸣片是将高压极压化后的压电陶瓷片黏贴于振动金属片上。当添加交流电压后,会因为压电效应, 而生成机械变形伸展及收缩,利用此特性使金属片振动而发出声响。
假设我们使用一无源压电式蜂鸣器接于NXP MKE02 MCU的PTH2脚,那么如何去驱动他呢?首先要明白既然是无源的那么不能用电平直接驱动,需要一定频率的方波信号。
查看datasheet 需要4K的方波信号驱动
方案一:使用PWM输出驱动产生4K方波
方案二:使用定时器翻转IO脚驱动。
方案一,如果代码要求规范严格的话,我们在做蜂鸣器驱动时候,需要PWM驱动,关于PWM的驱动我们在公众号里面曾经不只一次的详细讲到PWM驱动,这里不在赘述。
方案二需要定时器和GPIO驱动。假设使用方案二则简单需要
频率4k则周期250us的方波信号,需要一个125us周期的定时器翻转蜂鸣器的驱动引脚来控制发声。
初始化配置驱动管脚为输出
蜂鸣器响和停需要一个函数
定时器的中断函数,我们在这里就不在列出,官方带的例程有许多定时器的程序,可以参考使用。
NXP提供了官方的各种外设驱动,可以调用它的外设驱动,或者自己根据数据参考手册去写驱动。虽然蜂鸣器的驱动很简单,但是希望大家在实际应用的时候区分是有源蜂鸣器和无源蜂鸣器。