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. 工作电压范围——必须覆盖电机额定电压
  2. 峰值电流能力——至少是电机堵转电流的1.5倍
  3. PWM频率支持——至少20kHz以上,避免人耳听到啸叫
  4. 死区时间可调——防止上下管直通
  5. 保护功能——过流、过温、欠压锁定,一个都不能少

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 整体硬件架构

把上面三部分拼起来,就是一套完整的电机控制硬件平台。我画了一张图,帮你理清关系:

电机控制硬件平台架构图 外部电源 12V-48V 电机驱动芯片 DRV8323 / IR2101 直流无刷电机 BLDC / PMSM DC-DC 12V LDO 3.3V STM32 MCU F405 / F407 PWM控制信号 编码器 位置/速度反馈 电流反馈 关键说明: 1. 电源路径:外部电源 → DC-DC 12V → LDO 3.3V → MCU 2. 控制路径:MCU输出PWM → 驱动芯片放大 → 电机运转 3. 反馈路径:编码器/电流传感器 → MCU ADC/定时器 → 闭环控制

从这张图能看出来,整个系统分三条路径:

  • 电源路径:外部电源→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 主时钟

嗯,硬件平台就这些。你把这套东西搭起来,电机控制的基础就有了。下一块板子,咱们开始写代码,让电机转起来。