2. 硬件平台搭建:主控、驱动与采样电路
做电机控制,硬件是跑不掉的第一关。我见过不少朋友算法调得挺顺,一上硬件就炸管、烧板子,最后查出来是电路设计留了坑。这一章咱们就把 STM32 主控选型、驱动板设计、编码器接口和电流采样这几个核心模块捋一遍。
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 | 多轴联动、机器人 |
选型时还要注意定时器的互补输出和死区插入功能。做电机控制,PWM 信号必须带死区,否则上下管直通就是炸管。STM32 的高级定时器自带硬件死区,省掉外部逻辑。
2.2 驱动板设计:MOSFET 与 IGBT 的选择
驱动板是功率核心。MOSFET 和 IGBT 怎么选?我直接给结论:
- 低压(≤60V)小功率: MOSFET,开关频率可以做到 20-100 kHz,导通电阻小
- 中高压(200V-600V)大功率: IGBT,耐压高,但开关频率一般不超过 20 kHz
- 超高压(>600V): 必须用 IGBT 或 SiC MOSFET,但 SiC 驱动电路更讲究
驱动电路设计有几个关键点,我踩过坑,跟大家说说:
- 栅极驱动电阻: 太小会导致开关振荡,太大则开关损耗高。我一般从 10Ω 开始试,用示波器看栅极波形,调到没有明显振铃为止。
- 自举电路: 半桥驱动常用自举方式,自举电容要选低 ESR 的陶瓷电容,容量至少 1μF。我曾经用普通电解电容,高频下自举电压掉得厉害,导致上管驱动不足。
- 死区时间: 软件死区 + 硬件死区双重保险。STM32 定时器死区设 1-3μs,驱动芯片内部再设 0.5μs,这样最安全。
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 开关噪声。
运放输出到 STM32 ADC 之间要加 RC 低通滤波,截止频率设在 1-5 MHz 左右,滤掉开关噪声。ADC 采样时刻要避开 PWM 开关边沿,这个在软件里用定时器触发同步采样就能解决。
✅ 采样电阻:5-10mΩ,合金材质,功率余量 2 倍
✅ 差分运放:INA240 或同类,CMRR > 80dB
✅ 低通滤波:RC 截止频率 1-5 MHz
✅ ADC 参考电压:外部高精度基准(如 REF3033)
✅ PCB 布局:采样路径远离功率管,开尔文接法
嗯,硬件平台这部分就这些。主控选型、驱动板、编码器接口、电流采样,每个模块都有不少细节。你想想看,这些电路要是有一个地方没处理好,后面调试的时候就会反复出问题。我当年做第一个 FOC 项目时,电流采样噪声大得离谱,折腾了两周才发现是运放供电纹波太大。所以,硬件上多花点心思,后面软件调试会顺畅很多。