发布于 

三相 FOC 驱动板:栅极驱动、电流采样与过流保护

玩 ROS 工业机器人的同学,多半都从一块 L298N 小板起步:接上 12 V电源、灌个 PWM,电机就转了。再进阶一点,SimpleFO
C 的国产小板能跑无感 FOC,看示波器上的电流波形还挺漂亮。可一旦你要驱动工业臂上那颗几十瓦到上千瓦的 BLDC/PMSM,把这些"玩具"
直接搬上去,结果往往是:管子烫到冒烟、电机抖得像筛子、电流采样全是噪声,示波器探头一碰上去满屏振铃。

为什么 Demo 转得欢、上机就翻车?因为工业现场给驱动板的是另一套考题:环境温度从 −10 ℃ 到 60 ℃ 反复烤、机械臂急停反转的瞬时
电流是额定三倍、伺服驱动器挤在金属腔体里散热靠自然对流、强电和弱电隔着几厘米却共用一个地。这些条件 hobby 板从没被设计去扛。它们也不是
"换个更大 MOS"就能解决的——大 MOS 的 Qg 更大、驱动更难,反而把问题放大。真正的分水岭,是下面这五个被 hobby 方案悄
悄略过的环节。

一、五道坎:L298N 和伺服之间差的不只是功率

先量化一下起点的窘迫。L298N 是双极性达林顿管(H 桥内置),导通压降高达 V_CE(sat) ≈ 2 V。带 2 A 负载时单桥臂
就发热 P = 2 V × 2 A =4 W,而达林顿加上开关损耗与驱动损耗,实测整机效率常常只有 40% 上下,剩下 60%
全变成散热片上的温度——这也是那块蓝色小板永远要配一块烫手铝片的原因。更致命的是它只能做六步方波或粗 PWM,做不到 FOC 所需的精细三相
正弦调制。

SimpleFOC 小板进步了:用 N-MOS 三相全桥 + 单片机自带 PWM,能跑 FOC。但它通常只有单电阻底部采样甚至开环估
算,栅极驱动常是被动电阻推开、没有自举充电管理、死区靠软件延时、过流全靠软件 ADC 轮询。Demo 电机轻载漂亮,一到工业负载(大惯量、堵
转、反向急停)就暴露五处短板。这五处短板,就是五道坎:

坎 名称 不解决的直接后果 关键器件 / 参数
1 栅极驱动 开关太慢、损耗爆炸、GPIO 推不动 DRV8353;I_g = Qg / t_sw
2 自举 / 高侧 高侧打不开,或高占空比盲区失速 C_boot 100 nF–1 μF;充电泵
3 死区 上下管直通炸管 / 低速电流失真 100–500 ns;死区补偿
4 电流采样 FOC 睁眼瞎,噪声淹没真值 INA240;下管导通中点采样
5 过流保护 堵转 / 短路烧毁半桥 比较器 + DAC;CBC / latch

补一句题外话:这五道坎不是孤立的。栅极驱动弱 → 开关慢 → 损耗大 → 温升逼你降额;自举不稳 → 高侧打不开 → 最高占空比受限 → 高
速上不去;死区大 →低速失真 → 你被迫加大死区补偿 → 又引入新误差。它们是串在一起的"可靠性账本",任何一道省事,都会在别的环节加倍还债
。所以工业驱动板贵,贵的不只是料,是把这五本账都平了。

L298N ──[坎1:栅极驱动]──[坎2:自举/高侧]──[坎3:死区]
   └──[坎4:电流采样]──[坎5:过流保护]──> 工业伺服驱动器

二、栅极驱动:MOSFET 不是"拨一下开关"那么简单

很多人以为给 MOSFET 栅极灌高电平它就通了。实际上栅极和源极之间是一层氧化层电容 C_iss,加上米勒电容 C_rss,驱动芯
片不是在"开一个开关",而是在对一个电容充电放电。关键点有两个。第一是栅极电荷Qg:数据手册给出 Qg(几十到上百 nC
),驱动电流 I_g 必须能在开关时间 t_sw 内灌满它:I_g = Qg / t_sw。第二是米勒平台:栅压升到米勒
平台 V_miller 时电荷用来建立沟道,越过平台后栅压才爬到 V_drive;平台期间 V_DS 剧烈变化,C_rss
把电流"偷走",所以这段驱动能力最影响开关速度。

驱动电流需求怎么算?给个算例:一颗 60 V 的 N-MOS,Qg = 35 nC,目标t_sw = 100 ns(对应 f_sw = 20 kHz),则 I_g = 35 nC / 100 ns = 0.35 A。平均驱动电流看频率:I_gate_avg = Qg × f_sw = 35 nC × 20000 = 0.7 mA(单桥臂)。三相全桥六个管 6 × 0.7 = 4.2 mA,加上
瞬态峰值 0.35 A,GPIO推不动(且 slew 慢),必须有栅极驱动芯片。

这里还有个工程细节:栅极电阻 R_g(几 Ω 到几十 Ω)可抑制栅极振铃和EMI,但越大开关越慢、损耗越高。取折中可先按 R_ g ≈ t_sw / (3 × C_iss)估初值,再上示波器看 V_GS / V_DS 振铃调。TI 的 DRV8353
(三相smart gate driver)内部有电荷泵和自举管理,峰值拉灌电流 ±1 A,直接驱动N-MOS 全桥,并把死区插入、逐周期限流
、过流 / 过温保护全集成,外部只配R_g 和自举二极管。更早的 DRV8301 同门,额外集成 Buck 给 MCU 供电。智
能栅驱把"栅极电荷 + 米勒平台 + 保护 + 供电"一并承包。

还有两个实战要点。其一,IDRIVE 必须按 Qg 配置而非随便拉满:DRV8353允许设拉 / 灌电流档位(50 mA / 1
00 mA / 1 A 等),设太小开关慢、设太大dV/dt 过冲、EMI 炸裂。先按 I_g = Qg / t_sw 算目标再选档
,最后示波器看 V_GS 无振铃、V_DS 无尖峰。其二,栅极回路面积要极小——驱动芯片、栅极电阻、MOS 的 G/S 紧挨
着,回路一圈就是天线,越大越容易把开关噪声耦合进 ADC 和地平面。这也是智能栅驱强调"放在 MOS 旁边"的原因。

有人会问:用三颗独立半桥驱动(如 IRS2101)代替 DRV8353 行不行?可以,但要自己处理三路自举、三路死区对齐,以及三颗芯片传播延
迟不一致带来的"隐性直通"——同一桥臂两芯片延迟差几 ns,累积就可能吃掉死区。集成三相栅驱把这些延迟匹配、死区插入、保护联动做在同一硅片上
,一致性远好于分立。除非成本卡死,工业驱动优先选集成智能栅驱。

MOSFET 选型:R_DS(on) 与 Qg 的拉锯

选桥臂管子本身也是一道坎,而且和栅极驱动互相牵制。同一耐压下,低R_DS(on) 的管子往往 die 面积大、Qg 也大——导通损耗
小了,开关损耗和驱动难度却上去了。算一笔账:若 R_DS(on) = 10 mΩ 扛 20 A 相电流,导通热 P_cond = I² × R = 400 × 0.01 = 4 W/管;若换 5 mΩ 则降到 2 W,但Qg 可能从 30 nC 涨到 60 nC,
开关损耗翻倍。所以不是 R_DS(on) 越低越好,要按实际 f_sw 和占空比在两者间取平衡。耐压留 1.5–2 倍裕度(24 V
母线选 60 V 管,48 V 母线选 100 V 管),别贴边选,否则电压尖峰一过来就永久击穿。

开关频率 f_sw:快了损耗高、慢了纹波大

选 f_sw 是另一笔账。越高则电流纹波越小、电流环带宽越高、噪声移出人耳;但每次开关都付出 P_sw ∝ f_sw,铁损也随频率上
升。工程常见 20–40kHz:低于 20 kHz 有"吱吱"啸叫且纹波大,高于 40 kHz 损耗明显。算例:单管E_sw = 50 μ J,f_sw = 20 kHz,则 P_sw = 50 μJ × 20000 = 1 W/管,六管就是 6 W 纯开关热——还没算
导通损耗,所以频率不是越高越好。

三、自举电容与高侧驱动:高侧 N-MOS 的"鸡生蛋"难题

三相全桥用六个 N-MOS(N 管 R_DS(on) 远低于 P 管,导通损耗小)。但高侧管源极(S)不接地——它接在电机相线上,电位随
PWM 在 0 到 V_bus之间浮动。要让高侧导通,栅极必须比源极高 V_drive(约 10–12 V);当源极已浮到接近 V_bus(如 24 V),栅极就需要 34 V 才能打开。普通12 V 逻辑域驱动芯片做不到。

解决办法是自举(bootstrap):用二极管 + 电容,借低侧管导通、开关节点(相线)被拉到地的瞬间,给自举电容充电到 V_bu s + V_DD;高侧需要时,电容电压叠加在浮动源极之上把它推到足够高。自举二极管要选快恢复、低压降的(如肖特基 BAT54),否
则充电效率被压降吃掉,且慢恢复管在高 dV/dt下会反向漏电。

自举电容取多大?经验公式:C_boot ≥ Qg_total / ΔV_allow,ΔV_allow 是你能容忍的自举电压跌落(一般
< 0.5 V)。实际常用 100 nF–1 μF 的 X7R陶瓷电容,耐压取 V_bus 的 1.5 倍以上。太小则每周期被
抽垮,太大则充电时间常数过长、低占空比充不满、还拖慢启动。

自举的致命软肋是占空比盲区:电容只在低侧导通(开关节点接地)时才能充电。若高侧长时间近似 100% 导通(高速需满占空比),低侧几乎
不开,电容没机会补电,电压一路跌落直到高侧关不掉——失速或直通。对策是加**充电泵(charge pump)**或独立浮动电源(隔离 DC-
DC 给高侧供电),彻底摆脱对低侧周期的依赖。工业伺服几乎都用独立高侧隔离电源,正因如此能稳定输出 100%占空比。

调试时怎么发现自举出问题?最直观的是:电机高速越转越无力、相电流在接近满占空比时突然畸变,或高侧 V_GS 在示波器上"慢慢往下滑"(本
该恒定12 V,却掉到 8 V 以下)。先量自举电容两端电压随负载 / 转速变化——掉出V_drive 门槛,高侧就进线性区、发热激增。
布局上自举电容必须紧挨驱动芯片和自举二极管,走线越短充电回路阻抗越低。

母线支撑电容:半桥的"油箱"

半桥切换时相电流在母线正负间抽放,母线电容必须在开关周期内"兜住"脉动,否则母线电压被 dI/dt 抽得乱跳、反污染采样。选 bulk
电容看容值和纹波电流额定(ripple current rating):电解便宜但 ESR 高、纹波能力弱,常并一颗小 MLCC(低
ESR)吸高频再配大电解扛能量。经验:每千瓦配 1000–2000 μF 量级,并按 I_ripple 留 1.5 倍裕度,否则电
容会热到鼓包。

四、死区时间:上下管直通的"母线爆炸"风险

自举解决了高侧供电,但引出新危险:一个半桥的高侧和低侧绝对不能同时导通——否则 V_bus 经高、低侧管直接短到地,瞬间大电流把
管子炸穿,这就是直通(shoot-through)。PWM 切换时关闭一管和打开另一管都有延迟(栅极充放电 + 传输延迟),若中间没
间隔,旧管未关、新管已通,半桥直通。所以要在切换间插入死区时间(dead-time):先令两管都关,等几百 ns确保旧管彻底 off
,再开另一个。

典型死区 100–500 ns,依 Qg、驱动电流和器件速度而定。DRV8353 允许寄存器配置(如 50 / 100 / 20
0 / 400 ns 档),硬件插入比软件延时更可靠、不受中断抖动影响。但死区是"双刃剑":它防直通,却引入电压失真——死区期间两管
都关,相电压由续流二极管和反电动势决定,等于在理想 PWM 上叠加一个与电流方向相关的误差电压。低调制比、轻载时误差占比最大,电流出现低频畸
变、转矩脉动,电机在低速下"一顿一顿"。

工程上要做死区补偿:根据电流方向预判,提前或延后开通来抵消。补偿好坏直接决定低速平稳性,也是很多开源 FOC 库低速拉胯的根因。怎么
量化?把电机空载低速跑起来,电流探头抓相电流,若死区频率附近谐波明显偏大即失真。补偿量幅值约等于 V_dead = V_bus × t_d ead × f_sw,注意它随 V_bus和 f_sw 变化,补偿系数不能写死,要实时算。调好后低速"一顿一顿"会消失。

五、电流采样:FOC 的命脉是"先知道相电流"

FOC 本质是把三相电流分解到旋转坐标系的 I_d / I_q 再分别闭环,前提是实时、准确知道三相电流。不知道相电流,FO
C 就是睁眼瞎——I_q 算错,转矩就失控。两种主流方案:

方案 采样点 优点 缺点 典型场景
三电阻 三相下管源极各一串 无盲区,时序简单 多两颗 shunt + 运放 工业伺服、通用驱动
单电阻 母线负端单颗 省料、成本低 窗口受限、重构难 SimpleFOC 小板、低成本

三电阻采样:三个下桥臂源极各串 shunt,运放差动放大送 ADC。任意时刻至少一相下管导通,总能采到两相(第三相由 I_a + I_b + I_c = 0 推算),简单无盲区。单电阻采样(单 shunt):只在母线负端放一颗,靠不同开关组合下的电流重构三相,
省料但窗口受限、算法复杂,正是 SimpleFOC 常用的省钱方案。三电阻有两个翻车细节:一是 shunt 功率与温漂,满负载P = I² × R,10 mΩ 扛 10 A 即 1 W,要选 1–2 W 级低 TCR 合金电阻,否则发热漂移;二是 Kelvin 连
接
,shunt 四脚的电流脚和采样脚分开走线,不能让大电流压降混进信号。

单电阻则要在一个 PWM 周期内挑两个不同开关状态的窗口各采一次再解算三相。难点是低速大占空比时一个有效矢量窗口极窄、采样时间不够、
噪声大,常配更高 f_sw 或复杂状态选择来换窗口。这也是它便宜却"挑场景"的原因——没有最好的技术,只有匹配场景的技术。

无论哪种,运放都面对地狱级工况:共模电压在 PWM 边沿剧烈跳变。下管导通时采样点近地(0 V),关断瞬间跳到近 V_bus(如
24 V),跳变沿 ns 级、幅值几十伏,普通运放会被打飞。TI 的 INA240 专门为此:具备 ±300 mV低侧检测能力
,关键是超高共模瞬态抑制(CMTI),能扛 V_bus 量级共模跳变而不饱和,典型增益 20 V/V、带宽 1.3 MHz。再配
RC 抗混叠(R ≈ 20 Ω,C ≈ 1 nF)喂 SAR ADC。

采样时刻要在下管导通的中点:此时相电流最平稳、开关噪声已 settle,远离跳变边沿。ADC 触发要由 PWM 定时器在合适计数点同
步启动(如中心对齐PWM 的峰值 / 谷值附近),而非随便轮询——触发点错了采到的就是边沿噪声。还有两个坑:一是上电零偏校准,shu
nt + 运放 + ADC 总有失调,上电静止时全零占空比采样几十次求平均减掉,否则 I_d / I_q 永远带直流谎;二是AD
C 建立时间
,SAR 对驱动阻抗敏感,输出端 RC 必须让采样保持电容充分充电,否则高位码乱跳。

相电流  ┌───┐      ┌───┐
        │   │      │   │
   0────┘   └──────┘   └──> t
        ↑下管导通窗口   ↑ 中心点采样(避开边沿噪声)

六、过流保护:软件太慢,必须用硬件先动手

采样有了,万一电机堵转,相电流几倍飙升,等 MCU 跑完 ADC 中断、算完 PID、再下令关 PWM,几十 μs 已过去,管子早烧
了。所以过流保护第一原则:硬件先关断,软件后处理。第一招是比较器 + DAC 阈值:采样电流放大后送模拟比较器,另一脚接 D
AC 设定的过流阈值(如额定 2 倍),超阈即拉死PWM 栅极,响应微秒甚至亚微秒级。DRV8353 内置这套:外部设 V_REF ,内部比较器触发后锁住直到软件清标志。

第二招借鉴 IGBT 驱动的 DESAT(退饱和)检测:监测高侧管 V_DS,正常导通时很小;一旦过流退出饱和、V_DS 飙
升,DESAT 引脚即判定短路、毫秒内关断——这是防短路炸管的最后闸,车规三相驱动普遍集成。响应策略分两种:**CBC(逐周期限流)**每周
期检测、超了关这一周期下周期再放开,适合平稳限流不中断;**锁死保护(latch-off)**严重过流 / 短路就彻底关断锁死、需复位,适合
保命。工业驱动通常结合:轻微过流 CBC 软限,堵转 / 短路 latch 硬锁。限流要软,保命要硬。

阈值怎么设?算例:额定相电流 5 A,shunt 10 mΩ,V_sense = 5 A × 0.01 Ω= 50 mV;INA240
增益 20 V/V,输出 1 V。过流阈值设 2 倍即 10 A,对应V_sense = 100 mV、输出 2 V,DAC /
比较器参考设 2 V 即可。留 2 倍裕度扛启动换向尖峰,但别太高否则失去保命意义。比较器加一点滞回(hysteresis),否则
阈值附近噪声让保护反复抖动,既伤管又让电机喘。

七、调试实战:把五道坎搬上示波器

理论讲完,落到实验室怎么验证五道坎真的跨过。最小调试流程,按风险从高到低:

  1. 先空载、后带载。 第一次上电别直接挂电机,用功率电阻或灯泡代替,
    确认三相 PWM 对称、无直通尖峰,再接电机空转。
  2. 测 V_GS 看栅驱。 每相高 / 低侧各测一路,确认上升沿无振铃、平台
    清晰、V_drive 达标(10–12 V)。振铃大就加大 R_g;平塌就查自举。
  3. 量自举电压随转速。 探头打高侧 V_GS,电机低速拉到高速,看是否
    始终稳在 12 V 附近。掉即占空比盲区,需充电泵或独立电源。
  4. 抓相电流看死区。 低速空载抓相电流,死区特征谐波偏大即失真,做
    补偿后谐波应下降。
  5. 人为堵转验过流。 捏住电机轴(小心烫)或加大负载指令,看硬件比较
    器是否按阈值微秒关断,而非等软件烧管。
坎 没跨过的现象 跨过后的表现
栅极驱动 V_GS 振铃、开关慢、R_DS(on) 发热大 边沿干净、温升可控
自举 / 高侧 高速时 V_GS 下滑、失速 全转速 V_GS 恒定
死区 低速抖动、电流 6 次谐波大 低速平稳、谐波回落
电流采样 I_q 抖、零偏飘、噪声淹没 波形干净、闭环稳
过流保护 堵转即烧管 微秒关断、可复位

安全提醒:调试高压半桥,探针地线要短、示波器要隔离(或差分探头)。半桥的"地"是开关噪声地,普通无源探头地线一长就是一圈天线,轻则测
不准,重则打坏通道。

八、PCB 散热:一句话带过(其实不止一句)

功率路径(母线电容 → 半桥 → 电机端子)走线要短而粗,铺铜尽量宽,MOSFET 散热焊盘下打过孔阵列(thermal via
s)连通内层 / 底层铜箔把热带走。补一句 layout 铁律:强电(母线、相线、半桥)和弱电(MCU、ADC、通信)的回流地必须单
点汇接
,否则半桥开关 dI/dt 在地平面刮出的噪声直接灌进 ADC 参考,把前面采样努力一笔勾销——这也是 hobby 板在机柜里
"莫名其妙抖"的隐藏元凶。

热设计可粗略量化:若总损耗 P_loss = 8 W,结到壳 R_θJC = 1 ℃/W、壳到环境 R_θCA = 8 ℃/W,
则 ΔT = 8 W × 9 ℃/W = 72 ℃,结温 T_J = 72 + 60= 132 ℃,已逼近 150 ℃ 上限——说明
铺铜和过孔不够,得加散热片或降额。所以散热不是"一句话",是温升预算这关的最后一笔。

九、软硬联动:驱动板是执行器的"心脏"

把这篇和前两篇连起来看,工业机器人的执行链就完整了:电源板提供干净、防反接、可缓启动的 V_bus(见
工业级机器人电源板:防反接、缓启动与 eFuse
),本篇驱动板把电能变成可控三相电流去扭动电机,而这一切要听上位机的话——控制指令经隔离 CAN 进来,时序必须和其他关节对齐(见
烧不坏的通信口:隔离型 CAN 与 RS485 防护电路
)。驱动板就是执行器的心脏:心脏(栅驱 + 采样 + 保护)稳,手臂才动得准、动得狠、还不自爆。

落到 ROS 侧,铁律是:电流环不能在 PC 上跑。FOC 电流闭环周期 10–20kHz(I_d / I_q 的 PI 每
秒算上万次),只能在驱动板 MCU / FPGA 里硬实时完成。ROS 这一层(通过 ros_control 的 hardware_i nterface)只负责把上层规划好的转矩 / 电流指令经隔离 CAN 下发,再把关节状态读回。驱动板是ros_control
的"执行末端",内部那套栅驱 + 采样 + 保护的硬实时闭环,才是真正让机械臂听话的部分。指令周期抖动、CAN 隔离可靠性(见 CAN 隔
离篇),直接决定上层 move_group 算得再漂亮,落地会不会"差之毫厘、抖之千里"。这也解释为什么时间同步篇对多关节协同那么重要—
—所有驱动板控制周期必须对齐同一时基,否则多轴插补轨迹会在接缝处打褶。

画板自查清单(照着打勾):DRV8353 三路智能栅驱 ✔ 自举电容 100 nF–1 μF✔;死区 100–500 ns 硬件可配 ✔ I
NA240 三电阻采样 ✔;比较器硬件过流 + CBC/ latch 双策略 ✔ 功率铺铜 + 过孔阵列 ✔。

十、结语:五道坎背后是同一本账

回看开头——L298N 到伺服差在哪?现在答案清楚:差的不是功率数字,是栅极驱动、自举、死区、采样、过流这五道坎,每一道都是"可靠性账本"上
的一笔。hobby 板把这几笔记成"暂不计",Demo 能转;工业现场要笔笔平掉,于是才有 DRV8353 的智能栅驱、INA240 的抗共
模采样、硬件比较器的微秒关断。下次看到一块"能跑 FOC 的小板"和一块"贵十倍的伺服驱动",希望你能一眼看出它们之间隔着的,正是这五道坎。

参考文献

  1. Texas Instruments. DRV8353x Three-Phase Smart Gate Drivers With Buck
    and Current Shunt Amplifiers
    , Datasheet SLVSDY8, 2018.(智能栅驱、自举、死区、过流保
    护集成)
  2. Texas Instruments. INA240 80-V, High-Side, Low-/High-Side, Bi-Directi
    onal
    Current Sense Amplifier With Enhanced PWM Rejection
    , Datasheet SBOS70
    9,2017.(抗 PWM 共模、CMTI 指标)
  3. Texas Instruments. DRV8301 Three-Phase Gate Driver With Dual Current
    Shunt Amplifiers and Buck Regulator
    , Datasheet SLVSAX5, 2012.(集成 Buck
    与采样放大)
  4. SimpleFOC. Documentation: Current Sensing (Inline / Low-Side / Single
    Resistor)
    , https://docs.simplefoc.com/.(单 / 三电阻采样原理)
  5. Texas Instruments. Motor Drive and Control: Understanding MOSFET Gate
    Drivers and Bootstrap Design
    , Application Note / Motor Drive White Pa
    per,2019.(栅极电荷、自举计算、死区设计)
  6. Texas Instruments. Current Sensing in Three-Phase Brushless Motors:
    Shunt Placement and Timing
    , Technical Article, 2020.(采样时刻与下管中点)

下一篇计划写闭环控制里 I_d / I_q 怎么解耦、弱磁怎么拉高速,以及和 ROSros_control 硬件接口的对接——让
驱动板真正听进 MoveIt 的指令。