单片机直驱MOS管为何要加三极管?条件与驱动电路解析
看到“单片机为啥不能直驱MOS管?还要加三极管?”这个问题时,我第一反应是:这个问题问得不够准确。更值得讨论的版本是——单片机在什么条件下可以直驱MOS管,什么条件下直驱会翻车,而加三极管到底补上了什么缺口?
很多人画板子时习惯性地在GPIO和MOS管之间塞一个三极管,问原因,答“前辈都这么干”。也有人反过来,觉得三极管纯粹多余,GPIO直接推MOS栅极不也一样能开关吗?这两种说法在特定场景下都是对的,但在真实项目里,直驱翻车往往不是某一个参数错了,而是好几个边界条件同时踩线。这篇文章就把这件事拆开讲清楚。
我先把结论放在这里:单片机能不能直驱MOS管,不取决于“能不能”,而取决于电压、电荷、频率和逻辑极性四个条件;加三极管本质上是给单片机补齐能力缺口,不是电路复杂化。
1. 先搞清楚单片机直驱MOS管时,到底在驱动什么
很多初学者把MOS管理解成一个“电压控制”的开关,以为栅极只要达到阈值电压就行,几乎不消耗电流。这个印象本身没错,但漏掉了一个关键事实:栅极是一块电容,不是一个电阻。
1.1 栅极是电容,不是电阻
MOS管的栅极和源极之间隔着二氧化硅绝缘层。用万用表去量G和S之间的直流电阻,读数通常是无穷大,所以很多人得出结论:单片机只要给个电压就行,不需要电流。
这个结论在静态时成立,在开关瞬间不成立。
栅极和源极之间存在电容Cgs,栅极和漏极之间还存在反馈电容Cgd。要让管子从截止进入导通,必须先给这些电容充电。电容充电就必须有电流,而电流大小决定了电压爬升的速度。单片机GPIO能输出的电流是有限的,电容越大、目标电压越高,充得就越慢。
这也是为什么用万用表测MOS管栅源之间“不通”,但开关时电流波形却可能出现明显毛刺——动态电流不是从绝缘层漏过去的,而是给寄生电容充放电产生的。
1.2 真正决定驱动难度的是Qg,不是Vgs(th)
选MOS管时,很多人只看Vgs(th),也就是开启阈值电压。看到Vgs(th)只有1.5V,就觉得3.3V单片机可以直驱。
实际上,Vgs(th)只是“刚刚开始导通”的电压。此时管子只流过很小区分的电流,压降和功耗都很大。要让MOS管进入完全导通状态,通常需要比Vgs(th)高得多的驱动电压,比如4.5V、10V甚至12V。
就算驱动电压够,还有一个更重要的参数:总栅极电荷Qg,单位是纳库仑(nC)。
栅极电压从0升到目标电压,需要迁移的总电荷量就是Qg。开关时间近似可以用这个公式估计:
其中I_drive是驱动源能提供的瞬态电流。
举例:一个常见功率MOS的Qg是50nC,如果希望在100ns内完成开关,驱动电流需要达到:
单片机GPIO能持续给出0.5A吗?绝大多数不能。GPIO推挽输出时能有20mA已经很不错了,瞬时可能稍大一点,但远达不到0.5A的水平。结果是开关边沿被拉长,管子长时间停留在半导通状态,发热、效率下降、甚至烧毁。
1.3 单片机GPIO的实际驱动力
常见单片机GPIO的输出能力大致这样:
- 5V单片机:推挽输出时一般能拉/灌几毫安到二十几毫安,不同型号差异很大。
- 3.3V单片机:输出电流更紧张,很多型号推荐不超过10mA。
- 51单片机P1口是准双向口,灌电流能力相对强,拉电流能力弱,直驱MOS时要注意方向。
所以,如果只做低速开关、负载不大、选的是逻辑电平MO