QiuQiu

Robotics - Mosfet

MOSFET 是一种用电压控制电流的半导体器件。最常见用途就是电子开关。

全称是:

Metal-Oxide-Semiconductor Field-Effect Transistor

金属—氧化物—半导体场效应晶体管

在机器人里,它负责让 MCU 用很小的控制信号,开关电机、电磁铁、加热器等大电流负载。

为什么需要 MOSFET

MCU 的 GPIO 通常只能输出:

3.3V

几毫安到十几毫安

电机可能需要:

12V

数安培甚至数十安培

MCU 不能直接给电机供电,所以需要 MOSFET:

MCU 小信号


 MOSFET


控制电源向电机提供大电流

可以把它理解为一个没有机械触点、速度很快的电子开关。

MOSFET 的三个主要引脚

以常见的 N 沟道 MOSFET 为例:

结构关系:

MCU ──→ G

电源/负载 ──→ D

             MOSFET

GND ←───────── S

栅极电压控制漏极和源极之间能不能导电。

关键控制量不是 VGV_G,而是:

VGS=VGVS V_{GS}=V_G-V_S

也就是栅极相对于源极的电压。

MOSFET 怎样作为开关

对于增强型 N 沟道 MOSFET:

例如:

典型低侧开关电流路径:

+12V

 电机

  D
MOSFET
  S

 GND

MCU 只控制 Gate,不直接承担电机电流。

Gate 几乎不需要持续电流

MOSFET 经常被称为电压控制器件。

Gate 与内部导电通道之间有绝缘层,稳定状态下几乎没有直流电流进入 Gate。但 Gate 在电气上很像一个小电容:

因此:

Threshold voltage 不是完全导通电压

MOSFET 数据表会给出:

VGS(th) V_{GS(th)}

这个叫栅极阈值电压。

假设数据表写:

VGS(th)=12.5VV_{GS(th)} = 1\text{~}2.5\,\mathrm{V}

它只表示 MOSFET 刚刚开始出现很小电流,不代表它已经适合驱动数安培电机。

真正需要看的是数据表有没有在:

VGS=2.5VV_{GS} = 2.5\,\mathrm{V}

VGS=4.5VV_{GS} = 4.5\,\mathrm{V}

条件下给出足够低的:

RDS(on) R_{DS(on)}

对于 3.3V MCU,应选择明确支持 2.5V 或 3.3V 栅极驱动的 logic-level MOSFET。

导通电阻和发热

MOSFET 打开后不是理想的零电阻,而是存在导通电阻:

RDS(on) R_{DS(on)}

导通损耗近似为:

P=I2RDS(on) P=I^2R_{DS(on)}

假设电机电流是 5A5\,\mathrm{A},MOSFET 导通电阻是 0.02Ω0.02\,\Omega

P=52×0.02=0.5W P=5^2\times0.02=0.5\,\mathrm{W}

如果堵转电流达到 15A15\,\mathrm{A}

P=152×0.02=4.5W P=15^2\times0.02=4.5\,\mathrm{W}

所以电机堵转时,MOSFET 可能迅速发热甚至损坏。

为什么电机旁边需要 flyback 保护

有刷电机、电磁铁、继电器线圈都属于感性负载。

MOSFET 突然关闭时,电感会试图维持原来的电流:

V=Ldidt V=L\frac{di}{dt}

电流变化越突然,产生的电压可能越高。

因此单向电机开关通常需要续流二极管:

       +12V

    ┌── 电机 ──┐
    │          │
    └─ 二极管 ─┘

       MOSFET

        GND

MOSFET 关闭后,电机电流可以暂时经过二极管循环,避免产生过高电压损坏 MOSFET。

有刷电机为什么用四个 MOSFET

如果只使用一个 MOSFET,只能控制:

如果希望电机正转和反转,需要改变电流方向,因此使用 H 桥:

     +V

 MOSFET   MOSFET
      \   /
       电机
      /   \
 MOSFET   MOSFET

     GND

一共四个 MOSFET。

同一侧上下两个 MOSFET 不能同时打开,否则会直接把电源短接到地,这叫 shoot-through。

三相无刷电机为什么用六个 MOSFET

三相电机有:

每一相都需要一个上管和一个下管:

因此总共:

3×2=6 3\times2=6

这六个 MOSFET 构成三相逆变器:

直流电源

六个 MOSFET

 U / V / W

无刷电机

控制器根据编码器测得的转子角度,精确控制六个 MOSFET 的开关,从而产生旋转磁场。

MOSFET 自带的 body diode

功率 MOSFET 通常天然带有一个体二极管:

D

MOSFET

S
  ↖ 内部存在 body diode

它在 H 桥和三相驱动中会参与续流,但它不一定足够快、损耗也不一定足够低,不能简单认为“有体二极管就不需要设计保护”。

N 沟道和 P 沟道

常见两种:

N 沟道 MOSFET

P 沟道 MOSFET

大功率电机驱动通常尽量使用 N 沟道 MOSFET,但高侧 N MOSFET 需要专门的 Gate Driver,把栅极电压提升到高于 Source。

选择 MOSFET 看什么

机器人电机驱动至少要检查:

  1. VDSV_{DS}:能承受多高的漏源电压;
  2. IDI_D:电流能力;
  3. RDS(on)R_{DS(on)}:导通电阻;
  4. 对应的 VGSV_{GS}:在 3.3V 或 5V 下是否真正导通;
  5. VGS(max)V_{GS(max)}:栅极最大允许电压;
  6. Gate charge:栅极电荷;
  7. 散热和封装;
  8. 安全工作区 SOA;
  9. 电机堵转和启动电流。

不要只看包装上写的“最大电流 100A”。这个数字通常依赖非常理想的散热和栅极驱动条件。

在机器人里的关系可以这样记:

组件 作用
MCU 决定什么时候动作
MOSFET 开关和调节大电流
电机 把电能变成机械运动
编码器 测量实际运动
控制算法 比较目标和实际结果

MOSFET 本身不是电机控制器,也不是传感器;它是控制器用来操纵电机功率的高速电子开关。

是那个mos晶体管吗

对,就是通常说的“MOS 管”或“MOS 晶体管”。

MOS 管 = MOSFET = 金属—氧化物—半导体场效应晶体管

常见叫法都是同一个东西:

例如电机驱动板上看到的黑色功率器件,很可能就是 MOSFET。

主要分为:

机器人电机驱动最常用 N-MOS,因为通常导通电阻更小、效率更高。

它与普通三极管 BJT 有区别:

器件 控制方式
BJT 三极管 用基极电流控制
MOSFET 用栅极电压控制

因此前面说的无刷电机驱动器内部,通常就是:

控制 MCU

Gate Driver

6 个功率 MOS 管

三相无刷电机 U/V/W

所以“六个 MOSFET”也就是“六个 MOS 管”。

他负责控制高低电平?

更准确地说:

MOSFET 接收高低电平作为控制信号,然后控制大电流通路的接通或断开。

它不是专门“制造高低电平”,而是一个受高低电平控制的电子开关。

以常见的 N-MOS 低侧开关为例:

+12V

 电机

  D
N-MOS
  S

 GND

MCU GPIO ──→ G

当 MCU 输出高电平:

Gate = 3.3V
Source = 0V
VGS = 3.3V
MOSFET 导通
电流流过电机
电机运转

当 MCU 输出低电平:

Gate = 0V
Source = 0V
VGS = 0V
MOSFET 关闭
电流停止
电机停止

所以控制关系是:

MCU Gate 信号 N-MOS 电机
高电平 导通 通电
低电平 关闭 断电

但 MOSFET 判断的不是 Gate 的绝对电压,而是:

VGS=VGVS V_{GS}=V_G-V_S

也就是 Gate 相对于 Source 的电压。

此外,MOSFET 快速接收高低电平,就可以形成 PWM:

高 低 高 低 高 低……
开 关 开 关 开 关……

改变“打开时间占比”,就能控制电机平均功率:

因此在电机系统里:

在数字芯片内部,MOSFET 也可以组合成逻辑门,真正用来产生和传递高低电平;但在电机驱动中,更合适的理解是“大电流电子开关”。

mosfet 是一种amplifier?

是的,MOSFET 既可以作为开关,也可以作为放大器。

它本质上是一种晶体管:

Gate 电压的微小变化,可以控制 Drain–Source 之间较大的电流变化。

作为放大器

如果 Gate 电压稍微变化:

Gate 电压变化一点

Drain 电流变化很多

输出电压产生更大的变化

这就产生了放大作用。

典型共源放大器:

        +VDD

         RD

输出 ←────D

       MOSFET

输入 ─────G
          S

         GND

输入的小电压变化控制漏极电流:

gm=ΔIDΔVGS g_m=\frac{\Delta I_D}{\Delta V_{GS}}

其中 gmg_m 称为跨导。

经过漏极电阻 RDR_D,电流变化变成更大的电压变化:

ΔVoutΔIDRD \Delta V_{out}\approx-\Delta I_D R_D

电压增益近似为:

AvgmRD A_v\approx-g_mR_D

负号表示输出方向与输入相反:

Gate 电压升高
→ Drain 电流增大
→ RD 上的压降增大
→ 输出电压降低

放大的能量从哪里来

MOSFET 不会凭空制造能量。

类似于轻轻转动水龙头控制大量水流:

作为开关和放大器的区别

MOSFET 有几个工作区域:

工作区域 状态 用途
截止区 基本不导电 开关关闭
线性/欧姆区 像一个低电阻 开关打开
饱和区 电流受 Gate 控制 模拟放大

这里有一点容易混淆:

“线性区”这个名称不代表它一定用于模拟放大。

电机驱动为什么不把它当放大器用

如果 MOSFET 处于半开状态:

功耗为:

P=VDSID P=V_{DS}I_D

例如:

VDS=6V,ID=3A V_{DS}=6\,\mathrm{V},\quad I_D=3\,\mathrm{A}

则:

P=18W P=18\,\mathrm{W}

MOSFET 会产生大量热量。

所以电机控制通常让 MOSFET 快速切换:

再通过 PWM 调整平均功率,而不是长时间让它半开。

两种用途的总结

模拟放大器:

Gate 小变化
→ Drain 电流连续变化
→ 放大模拟信号

功率开关:

Gate 高/低
→ MOSFET 完全开/关
→ 控制电机大电流

所以 MOSFET 的确是一种放大器件,但在机器人电机驱动中,我们主要把它当作高速功率开关;在音频、射频、传感器前端和运算放大器内部,它则真正工作为模拟放大器。