电路中的BJT与MOSFET前段时间,一同学跟我说,他用单片机做了一个简单的LED台灯,用PWM的方式控制灯的亮度,但是发现BJT总是很烫。他给我的电路图如图一,我问他3V时LED的发光电流是多大,他说大概十几到二十mA,我又问他电阻多大,他说10KΩ。于是我笑笑说你把电阻小一点就好了。他回去一试,说用了个1KΩ的电阻,就没有任何问题了。我很失望他没有问我为什么要这么做,这可能是大多数电子爱好初学者存在的问题,他们的动手能力很强,但是并不注重基本的理论知识。他们大多数情况下都是“依葫芦画瓢”,借用现成的电路使用,就连参数和器件型号的选择都疏于考虑。图一案例一在电子设计制作中,双极性晶体管(BJT)和金属---氧化物---半导体场效应管(MOSFET)是用得最多的有源器件。这里笔者试图以自己积累的一些经验来谈一下BJT与MOSFET的原理及电路中的具体应用。考虑到多数(分立元件)情况下,这两种器件在现代电子电路中一般作为开关器件,而恰恰相反的是,我们大多数的教科书却着重于介绍这两种器件的放大状态,所以这里仅讨论这两种器件作为开关器件时的特性和应用。大多数人应该都有这么一个概念:BJT为电流控制型器件,MOSET为电压控制型器件。至于为什么这么说,通过以下的介绍,读者应该都能够很清晰地认识。首先我们来讨论BJT作为开关时的相关理论和基本应用。图二所示的电路中,我们从Q的基极注入电流IB,那没将会有电流流入集电极,大小关系为:IC=βIB。而至于BJT发射结电压VBE,我们说这个并不重要,因为只要IB存在且为正值时,这个结电压便一定存在并且基本恒定(约0.5~1.2V,一般的管子取0.7V左右),也就是我们所讲的发射结正偏。既然UBE是固定的,那么,如果BJT基极驱动信号为电压信号时,就必须在基极串联一个限流电阻,如图三。此时,基极电流为IB=(Ui-UBE)/RB。一般情况省略RB是不允许的,因为这样的话IB将会变得很大,造成前级电路或者是BJT的损坏。图二BJT开关基本形式图三电压信号驱动BJT接下来进入我们最关心的问题:RB如何选取。前面说到过IC=βIB,为了使晶体管进入饱和,我们必须增加IB,从而使IC增大,RC上的压降随之增大,直到RC上几乎承受了所有的电源电压。此时,UCE变得很小,约0.2~0.3V(对于大功率BJT,这个值可能达到2~3V),也就是我们所说的饱和压降UCE(sat)。如果达到饱和时,我们忽略UCE(sat),那么就有ICRL=βIBRL=Vcc。也就是只要保证IB≥IC/β或IB≥Vcc/(βRL)时,晶体管就能进入饱和状态。我们现在回到文章开头的例子:Vcc=12V,集电极电流为5个LED并联的发光电流,以单个20mA算,IC=5×20=100mA。按照之前的取值,我们可以得到基极电流IB≈(5-0.7)/10=0.43mA(假设单片机为TTL电平输出)。那么要求BJT的直流电压增益应该满足β≥IC/IB≈233。很多读者会有疑问,这个β值应该是很容易满足的啊,为什么还会出现前面所讲的故障呢?我们看一下图四所示的曲线,这是我们常用的一款小信号BJT,型号为MMBT3904的直流电压增益曲线。从图中可以看出,BJT的共射极直流电压增益hFE(也就是通常意义下的β)不仅是温度的函数,而且与集电极电流有关。在一定的集电极电流范围内,hFE基本为常数,室温下超过200;但是当集电极电流大于一定值时,hFE就急剧下降。产生这一现象的机理我们在这里就不讨论了。回到前面的例子,如果这个BJT为MMBT3904,集电极电流达到近100mA,此时的β(或hFE)已经下降到只有40左右了(事实上对于其他型号的大多数小信号BJT都有相同结论),我们反推一下允许的最大基极电阻值:IB≥100/40=2.5mA,RB≤(5-0.7)/2.5=1.72KΩ。图四直流电压增益与集电极电流之间的关系而实际应用中,IB并不是越大越好,因为IB对外电路来说是没有实质作用的,它仅仅是维持BJT可靠导通的必要条件。IB越大,驱动部分的损耗也就越大,从而降低了电路的效率。另外,IB的大小不仅决定了BJT能否可靠的导通,同时影响BJT的开关速度,这点后面将会提到。下面讨论MOSFET,很多初学者对于这种器件是相当陌生的。仍然是我遇到的一个案例,曾经有个同学刚刚接触机器人,他试图用MOSFET驱动机器人上的电机。他当时给我是这样描述的,他说不管单片机输出的是PWM波还是高电平信号,电机转速都很慢,并且MOSFET很烫,最终烧坏。当我看到图(图五)时,我没有说话,因为这样的电路可以看出,他对功率MOSFET基本上没有概念,在他看来,似乎就和BJT一样使用。图五案例二为了初步了解MOSFET,我们这里很有必要介绍一些必须的理论知识。这里仅讨论增强型MOSFET,并以N沟道器件为例。对于分立的增强型MOSFET,衬底一般和源极接到一起,且栅极与衬底间为氧化层,实际上是一层绝缘体。所以栅源之间的电阻非常大,静态时,几乎没有电流流入栅极。这一点应该是大多数人都知道的。如图六,给MOSFET的漏源之间加上正偏电压,当栅源电压Ui的增加到一定值(即阈值电压Vth)时,开始有电流ID流入漏极。随着Ui的继续增加,ID增大,RL上承受的电压也随之增大。当Ui足够大时,RL上承受了几乎所有的电源电压,ID也达到一定的值而不再增加。此时MOSFET进入线性区,漏源之间有一个较小的压降。但需要注意的是,这个压降和前面讲到的BJT的饱和压降不同,这个压降不是一个固定的值,而是与漏源之间的电流ID呈正相关(几乎是线性)关系。这个电压可以这样计算:VDS(on)=IDRon。其中Ron为导通电阻,是我们在商品MOSFET的数据手册中常见的一个参数,它表征着MOSFET的导通损耗。图六MOSFET开关基本形式从上面的分析可以得知,MOSFET作为开关时,我们只要在栅源之间加一个足够大的电压,MOSFET就能充分导通。此时MOSFET上的压降为漏源电流与导通电阻的乘积。不同功率的MOSFET,要求的栅源电压不一样。对于常见的TO220、TO252封装的功率MOSFET,通常取这个值为10~15V。而对于SOP8、SOT23等封装的低压MOSFET,这个值可以取得低一点。一般的数据手册会给出导通电阻随栅源电压变化的曲线。图七为常用的型号为AO3400的低阈值功率MOSFET导通电阻随栅源电压变化的曲线图。图七导通电阻与栅源电压之间的关系我们注意到,图中指定了漏源电流为5A,这暗示着MOSFET的导通电阻同时与漏源电流有一定联系。我们再看图八,同样来自于AO3400的数据手册。不难看出,在VGS较小时,Ron并不是一个常数,而是随着ID的增加而增大。原因就在于我们前面提到的,讨论导通电阻Ron时,应当使得MOSFET充分导通。漏源电流越大,使得MOSFET充分导通将会变得越困难,因为要求的栅源电压就会越高。所以,当栅源电压不是足够大时,MOSFET并没有充分导通,MOSFET并没有进入线性区,所以导通电阻也就会同时依赖于漏源电流。图八导通电阻受漏源电流影响的曲线那又读者或许会问,如果图五案例中的MOSFET改成低阈值的器件是不是就没有问题了呢?我们说不一定,因为至此,我们还没有涉及到MOSFET驱动电压该怎么加的问题。前面我们说栅源之间的电阻大到几乎是绝缘体的电阻,那么栅极电阻RG的取值可以很大或者很小应该都是没有问题的。而事实上当对开关速度没有要求时,确实是这样的,对一般的MOSFET,RG的取值从几欧姆到上兆欧姆都是可以正常开启的。图五的案例如果不需要PWM调速或者PWM的频率很低时,把IRF540换成低阈值的MOSFET的话,或许正常工作是没有问题的。但是我们应该都清楚,MOSFET的栅极和漏源之间都是介质层,因此栅源和栅漏之间必然存在一个寄生电容CGS和CGD,沟道未形成时,漏源之间也有一个寄生电容CDS,所以考虑寄生电容时,MOSFET的等效电路就成了图九的样子了。但是,我们从MOSFET的数据手册中一般看不到这三个参数,手册给出的参数一般是CISS、COSS和CRSS,它们与CGS、CGD、CDS的关系如下:CISS=CGS+CGD(CDS短路时),COSS=CDS+CGD,CRSS=CGD图九考虑寄生电容时的MOSFET模型图十考虑寄生电容时的MOSFET驱动电路下面看一下这些寄生参数是如何影响开关速度的。如图十,当驱动信号Ui到来的一瞬间,由于MOSFET处于关断状态,此时CGS和CGD上的电压分别为UGS=0,UGD=-VDD,CGS和CGD上的电荷量分别为QGS=0,QGD=UGDCGD=VDDCGD。接下来Ui通过RG对CGS充电,UGS逐渐升高(这个过程中,随着UGS升高,也会伴随着CGD的放电,但是由于VDD远大于UGS,CGD不会导致栅电流的明显增加)。当UGS达到阈值电压时,开始有电流过MOSFET(事实上,当UGS还没有达到阈值电压时,已经有微小的电流流过MOSFET了),MOSFET上承受的压降由原来的VDD开始减小,CGD上的电压也会随之减小,那么,也就伴随着的CGD放电。由于CGD上的电荷量QGD=VDDCGD较大,所以放电的时间较长。在放电的这段时间内,栅极电流基本上用于CGD的放电,因此栅源电压的增加变得缓慢。放电完成后,Ui通过RG继续对CGS和CGD充电(因为此时MOSFET已经充分导通,相当于CGS和CGD并联),直到栅源电压达到Ui,开启过程至此完成。图十一的曲线很好地描绘了导通过程中UGS随时间变化的曲线。需要注意的是,由于驱动提供的不是电流源,所以实际上的曲线并非直线,图十一仅代表上升趋势。图十一脉冲驱动下MOSFET栅源电压上升曲线同时,由上不难看出,RG越大,寄生电容的充电时间将会越长。显然,RG太大时MOSFET不能在短时间内充分导通。在高速开关应用中(如D类功放、开关电源),这个阻值一般取几Ω到几十Ω。然而,即使是低速情况下,RG也不宜取得太大,因为过大的RG会延长电容充电的时间,也就是MOSFET从关断到充分导通的过渡时间。这段时间内,MOSFET处于饱和状态(放大区),管子将同时承受较大的电压和电流,从而引起较大的功耗。但是RG如果取得太小或者直接短路的话,在驱动电压到来的一瞬间,由于寄生电容上的电压为零,前级需要流过一个很大的电流,造成对前级驱动电路的冲击。现在我们应该很清楚图五案例中的错误之处了。第一点,单片机的输出电压不足以使得IRF540这种管子充分导通,因此图中的管子不是开关,而更像一个放大器;第二,单片机的IO驱动能力不能满足PWM情况下导通速度的要求,即使换成低阈值MOSFET,开启和关断的时间太长,MOSFET在这个过渡阶段同样需要承受很大的功耗。图十二为高速开关应用中常见的MOSFET驱动电路,以一对互补的BJT构成射随器的形式满足驱动电流的要求。其中Q1用于开启时对寄生电容的充电,Q2用于关断时对寄生电容的放电。有时候我们需要得到更快的关断速度,通常在栅极电阻R1上并联一个快恢复二极管,这样的话,放电回路将经过这个二极管而不是电阻。这样一个电路用到前面提到的案例中,就没有问题了。图十二常用的高速驱动电路而在实际应用中,我们通常还会在MOSFET的栅源之间并联一个几KΩ到上百KΩ的电阻(如图十三R2),这是为了在输入栅源电压不确定时(如前级驱动电路失效),防止MOSFET处于非理性状态。我们可以做这样一个实验:连接如图十四的电路,我们会发现,即使栅极悬空,LED也会发光。这说明,栅源之间出现了高于阈值的电压,产生这一电压的原因是寄生电容上的残留电荷。残留电荷使得UGS高于阈值电压但又不足以使MOSFET充分导通。结果是MOSFET工作在放大状态(饱和区),管子承受很大的功耗从而造成器件的损坏。这种现象更容易发生在低阈值电压的MOSFET中。为了防止这种情况发生,往往通过栅源间的并联电阻泄放寄生电容上的残留电荷。图十三增加泄放电阻的驱动电路图十四残留电荷导致MOSFET开启的实验电