2. 硬件平台搭建:主控、驱动与采样电路

做电机控制,硬件是跑不掉的第一关。我见过不少朋友算法调得挺顺,一上硬件就炸管、烧板子,最后查出来是电路设计留了坑。这一章咱们就把 STM32 主控选型、驱动板设计、编码器接口和电流采样这几个核心模块捋一遍。

本章核心脉络: 主控选型决定算力天花板 → 驱动板决定功率输出能力 → 编码器接口决定位置精度 → 电流采样决定控制带宽。四者缺一不可。
硬件平台核心模块架构 STM32 主控 F4 / G4 / H7 系列 驱动板 MOSFET / IGBT 编码器接口 增量式 / 绝对值 电流采样电路 采样电阻 / 运放 💡 设计原则 • 主控与驱动之间必须加隔离(光耦或磁耦),防止高压串入 MCU • 编码器信号线用差分传输,抗干扰能力强 • 电流采样路径尽量短,远离功率开关管

2.1 STM32 主控选型:算力与外设的平衡

选主控说白了就是看三点:算力够不够、外设全不全、生态熟不熟。我个人习惯从这三个维度去卡。

系列 主频 定时器资源 ADC 采样率 适合场景
STM32F4 168-180 MHz 高级定时器 ×2,通用 ×8 2.4 MSPS 通用伺服、工业变频
STM32G4 170 MHz 高级定时器 ×4,HRTIM 4 MSPS 高性能 FOC、数字电源
STM32H7 480-550 MHz 高级定时器 ×6,HRTIM 3.6 MSPS 多轴联动、机器人
我的建议: 新手入门用 F4 系列就够了,性价比高,资料多。G4 的 HRTIM 做高频 FOC 很香,但配置复杂一些。H7 算力过剩,除非你要跑多轴同步或者高级算法,否则没必要上。

选型时还要注意定时器的互补输出和死区插入功能。做电机控制,PWM 信号必须带死区,否则上下管直通就是炸管。STM32 的高级定时器自带硬件死区,省掉外部逻辑。

2.2 驱动板设计:MOSFET 与 IGBT 的选择

驱动板是功率核心。MOSFET 和 IGBT 怎么选?我直接给结论:

  • 低压(≤60V)小功率: MOSFET,开关频率可以做到 20-100 kHz,导通电阻小
  • 中高压(200V-600V)大功率: IGBT,耐压高,但开关频率一般不超过 20 kHz
  • 超高压(>600V): 必须用 IGBT 或 SiC MOSFET,但 SiC 驱动电路更讲究

驱动电路设计有几个关键点,我踩过坑,跟大家说说:

  1. 栅极驱动电阻: 太小会导致开关振荡,太大则开关损耗高。我一般从 10Ω 开始试,用示波器看栅极波形,调到没有明显振铃为止。
  2. 自举电路: 半桥驱动常用自举方式,自举电容要选低 ESR 的陶瓷电容,容量至少 1μF。我曾经用普通电解电容,高频下自举电压掉得厉害,导致上管驱动不足。
  3. 死区时间: 软件死区 + 硬件死区双重保险。STM32 定时器死区设 1-3μs,驱动芯片内部再设 0.5μs,这样最安全。
⚠️ 重要提醒: 驱动芯片的 VCC 和 GND 之间必须紧贴放置 0.1μF 陶瓷电容 + 10μF 电解电容。我见过有人省掉小电容,结果驱动芯片在开关瞬间掉电复位,导致输出异常。

2.3 编码器接口电路:信号完整性是关键

编码器信号是位置和速度的「眼睛」。接口电路设计不好,位置跳变、速度抖动是家常便饭。

增量式编码器常用差分信号(A+/A-、B+/B-、Z+/Z-),我建议用 AM26LV32 这类差分接收器转成单端信号再进 STM32。直接接 GPIO 的话,长线传输时噪声会耦合进来,导致多计数或少计数。

绝对值编码器(如 BiSS-C、SSI、EnDat)需要时钟同步。STM32 的 SPI 外设可以模拟这些协议,但要注意时钟频率和时序要求。BiSS-C 的时钟一般 1-10 MHz,线长超过 1 米就要考虑信号反射。

接口电路要点:
• 差分信号走双绞线,阻抗匹配 120Ω
• 接收器输出加施密特触发器整形
• 编码器供电用独立 LDO,不要和功率电路共用
• 长线传输时加共模扼流圈

2.4 电流采样电路:精度决定控制质量

电流采样是 FOC 的基石。采样不准,角度估算、转矩控制全是错的。常用的采样方式有三种:

方式 优点 缺点 适用场景
单电阻采样 成本低,电路简单 低速时采样窗口窄 低成本风机、泵类
双电阻采样 两相电流直接测量 需要三相电流重构 通用伺服
三电阻采样 三相独立测量,精度最高 成本高,PCB 面积大 高性能 FOC、机器人

采样电阻的选型要注意功率和温漂。我一般用 5mΩ 或 10mΩ 的合金电阻,功率按最大电流的平方乘以电阻再留 2 倍余量。运放用差分放大器,比如 INA240,共模抑制比高,能抑制 PWM 开关噪声。

避坑指南: 采样电阻的 PCB 走线要用开尔文接法(四线制),把电流路径和电压检测路径分开。我曾经直接用焊盘走电流,结果采样值偏大 10%,查了半天才发现是铜箔电阻引入的误差。

运放输出到 STM32 ADC 之间要加 RC 低通滤波,截止频率设在 1-5 MHz 左右,滤掉开关噪声。ADC 采样时刻要避开 PWM 开关边沿,这个在软件里用定时器触发同步采样就能解决。

采样电路设计清单:
✅ 采样电阻:5-10mΩ,合金材质,功率余量 2 倍
✅ 差分运放:INA240 或同类,CMRR > 80dB
✅ 低通滤波:RC 截止频率 1-5 MHz
✅ ADC 参考电压:外部高精度基准(如 REF3033)
✅ PCB 布局:采样路径远离功率管,开尔文接法

嗯,硬件平台这部分就这些。主控选型、驱动板、编码器接口、电流采样,每个模块都有不少细节。你想想看,这些电路要是有一个地方没处理好,后面调试的时候就会反复出问题。我当年做第一个 FOC 项目时,电流采样噪声大得离谱,折腾了两周才发现是运放供电纹波太大。所以,硬件上多花点心思,后面软件调试会顺畅很多。