作为一个软硬通吃的工程师,我觉得买现成的驱动板是没有灵魂的。 为了我的四足机器人项目,我决定基于 DRV8301 + STM32G4 设计一款高性能 FOC 驱动器。

🎨 原理图:看似简单

原理图其实没什么好说的,照着 Datasheet 抄呗。

  • 主控:STM32G431CBU6(自带 Cordic 单元,算三角函数神器)。
  • 预驱:DRV8301(集成了运放和 Buck 降压,省事)。
  • 功率级:6 个 N-MOS 管组成的三相逆变桥。

我觉得自己稳了。

🗺️ Layout:电流的艺术

到了画 PCB (Layout) 阶段,问题来了。 这是我第一次画 4 层板

  • 大电流回路:电机电流峰值可能达到 30A。铜皮要多宽?过孔要打多少?
  • 采样电阻:FOC 算法依赖高精度的电流采样。采样电阻的走线必须是差分的,而且要远离干扰源。
  • 地平面:模拟地 (AGND) 和 功率地 (PGND) 怎么分?单点接地还是大面积铺铜?

我查阅了无数份 Application Note,最后决定:大面积铺地,关键信号包地。看着绿油油的 3D 预览图,我充满了自信。

💥 第一次上电:Magic Smoke

板子打样回来,我花了 3 个小时焊接。 检查短路?没问题。 上电!

“砰!” 伴随着一声清脆的爆鸣,一股熟悉的焦糊味弥漫在实验室。 我的 100 块钱(板子+元器件)瞬间化为乌有。

🕵️‍♂️ 尸检报告

经过惨痛的排查,我发现了两个致命错误:

  1. 死区时间 (Dead Time):我在软件里设置的死区时间太短了。导致上下桥臂的 MOS 管有那么一瞬间同时导通了。电源直接对地短路,电流瞬间爆炸。
  2. 栅极电阻:我选的栅极驱动电阻太小,导致 MOS 管开关速度过快,产生了巨大的 $dv/dt$ 尖峰,直接击穿了栅极氧化层。

🔄 重生

吸取教训,我重新调整了参数,并手动修补了板子。 第二次上电,我接上了限流电源。 电流 0.05A,正常! 输入 PWM,电机发出了轻微的电流声,然后缓缓转动起来。 示波器上,三相电流呈现出完美的正弦波

那一刻,我觉得那几个炸掉的 MOS 管死得其所。 硬件设计,真的是一门用钱(和头发)堆出来的手艺。