这篇文章总结下关于NPN和PNP两种型号三极管的使用和连接方法和驱动蜂鸣器电路。预览下面设计原理图。
在单片机应用电路中三极管主要的作用就是开关作用。
PNP与NPN两种三极管使用方法
上图中,横向左侧的引脚叫做基极b,有一个箭头的是发射极e,剩下的一个引脚就是集电极 c。
首先来说一下NPN型,这种型号的三极管在用于开关状态时,大都是发射极接地,集电极接高电平,基极接控制信号。
其次对于PNP型的三极管,用于开关状态时,一般都是发射极接高电平,基极接控制信号。三极管导通时,电流从发射极流向集电极。
三极管的开关原理
三极管有截止、放大、饱和三种工作状态。
放大状态主要应用于模拟电路中,且用法和计算方法也比较复杂,我们暂时用不到。
而数字电路主要使用的是三极管的开关特性,只用到了截止与饱和两种状态。
三极管的用法特点,关键点在于 b 极(基极)和 e 级(发射极)之间的电压情况,对于PNP 而言,e 极电压只要高于 b 级 0.7V 以上,这个三极管 e 级和 c 级之间就可以顺利导通。
同理,NPN 型三极管的导通条件是 b 极比 e 极电压高 0.7V。
总之是箭头的始端比末端高 0.7V 就可以导通三极管的 e 极和 c 极。
以上图PNP三极管为例,基极通过一个 10K 的电阻接到了单片机的一个 IO口上,假定是 P1.0,发射极直接接到 5V 的电源上,集电极接了一个 LED 小灯,并且串联了一个 1K 的限流电阻最终接到了电源负极 GND 上。
如果 P1.0 由我们的程序给一个高电平 1,那么e到 b 不会产生一个 0.7V 的压降,这个时候,发射极和集电极也就不会导通,那么竖着看这个电路在三极管处是断开的,没有电流通过,LED2 小灯也就不会亮。
如果程序给 P1.0 一个低电平 0,这时 e 极还是 5V,于是 e 和 b 之间产生了压差,三极管 e 和 b 之间也就导通了,三极管 e 和 b 之间大概有 0.7V 的压降,那还有(5-0.7)V 的电压会在电阻 R47 上。这个时候,e 和 c 之间也会导通了,那么 LED 小灯本身有 2V 的压降,三极管本身 e 和 c 之间大概有 0.2V的压降,我们忽略不计。那么在 R41 上就会有大概 3V 的压降,可以计算出来,这条支路的电流大概是 3mA,可以成功点亮 LED。
三极管饱和状态
最后一个概念,电流控制。前边讲过,三极管有截止,放大,饱和三个状态。我们要让这个三极管处于饱和状态,就是我们所谓的开关特性,必须要满足一个条件。三极管都有一个放大倍数β,要想处于饱和状态,b 极电流就必须大于 e 和 c 之间电流值除以β。这个β,对于常用的三极管大概可以认为是 100。
那么上边的 R47 的阻值我们必须要来计算一下了。刚才我们算过了,e 和 c 之间的电流是 3mA,那么 b 极电流最小就是 3mA 除以 100 等于30uA,大概有 4.3V 电压会落在基极电阻上,那么基极电阻最大值就是 4.3V/30uA = 143K。电阻值只要比这个值小就可以,当然也不能太小,太小会导致单片机的 IO 口电流过大烧坏三极管或者单片机。
三极管控制蜂鸣器
PNP三极管控制蜂鸣器原理图
NPN三极管控制蜂鸣器
NPN三极管控制蜂鸣器和LED
NPN三极管控制有源蜂鸣器常规设计
上图为通用有源蜂鸣器的驱动电路。电阻R1为限流电阻,防止流过基极电流过大损坏三极管。
电阻R2有着重要的作用。
第一个作用:R2 相当于基极的下拉电阻。如果A端被悬空则由于R2的存在能够使三极管保持在可靠的关断状态,如果删除R2则当BUZZER输入端悬空时则易受到干扰而可能导致三极管状态发生意外翻转或进入不期望的放大状态,造成蜂鸣器意外发声。
第二个作用:R2可提升高电平的门槛电压。如果删除R2,则三极管的高电平门槛电压就只有0.7V,即A端输入电压只要超过0.7V 就有可能导通,添加R2的情况就不同了,当从A端输入电压达到约2.2V 时三极管才会饱和导通,具体计算过程如下:
假定β =120为晶体管参数的最小值,蜂鸣器导通电流是15mA。那么集电极电流IC=15mA。则三极管刚刚达到饱和导通时的基极电流是 IB=15mA/120=0.125mA。流经R2的电流是0.7V/3.3kΩ=0.212mA,流经R1的电流 IR1=0.212mA +0.125mA=0.337 mA。最后算出BUZZER端的门槛电压是0.7V+0.337mA× 4.7kΩ=2.2839V≈2.3V。
图中的C2为电源滤波电容,滤除电源高频杂波。C1可以在有强干扰环境下,有效的滤除干扰信号,避免蜂鸣器变音和意外发声,在 RFID射频通讯、Mifare卡的应用时,这里初步选用0.1uF 的电容,具体可以根据实际情况选择。
蜂鸣器竟然有EMI 辐射?!在 NPN 3.3V 控制有源蜂鸣器时,在电路的 BUZZER 输入 高电平,让蜂鸣器鸣叫,检测蜂鸣器输入管脚(NPN 三极管的C极处信号,发现蜂鸣器在发声时,向外发生1.87KHz,-2.91V 的脉冲信号,蜂鸣器自身发放脉冲如下图所示。
在电路的BUZZER 输入20Hz的脉冲信号,让蜂鸣器鸣叫,检测蜂鸣器输入管脚处信号,发现蜂鸣器在发声时,在控制电平上叠加了1.87KHz,-2.92V 的脉冲信号,并且在蜂鸣器关断时出现正向尖峰脉冲(≥10V),如下图所示。
上图中1.87KHz,-2.92V 的脉冲信号应该是有源蜂鸣器内部震荡源释放出来的信号。常用有源蜂鸣器主要分为压电式、 电磁震荡式两种, iMX283 开发板上用的是压电式蜂鸣器,压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成,而多谐震荡器由晶体管或集成电路构成,我们所用的蜂鸣器内部含有晶体管震荡电路(有兴趣的朋友可以自己拆开看看)。
有源蜂鸣器产生脉冲信号能量不是很强,可以考虑增加滤波电容将脉冲信号滤除。在有源蜂鸣器的两端添加一个104的滤波电容,脉冲信号削减到-110mV,减少蜂鸣器自身发放脉冲如下图所示,但顶部信号由于电容充电过慢,有点延时。
消除蜂鸣器EMI辐射,NPN 有源蜂鸣器控制电路改善后电路图如下所示。
兼容性设计
作为标准电路,需要考虑电路的兼容性问题,比如同样耐压不同功率的有源蜂鸣器,有 源蜂鸣器和无源蜂鸣器的兼容性问题。
兼容同样耐压不同功率的有源蜂鸣器电路设计
为了电路的兼容性和可扩展性,电路需要考虑兼容不同厂家和不同功率的蜂鸣器。同一 个耐压的蜂鸣器主要是蜂鸣器的内阻和工作电流不一样,一般 3V~5V 耐压的蜂鸣器,不同功率的蜂鸣器导通电流是 10mA~80mA。我们按照最大功率的蜂鸣器去设计电路即可,即三极管的推动电流按照 80 mA 设计。
假定:β=120 为晶体管参数的最小值,蜂鸣器导通电流是 80 mA。那么集电极电流 IC =80 mA。则三极管刚刚达到饱和导通时的基极电流 IB=80mA/ 120=0.667mA。流经 R2的电流是 0.7V/ 3.3kΩ= 0.212mA,所以流经 R1 的电流应该是 IR1=0.667mA +0.125mA=0.792mA。BUZZER 端的门槛电压是设定在 2.2V,那么 R1=(2.2V-0.7V)/ 0.792mA=1.89K。电阻取常规 2K 即可。
如果电路更换功率稍大一点的有源蜂鸣器,可以按照上面的计算方法计算 R1 的大小。
兼容有源蜂鸣器和无源蜂鸣器电路设计
在电路的设计过程中,往往会碰到需求变更,比如项目前期,对蜂鸣器的发声频率没有 要求,但后期有要求,需要更换为无源蜂鸣器,这时就需要修改电路图,甚至修改 PCB, 这样就增加了改动成本、周期和风险。
有源蜂鸣器和无源蜂鸣器的驱动电路区别主要在于无源蜂鸣器本质上是一个感性元件, 其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣器两端会有反向感应 电动势,产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。而如果电路中工作电压较大,要使用耐压值较大的二极管,而如果电路工作频率高,则要选 用高速的二极管。这里选择的是 IN4148 的开关二极管。NPN 无源蜂鸣器控制电路图如下所示。