为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。
芯片的集成度虽然越来越高,但是整个电路功能的实现,还是离不开分离器件的搭配,本文就针对笔者在实际工作中的关于 MOS 管(三极管)的应用做一些整理。
本文所介绍的功能,使用三极管也是可以的,但是实际应用中,多使用 MOS 管,故本文多以 MOS 管进行说明。
如图,通过 NMOS 的开关作用,完成对 LED 的亮灭控制。此时 MOS 管工作于截止区和可变电阻区。
控制端 | 状态 |
---|---|
LED0 为高电平 | 点亮 LED |
LED0 为低电平 | LED熄灭 |
对于 NMOS ,当 Vgs = Vg - Vs > 0 时,NMOS 导通;当 Vgs = Vg - Vs < 0 时,NMOS 断开。
PMOS 在整个电路系统中,其中某一部分的电路上电通过控制中可以方便用于通断控制。上图的电路中,使用时需要注意的一点是 VCC_IN 与控制断的电平 PWR_CON 要处于同一标准(eg:VCC_IN = 3.3V;PWR_CON 高电平 = 3.3V)。
控制端 | 状态 |
---|---|
PWR_CON 为高电平 | PMOS 断开,VCC_OUT 无电压输出 |
PWR_CON 为低电平 | PMOS 导通,VCC_OUT 有电压输出,VCC_IN ≈ VCC_OUT |
对于 PMOS ,当 Vgs = Vg - Vs < 0 时,PMOS 导通;当 Vgs = Vg - Vs > 0 时,PMOS 断开。
因为 MOS 管的导通压降是非常小的,所以在 Rds 之上的能量损耗是比较少的。
进一步地,上图的电路可以扩展为下图,PMOS 的栅极通过 NMOS 来控制。
拓展为此电路,针对 VCC_IN 与 PWR_CON 电压就没有强制的要求了。当 PWR_CON 为高电平的时候,NMOS 导通,PMOS 的栅极被拉低到低电平,PMOS 导通,VCC_OUT 有电压输出;反之,当 PWR_CON 为低电平时,NMOS 关断,从而使 PMOS 也断开,这样就完成了 VCC_IN 输出电压到 VCC_OUT 的控制。
上图的电路,就可以完成所谓的按键开机的功能。
(1)按下 K1 按键,PMOS 的栅极被拉低,Vgs < 0,PMOS 导通,VCC_OUT 有电压输出;
(2)VCC_OUT 有电压输出,按键按下时可完成对 MCU 的供电,然后软件端通过 MCU 的 GPIO 进而控制 NMOS 的栅极,即 PWR_CON 。先通过 KEY_DET 检测到按键动作,然后把 PWR_CON 设置为高电平,NMOS 导通,使得 PMOS 也导通,这时候抬起按键,VCC_OUT 一端也有电压稳定输出,就实现了按键上电开机的功能。
此电路的二极管,功能是防止电压反窜和 对MCU 的 GPIO 的保护。
功能流程:
如果电路中需要实现逻辑非的功能,可以采用 MOS 管(三极管)加上电阻来实现,如下图所示:
控制端 | 状态 |
---|---|
INPUT 为高电平 | OUTPUT 为低电平 |
INPUT 为低电平 | OUTPUT 为高电平 |
通过一个 MOS 管(三极管)加上两个电阻,就可以实现非门的逻辑。
具体的应用可参考本文:再学 SPI ——(一)SPI片选信号
在大多数的电池防反接电路中,常选择压降小的二极管(如:肖特基二极管)来完成,但是针对如 3.7V 锂电池的应用场景,肖特基约为 0.2V 的压降天然的造成了电池容量的浪费,而 MOS 管导通的低压降(Vds)就有很大的优势了。
如上图所示,PMOS 在此处的作用就是防止 VBUS 存在时,LDO Vin 端的电压反窜到电池上。
原理分析:
(1)当 USB VBUS 存在时,PMOS 的栅极电压 Vg = 5V,源极电压 Vs = 3.7V(假设此时的电池电压为 3.7V),Vgs = 5 - 3.7 = 1.3V(大于0),此时 PMOS 关断,就起到了防止 Vin 端电压反窜的作用;
(2)当 USB VBUS 不存在时,PMOS 的栅极通过 10K 的电阻下拉到 GND,因此栅极电压 Vg = 0V,源极电压 Vs = 3.7V(假设此时的电池电压为 3.7V),电池通过 PMOS 自身的寄生二极管使得 Vs = 3.7V,所以 PMOS 的导通电压 Vgs = 0 - 3.7 = -3.7V,PMOS 导通,这样就完成了电池电压到 Vin 端的输入。
上图的 LDO 电路,只要使能端 LDO_CON 给一个开启信号,输出端 V_3V3 就可以稳定输出 3.3V,C3、C4 为 LDO 的输入输出电容,一般大于 1uF(具体参考数据手册取值)。
具体的应用可参考本文:电源防反接小结
在一些设备中,如果两个通过 IO 连接的器件,某一时刻,一个处于休眠,一个处于掉电,这时候就会导致休眠的器件向掉电的器件灌入电流,为了完全杜绝此状态下的电路窜入,可采取如下电路的设计(比如:I2C 的 SDA 信号)
原理分析:
M_DATA | S_DATA | 导通状态 | 方向 |
---|---|---|---|
高电平 | 高电平 | Vgs = 0V,MOS 管截止 | M_DATA—>S_DATA |
低电平 | 低电平 | Vgs > 0V,MOS 管导通 | M_DATA—>S_DATA |
S_DATA | M_DATA | 导通状态 | 方向 |
---|---|---|---|
高电平 | 高电平 | M_DATA 通过上拉电阻 R9 设置成高电平,MOS 管截止 | S_DATA—>M_DATA |
低电平 | 低电平 | S_DATA = 0,NMOS 的寄生二极管导通,进而使得 Vgs > 0,MOS 管导通,M_DATA 为低电平 | S_DATA—>M_DATA |
如上面两个方向的表格分析,这样通过 NMOS 就完成了一个 IO 双向通信的控制。(只能选择 NMOS,不可选择 PMOS,原因读着可以自行分析一下)
(1) MOS 实现:
在实际的应用中,常会遇到通信的两个芯片之间的电平不匹配的问题,这时候就需要通过外部的电路来完成电平匹配的工作(如:MCU 的电平为 3.3V,而外设的电平为 5V)。
原理分析:
3V3_DATA | 5V_DATA | 导通状态 | 方向 |
---|---|---|---|
高电平 | 高电平 | Vgs = 0V,MOS 管截止 | 3V3_DATA—>5V_DATA |
低电平 | 低电平 | Vgs > 0V,MOS 管导通 | 3V3_DATA—>5V_DATA |
通过 3.3V 端高低电平的变化,使得 NMOS 对应开关,就完成了 3.3V 电平到 5V 电平的转换。
5V_DATA | 3V3_DATA | 导通状态 | 方向 |
---|---|---|---|
高电平 | 高电平 | MOS 管截止,3V3_DATA 通过上拉电阻 R12 设置成高电平 | 5V_DATA—>3V3_DATA |
低电平 | 低电平 | 5V_DATA= 0,NMOS 的寄生二极管导通,进而使得 Vgs > 0,MOS 管导通,M_DATA 为低电平 | 5V_DATA—>3V3_DATA |
反之,也完成了对 5V 设备的数据的读取。
注:此电路用三极管也可以实现同样的功能,如下图:
(2) 两级 NPN 实现:
如下图所示,3.3V 与 5V 之间的电平转换,也可以通过两级的 NPN 三极管来实现。
3V3_DATA | 5V_DATA | 导通状态 | 方向 |
---|---|---|---|
高电平 | 高电平 | Q10 导通,Q9 截止,5V_DATA 端得到 5V 的高电平 | 3V3_DATA—>5V_DATA |
低电平 | 低电平 | Q10 截止,Q9 导通,5V_DATA 端得到 低电平 | 3V3_DATA—>5V_DATA |
以上为一些常用的 MOS 管的实际应用电路,部分笔者已在实际中进行了验证,如有不足之处,欢迎指正。