1.1 输出
1.1.1 最简单的I/O输出
CPU的I/O输出用来给外设提供信号,或者驱动外部执行设备。因此,合理设计I/O输出电路是产品稳定的必要条件。输出电路的设计需要考虑驱动的功率大小、频率、噪声等因素。以下首先介绍最基本的开关量输出,条件是输出开关频率很低。图1-1所示为最简单的驱动电路。
图1-1 最简单的驱动电路
图1-1是最简单的驱动电路,由单片机出来的OUT信号通过R1驱动VT,R1和R2的关系要按照VT所处的开关状态计算。也就是说,VT只有两种状态:断开与饱和导通,不允许出现放大状态。假设电压VCC为10V,电阻上承受的功率超过2W。如果三极管处于放大状态,我们假设通过调节R1让三极管处于c、e之间有5V的压降,这样流过R2的电流是5/47安培(A)。三极管的功率为0.53W,由于8050三极管没有散热装置,因此在短时间内将很快发热,最后发烫,通过热辐射方式散热,如果安装在封闭机箱中,很快就会烧毁。
图1-1中给定负载R2,其实是要计算R1,根据Ic=β*Ib,饱和情况下,VT的压降约为0.2V,Ic≈(VCC-0.2)/R2≈0.209A。假设放大倍数β为60,Ib取3.5mA,单片机输出的OUT电压为4.8V,那么计算出通过R1的电流是(4.8-0.7)/R1=0.41mA。因此图1-1的设计不合理,在给定负载情况下,要求通过R1的电流至少是3.5mA,而实际只有0.41mA,会导致三极管烧毁。那么如何调整呢?可以通过降低R1的阻值,增大Ib实现。现在要求至少3.5mA,因此R1=(4.8-0.7)/0.003 5=1.171kΩ,考虑裕余量,设计R1的阻值为1kΩ。
以上的前提条件是开关动作不频繁,如果每1s内连续执行10次,则上述线路还是有问题的。问题出在什么地方呢?实际是由三极管从截止状态到饱和状态的过程必须经过放大状态引起的。因为经过放大状态是不可避免的,所以为了降低损耗,要尽量减少在放大状态停留的时间。如果输出的频率很高,三极管同样会发热烧毁。图1-2所示为三极管从截止到饱和的过程,特别要注意的是其中的转换过程。
图1-2 三极管从截止到饱和的过程
由图1-2可知,t1和t2之间是三极管处于放大的状态,其时间长短与目前三极管输出的电流大小,输入的电流大小,b、e之间的电容大小都有关系,时间越长,对输出管越不利。对于输出频率高、电流大的场合,除了选用适合设计参数的晶体管外,还需要在电路上进行辅助的设计,用来尽可能减少变换的时间。也就是让信号变化期间变得陡直。
为了让信号变换显得陡直,需要从三极管的特性进行分析。三极管的集电极载流子受基极电流的影响,只要增大开通时的基极电流就能加快转换,如图1-3所示。可以看到,增加电容C1后,当OUT是高电平时,由于C1电压不能突变,将迅速通过C1向VT提供基极电流,这时的基极电流主要通过C1提供,随着时间的推移,C1充电后承受电压,基极电流将通过R1提供。
图1-3 加快转换的方法
以上电路虽然解决了转换时间问题,但带来的副作用是对CPU输出引脚的冲击较大,因为开通瞬间VT的基极回路阻抗基本是VT自身的Rbe,一种优化的方式是给C1串联电阻。
图1-4所示是改进后的基极驱动电路,其中,R3降低了开通瞬间的冲击。但是R3的选择必须合适,过大无法起到C1应有的作用,过小会带来冲击。
图1-4 改进的基极驱动电路