3. 硬件平台搭建:STM32最小系统、电机驱动芯片选型、电源电路设计
做电机控制,硬件是地基。地基没打好,软件写得再漂亮也白搭。
我见过不少新手,上来就调PID,结果电机嗡嗡响就是不转。查了半天,原来是电源纹波太大,MCU频繁复位。所以这一章,咱们把硬件平台从头捋一遍。
3.1 STM32最小系统——控制核心
STM32是电机控制的大脑。它负责读取编码器、计算控制算法、输出PWM波。我习惯用STM32F4系列,比如F405或F407。为什么?因为带浮点运算单元(FPU),算PID不用操心定点数转换。
一个最小系统,必须包含以下部分:
- 供电电路:3.3V稳压,滤波电容要足。我一般放10μF+0.1μF并联,靠近每个电源引脚。
- 晶振电路:8MHz主晶振,32.768kHz RTC晶振(可选)。注意负载电容要匹配,不然频率不准。
- 复位电路:10kΩ上拉电阻+0.1μF电容到地。简单可靠。
- BOOT引脚:拉低到GND,从Flash启动。调试时可能需要拉高进系统存储器。
- SWD调试接口:SWCLK、SWDIO、GND、3.3V。四根线就够了,省一个串口。
我的习惯:在SWD接口上串联22Ω电阻。有一次板子走线太长,信号反射导致烧录失败,加上电阻就好了。小成本解决大问题。
STM32的定时器资源很关键。电机控制至少需要:
- 1个高级定时器(TIM1或TIM8)——输出6路互补PWM,带死区插入
- 2个通用定时器——一个做编码器接口,一个做速度环定时中断
- 1个ADC——采样相电流
选型时,我建议直接看定时器数量。F405有2个高级定时器+10个通用定时器,绰绰有余。
3.2 电机驱动芯片选型——功率放大的关键
MCU出来的PWM信号是3.3V,电流只有几毫安。电机需要的是12V-48V、几安培的驱动电流。中间必须靠驱动芯片来放大。
驱动芯片分两类:
| 类型 | 代表型号 | 特点 | 适用场景 |
|---|---|---|---|
| 集成MOSFET驱动 | DRV8301、DRV8323 | 内置栅极驱动+电流检测放大器,外围简单 | 中小功率(<100W),快速原型 |
| 分立栅极驱动 | IR2101、IR2104 | 只驱动半桥,需外置MOSFET | 大功率(>100W),灵活配置 |
| 智能功率模块 | IPM模块(如PS21765) | 集成IGBT+驱动+保护,可靠性高 | 工业级,大功率,高可靠性 |
我个人做教学和原型时,最爱用DRV8323。为什么?
- 三个半桥驱动,直接驱动6个N沟道MOSFET
- 内置三个电流检测放大器,省掉外部运放
- SPI接口配置参数,死区时间、过流阈值都能调
- 工作电压6V-60V,覆盖大部分直流无刷电机
注意:DRV8323的散热焊盘必须焊接到地平面。我曾经有一块板子,散热焊盘虚焊,芯片空载就烫到80°C。后来加了热风枪重新焊接才解决。
选型时,重点看这几个参数:
- 工作电压范围——必须覆盖电机额定电压
- 峰值电流能力——至少是电机堵转电流的1.5倍
- PWM频率支持——至少20kHz以上,避免人耳听到啸叫
- 死区时间可调——防止上下管直通
- 保护功能——过流、过温、欠压锁定,一个都不能少
3.3 电源电路设计——稳定是王道
电机控制系统的电源,比普通数字电路复杂得多。电机启动瞬间,电流可能是额定电流的5-10倍。电源如果撑不住,MCU就会复位。
一个典型的电源架构是这样的:
外部电源(12V-48V)
│
├──→ 电机驱动电源(直接供电)
│
└──→ 降压到12V(给栅极驱动供电)
│
└──→ 降压到5V(给编码器、逻辑电路)
│
└──→ 降压到3.3V(给MCU)
这里有个关键点:电源要隔离。电机驱动部分的电流波动很大,如果和MCU共用电源,干扰会直接耦合进控制电路。
我常用的方案:
- 电机驱动电源:直接从外部电源取电,加一个大电解电容(1000μF以上)
- 栅极驱动电源:用DC-DC降压到12V,比如LM2596或TPS5430
- MCU电源:用LDO从12V降到3.3V,比如AMS1117-3.3
避坑指南:我曾经在DC-DC输出端只放了10μF电容,结果电机一启动,3.3V电压跌到2.8V,MCU直接死机。后来在DC-DC输出加了100μF电解+10μF陶瓷,问题解决。记住:电机控制系统的电源,电容宁多勿少。
电源布局也有讲究:
- 大电流回路要短粗——功率地和信号地分开,单点连接
- DC-DC的电感要远离MCU——避免磁场耦合干扰
- 每个IC的电源引脚都要有去耦电容——0.1μF靠近引脚,10μF在附近
3.4 整体硬件架构
把上面三部分拼起来,就是一套完整的电机控制硬件平台。我画了一张图,帮你理清关系:
从这张图能看出来,整个系统分三条路径:
- 电源路径:外部电源→DC-DC→LDO→MCU,逐级降压,逐级滤波
- 控制路径:MCU输出PWM→驱动芯片→电机,信号从弱到强
- 反馈路径:编码器/电流传感器→MCU,形成闭环
这三条路径,任何一条出问题,电机都转不好。所以画PCB时,要保证它们物理上分开,避免干扰。
3.5 元器件选型清单
最后,我列一份参考清单。你照着买,基本不会踩坑:
| 元器件 | 推荐型号 | 数量 | 备注 |
|---|---|---|---|
| MCU | STM32F405RGT6 | 1 | LQFP64封装,好焊接 |
| 驱动芯片 | DRV8323SRTAR | 1 | QFN封装,注意散热 |
| MOSFET | IRFS3006-7PPbF | 6 | 60V/240A,余量充足 |
| DC-DC | TPS5430DDAR | 1 | 12V输出,3A能力 |
| LDO | AMS1117-3.3 | 1 | 3.3V输出,1A |
| 电解电容 | 1000μF/63V | 2 | 电源输入滤波 |
| 陶瓷电容 | 10μF/25V | 5 | DC-DC输出滤波 |
| 晶振 | 8MHz/20pF | 1 | 主时钟 |
嗯,硬件平台就这些。你把这套东西搭起来,电机控制的基础就有了。下一块板子,咱们开始写代码,让电机转起来。