下面是一些使用三极管的经验,以及常见的误区,注意到它们,在电路设计的过程中可以减少一些不必要的麻烦。
遗憾的是目前为止还经常看到人们在不明不白的用着它们,却没有被发现和引起必要的重视。
下面看几个三极管做开关的常用电路画法。都是以蜂鸣器作为被驱动器件举例。
图1的左边NPN管,蜂鸣器接在三极管的集电极,驱动信号是常见的3.3V或5VTTL,高电平导通,电阻按照经验法可以取4.7K。如左电路开通时假设为高电平5V,基极电流Ib=(5V-0.7V)/4.7K=0.9mA,可以使三极管完全饱和,但如果是右边电路用的是PNP管,蜂鸣器同样接在三极管的集电极,不同的是驱动信号是5VTTL电平。以上这两个都可以正常工作,只要PWM驱动信号工作在合适的频率,蜂鸣器(有源)就会发出最大的声音。
图2的这两个电路相比图1来说,最大的区别在于被驱动器件接在三极管的发射极。看左电路,开通时假设为高电平5V,基极电流Ib=(5V-0.7V-UL)/4.7K,其中UL为负载上的压降。可以看到,同样取基极电阻为4.7K,流过的基极电流会比图1左边电路的要小,小多少要看UL是多少。如果UL比较大,那么相应的Ib就小,很有可能导致三极管无法工作在饱和状态,使得被驱动器件无法动作。有人会说把基极电阻减小就可以呀,可是被驱动器件的压降是很难获知的,有些被驱动器件的压降是变动的,这样基极电阻就较难选择合适的值,阻值选择太大就会驱动失败,选择太小损耗又增加。所以,在非不得已的情况下,强烈不建议选用图2的这两种电路。可是很多人就是不分图1左和图2右。
再来看图3这两个电路,如果驱动信号为3.3VTTL电平,而被驱动器件开通电压需要5V。在3.3V的MCU电路中,很容易就设计出这两种电路,而这两种电路都是错误的。先分析左边电路,这是典型射极输出器。当PWM信号为3.3V时,三极管发射极电压为3.3V-0.7V=2.6V,无法达到期望的5V。右边电路也是个很失败的电路,首先这个电路开通是没有问题的,也就是当驱动信号为低电平时,被驱动器件可以正常动作。然而这个电路是无法关断的,当驱动信号PWM为3.3V高电平的时候,Ube=5V-3.3V=1.7V仍然可以使三极管开通,于是无法关断。在这里,有人会说用过这个电路,没有问题啊,而且MCU的电压也是3.3V。我说你用的肯定是OD(开漏)驱动方式,而且是真正的OD或者是5V容忍的OD,比如STM32的很多IO口都可以设置为5V容忍的OD驱动方式(但是有些是不行的)。当驱动信号为OD门驱动方式时,输出高电平,信号就变成了高阻态,流过基极的电流为零,三极管可以有效关断,这个时候右边电路依然有效。
综合以上几种电路的情况分析,得到图4这两种个人认为是最优的驱动电路,与图1不同的是,图4在基极与发射极之间多加了一个10K的电阻,这个电阻也是有一定作用的,可以让三极管有一个已知的默认状态。当输入信号未加入的时候,三极管还处于关断状态。在安全和稳定的方面考虑,多加这个电阻是很有必要的,或者说可以让三极管工作在更好的开关状态。
三极管作为开关器件,虽然驱动电路很简单,要使电路工作更加稳定可靠,还是不能掉以轻心。为了不容易出错,个人建议是优先采用图4的电路,尽量不采用图2的电路,避免使用图3的工作状况。
即便如此还是需要注意一些问题,我们再来思考一下,如果图4的驱动信号都是3VTTL电平,左图的Ib=(3.3V-0.7V)/4.7K=0.55mA,需要考虑是否该把4.7k电阻减小一些,此时(Ic大电流hFE会减小)按照B(贝塔)=50来计算,Ic=0.55*50=27.5mA,就要看负载是否需要这个电流了,再考虑该怎么调整基极电阻。而右图将可能会发生一个很严重的问题,由于MCU系统为3.3V,外部的VCC_5V将通过e极以及那两个电阻对芯片造成电流“倒灌”,这毕竟是个隐患,我们来看看GPIO的内部结构就明白为什么这有风险了。
请注意输入输出管脚!
请注意上图红色部分的保护二极管,它是如何“窜入”MCU系统的电源系统的,即使压差小不会在成保护二极管正向击穿,也会把5V电源系统的干扰引入MCU的电源系统,如果右边的是驱动电机,电流变化大,那这种干扰引入后对MCU系统来说是很致命的,很可能导致莫名的重启死机。
在两个电源电压差比较小的情况下可能走运,电路没出故障,而一旦养成这种习惯,次数多了或者以后项目电源电压不同,就可能发生问题,这时候不知道去哪里找原因那就太遗憾了。这种情况该怎么解决呢?主要是要做好隔离,比如光耦隔离,我所采用的是如下的方法:
以牺牲电路复杂性来换取可靠稳定性,同时也变成了高电平驱动。或者是如下:
请各路英雄多多指教!!
|