
- MOS = MCU 与大功率负载之间的电子开关。
- Gate 控制,Drain 承载负载,Source 接参考端(NMOS 通常接 GND)。
- GPIO 不给负载供电,只负责控制 Gate。
- NMOS + 低边开关 + PWM 是智能硬件里最常见的驱动拓扑,也是最值得优先掌握的基础电路。
GPIO 的本质
GPIO 是 MCU 的通用输入输出接口,可以配成输入(检测外部电平)或输出(产生高/低电平)。但它的本质是数字控制接口,不是电源——高电平大约 3.3V(或 5V),低电平约 0V,对应逻辑 1 和 0。它能输出的电流非常有限,通常 20mA 左右。
这就是核心矛盾:GPIO 输出 3.3V/20mA,但你需要驱动 12V/2A 的 LED 灯板。差了两个数量级。你需要一个“翻译官”——它接收 MCU 的弱信号,控制外部电源的大电流。这就是驱动电路的作用。
1. MOSFET 本质——电压控制型电子开关
MOSFET 做这件事特别合适,因为它是电压控制器件:Gate 几乎不消耗持续电流,只要有足够的电压就能导通。MCU 通过 GPIO/PWM 给 Gate 提供控制信号,负载电流由外部电源经 Drain-Source 路径提供——两条路完全分开。
三个引脚
| 引脚 | 名称 | 作用 |
|---|---|---|
| G | Gate | 控制输入,几乎无持续电流 |
| D | Drain | 接负载,承载工作电流 |
| S | Source | 电流返回端(NMOS通常接GND) |
关键认知:工作电流和控制信号走的是两条完全独立的路径。GPIO 只碰 Gate,Drain-Source 承载外部电源的大电流。它们电气上是分开的。
2. 为什么 MCU 不能直接驱动 LED?
以 12V/24W 的 LED 灯板为例,负载需要 2A。Arduino GPIO 只能输出约 20mA——差了 100 倍。MOSFET 就是用来补这 100 倍差距的:MCU 出控制信号,外部 12V 电源出电流,各走各的路。
3. NMOS 与 PMOS
NMOS(低边开关)——推荐
12V
│
LED
│
NMOS
│
GND
- NMOS 接在负载与 GND 之间
- Gate 电压参考 GND,所以 3.3V 或 5V 的 GPIO 可以直接驱动(前提是逻辑电平 MOS)
- 电路简单,导通损耗低,最适合 PWM
- 我学的时候就是从这个拓扑开始的,大多数项目也用这个
PMOS(高边开关)
12V
│
PMOS
│
LED
│
GND
- PMOS 接在电源与负载之间
- 要导通 PMOS,需要把 Gate 拉到比 Source 低至少 V_GS(th)。Source 是 12V,意味着 Gate 要接近 12V - V_GS(th),3.3V 的 GPIO 做不到
- 需要额外的电平转换或驱动芯片,电路复杂
- 初学不推荐
4. PWM 调光
PWM 不是降压——它是在全开和全关之间高速切换,通过改变导通时间的占比(占空比)来调节平均功率。LED 因为视觉暂留,看到的亮度是连续的(只要频率够高)。
- LED 调光:>200Hz 就不闪了,Arduino 默认 490Hz/980Hz 完全够用
- 电机控制:常用几 kHz 到 20kHz
- 频率太低 → 肉眼可见闪烁或耳朵可闻噪声
- 频率太高 → 开关损耗增加(MOS 在过渡区停留的时间占比变大)
5. 为什么需要续流二极管?
适用场景:电机、风扇、电磁阀、继电器线圈——任何有绕组的感性负载。
MOS 关断瞬间,电感里的磁场塌缩,产生反向高压尖峰,可能是电源电压的好几倍——足够击穿 MOS 的 Drain-Source 结。续流二极管(小功率用 1N4148,大电流用 SS14 等肖特基)反并联在感性负载两端,给存储的能量提供一个安全的续流回路。
纯 LED 这种阻性负载一般不需要续流二极管,但加了也不会坏事。
6. MOS vs 三极管(NPN/PNP)
| 项目 | BJT(NPN/PNP) | MOSFET |
|---|---|---|
| 控制方式 | 电流控制 | 电压控制 |
| 输入阻抗 | 低 | 极高 |
| GPIO持续供电 | 需要 | 几乎不需要 |
| 发热 | 较高 | 较低 |
| 高频PWM | 一般 | 非常适合 |
| 大电流 | 一般 | 优秀 |
三极管是电流控制器件:基极要持续灌电流才能保持导通。MOSFET 是电压控制:Gate 电容充完电之后基本不吃电流。现代 DC 功率开关场合,MOSFET 几乎全面胜出。三极管还在模拟电路(放大、线性稳压)和某些高压场景里用,但 MCU 驱动负载?我每次都选 MOS。
7. 继电器 vs MOS
| MOS | 继电器 |
|---|---|
| 无机械触点 | 有机械触点 |
| 可PWM | 不可PWM |
| 高速 | 较慢 |
| 寿命长 | 有机械寿命 |
| 静音 | 有吸合声 |
| 适合DC | AC/DC均可 |
我用继电器的场景:220V 交流、需要真正物理断开(无漏电流)、需要完全电气隔离。 我用 MOS 的场景:LED、电机、风扇、电池供电产品——这些 DC 负载需要速度、安静、能 PWM 控制。
8. 光耦——需要真正的电气隔离时用
光耦通过内部 LED 发光、光敏器件接收来传递信号——输入和输出之间没有导电通路,只有光子。这让 3.3V 的 MCU 能安全地控制 220V 的设备,同时还能切断地环路、提高抗干扰能力。
经典用法:MCU GPIO → 限流电阻 → 光耦 LED → 光耦晶体管 → 驱动电路 → TRIAC 或继电器 → 市电负载。低压侧和高压侧完全隔离。
工业产品应用——分析框架
看到任何产品的功率部分,我习惯先回答五个问题:
- 电源从哪里进入?
- 哪些是大功率负载?
- 谁负责驱动(MOS/继电器)?
- MCU 如何控制(GPIO/PWM)?
- 是否有保护(续流二极管、TVS、保险丝、光耦)?
常见用 MOS 的产品:LED 灯、RGB 灯带、风扇、电机、水泵、电磁锁、电磁阀、USB PD 电源、锂电池管理、DC-DC 电源、无人机和电动车控制器。
设计注意事项——我踩过的坑
-
优先选逻辑电平 NMOS:标准 MOS 往往需要约 10V 栅压才能完全导通并达到标称的 R_DS(on),3.3V GPIO 根本做不到。逻辑电平 MOS(如 IRLZ44N,注意型号里的“L”代表 Logic)在 3.3V 或 5V 就能达到极低的 R_DS(on)。对 3.3V 系统尤其要确认——翻数据手册,看你实际 Gate 电压下的 R_DS(on) 是多少,别看 V_GS = 10V 时的标称值。
-
Gate 电阻的必要性
- 栅极串联 10-100Ω:Gate 等效于一个电容。GPIO 切换时要对这个电容充放电,瞬时电流可能很大。串联电阻限制这个电流,保护 GPIO 引脚,同时抑制寄生振荡。
- 栅源下拉 10kΩ:上电瞬间或 GPIO 处于高阻态(输入模式)时,Gate 可能悬空。悬空的 Gate 会导致 MOS 半导通——高阻态、大功耗、硅片烧毁。下拉电阻保证 Gate 不被主动驱动时稳稳地待在 0V。量产设计绝不能省。
-
感性负载必须加续流二极管。
-
共地:MCU 的 GND 必须和功率电源的 GND 直接连在一起。没有共同参考点,Gate 驱动信号就没有回路,MOS 根本不工作。这是新手最容易栽的地方。如果需要隔离 MCU 和负载,用光耦——别试图在没光耦的情况下把两个地分开。
-
MOS 选型要点:
- V_GS(th)(栅极阈值电压,注意这是“刚开始导通”的电压,不是完全导通)
- R_DS(on)(导通电阻,越小越好——发热 = I² × R_DS(on))
- 最大电流 I_D(留余量)
- 最大耐压 V_DS(也要留余量)
-
PWM 频率:LED 调光 200Hz 以上不闪(Arduino 默认 490Hz/980Hz 够用)。电机控制几 kHz 到 20kHz。太低 → 闪烁/噪声,太高 → 开关损耗发热。
