3.3V-5V电平转换电路
如上图,左端接3.3V CMOS电平,可以是STM32、FPGA等的IO口,右端输出为5V电平,实现3.3V到5V电平的转换。现在来分析下各个电阻的作用(抓住的核心思路是三极管的Vbe导通时为恒定值0.7V左右):假设没有R87,则当US_CH0的高电平直接加在三极管的BE上,>0.7V的电压要到哪里去呢?假设没有R91,当US_CH0电平状态不确定时,默认是要Trig输出高电平还是低电平呢?因此R91起到固定电平的作用。同时,如果无R91,则只要输入>0.7V就导通三极管,门槛电压太低了,R91有提升门槛电压的作用(可参见第二小节关于蜂鸣器的分析)。但是,加了R91又要注意了:R91如果太小,基极电压近似:
只有Vb>0.7V时才能使US_CH0为高电平时导通,上图的Vb=1.36V。假设没有R83,当输入US_CH0为高电平(三极管导通时),D5V0(5V高电平)直接加在三极管的CE级,而三极管的CE,三极管很容易就损坏了。
再进一步分析其工作机理:当输入为高电平,三极管导通,输出钳制在三极管的Vce,对电路测试结果仅0.1V。当输入为低电平,三极管不导通,输出相当于对下一级电路的输入使用10K电阻进行上拉,实际测试结果为5.0V(空载)。请注意,对于大电流的负载,上面电路的特性将表现的不那么好,因此这里一直强调——该电路仅适用于10几mA到几十mA的负载的电平转换。
蜂鸣器驱动电路
上面是从周立功的iMX283开发板上载下的电路,既可以是有源也可以是无源蜂鸣器。来分析下:计算下各处的电流(S9013的β=120,设蜂鸣器电流15mA):输入为高电平的门槛电压计算为:
R1起到了提供门槛电压的作用。
有源蜂鸣器和无源蜂鸣器的驱动电路区别主要在于无源蜂鸣器本质上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管D1提供续流。否则,在蜂鸣器两端会有反向感应电动势,产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。而如果电路中工作电压较大,要使用耐压值较大的二极管,而如果电路工作频率高,则要选用高速的二极管
设计这种电路的基本路子是:确定负载(蜂鸣器10mA~80mA)电流和输入门槛电压。依据1中的方法计算获得R1与R2的值。针对下面的驱动电路,负载接的是红外二极管,其串联电阻是限流电阻,控制红外发射强度。输入连接到STM32的PWM功能普通IO口(设置推挽输出),COM口接输出电压5V。
ULN2x03驱动电路
针对上面的电路测试(Power=5.0V):
输入3.3V,输出0.6V;
输入0V,输出5.0V;
输入不接,输出5.0V;
所以,ULN2003/2803同样可以用于电平转换,那这是为什么呢?ULN2803/2003与三极管又有什么关系——其内部实现就是两个三极管。
ULN2803/2003
其结构有3个特点:
输出集电极开漏,因此可以自己接上拉电阻,将信号上拉到相应的电平,ULN2803手册上说明能承受的最大电压为50V。数据手册上说明在Ic=250mA时的输入门槛电压为VI(on)=2.7V。COM端接有一个反向二极管:接到输出电源,用于驱动电机等负载电感器件时能在上下电时提供电流回路保护电路;输出电压高于COM端电压,则电压会钳制在VCOM+0.4V左右(这里的二极管压降较小)。ULN2003与ULN2803的区别仅在于ULN2003只有8个通道,而ULN2803有9个通道。
相对于前面的自己搭建的三极管电路其具有更好的电流驱动特性,因此前面的自己搭建的三极管电路适用于电平切换及小电流的驱动,而ULN2803及ULN2003适用于更大电流的驱动(Datasheet上说最大驱动电流能达到500mA左右)。因此常用ULN2803及ULN2003(还有其它的如75452、MC1413、L293D)提高系统的带负载能力(电机、大型LED、继电器等)。