3、硬件平台搭建:主控芯片选型(STM32/GD32)、驱动芯片(DRV8301/IR2101)、电流采样电路设计

做FOC矢量控制,硬件平台是地基。地基没打好,算法写得再漂亮也白搭。我这些年折腾下来,发现很多新手一上来就急着调PI参数,结果电机嗡嗡响就是不转,最后查出来是电流采样电路噪声太大——嗯,这种坑我踩过不止一次。

今天咱们就把硬件平台的三个核心模块掰开揉碎了讲:主控芯片怎么选、驱动芯片用哪个、电流采样电路怎么设计。说白了,这三样东西决定了你的FOC能跑多稳、能跑多快。

3.1 主控芯片选型:STM32还是GD32?

主控芯片是FOC的大脑。它要干三件事:跑算法、采电流、发PWM。我个人习惯,选型时先看三点——算力够不够、外设全不全、成本压不压得住。

3.1.1 STM32系列

STM32在电机控制领域是绝对的主流。我最早做FOC用的就是STM32F103,那时候还叫「神车F1」。现在主流方案已经升级到STM32G4系列了。

型号 主频 特色外设 适用场景
STM32F103 72MHz 基本定时器、ADC 入门学习、低速电机
STM32F405 168MHz FPU、高级定时器 中高速FOC
STM32G431 170MHz CORDIC、HRTIM、运放 专业FOC、伺服
STM32H743 480MHz 双核、高精度PWM 多电机、复杂算法

我个人最推荐STM32G431。为什么?它内置了CORDIC硬件加速器,算三角函数比软件快10倍以上。你想想看,FOC里SVPWM要算sin/cos,用CORDIC一眨眼就出来了。而且它还集成了运放和比较器,省掉外部运放芯片,板子能小一圈。

我的经验: 如果你刚开始学FOC,用STM32F103完全够用。但要做产品,建议直接上G431。我在一个项目里用F103跑FOC,PWM频率设到20kHz,CPU占用率就飙到70%了。换成G431后,同样的算法只占30%,还能腾出资源做通信和故障诊断。

3.1.2 GD32系列

GD32是国产芯片,跟STM32引脚兼容。说白了就是「平替版」。价格只有STM32的一半甚至更低。我最近几个量产项目都在用GD32F303,跑FOC完全没问题。

但要注意几个坑:

  • ADC精度: GD32的ADC噪声比STM32大一些。我测过,STM32G431的ADC有效位数能做到11.5位,GD32F303大概在10.8位左右。做电流采样时,这个差距会影响低速性能。
  • 定时器同步: GD32的高级定时器跟STM32寄存器地址不完全一样。移植代码时,定时器配置要重新调。我曾经因为没注意这个,PWM相位差了180度,电机直接反转——嗯,那场面挺尴尬的。
  • 温度范围: 工业级产品建议用STM32。GD32在高温下(85°C以上)稳定性差一些。
选型建议: 学习用STM32F103(便宜、资料多),产品用STM32G431(性能强、集成度高),成本敏感用GD32F303(记得留裕量)。

3.2 驱动芯片:DRV8301 vs IR2101

主控芯片输出的是3.3V/5V的逻辑信号,驱动不了电机。驱动芯片的作用就是把逻辑信号放大成12V-48V的栅极驱动电压,同时提供死区时间保护。

3.2.1 DRV8301——集成方案

DRV8301是TI的明星产品。它把三个半桥驱动、电流采样放大器、降压稳压器全集成在一个芯片里。我最早用这个芯片时,感觉就像拿到了「懒人包」——外围电路少得可怜。

它的核心参数:

  • 供电电压:6V-60V
  • 驱动电流:2.3A sink / 1.7A source
  • 内置三个差分放大器(增益可调:10/20/40/80)
  • SPI接口配置参数
  • 死区时间可编程(50ns-200ns)

我在一个48V/500W的电机项目里用了DRV8301。说实话,真省心。电流采样直接用芯片自带的放大器,连外部运放都省了。而且它的SPI接口能实时读取故障状态——过流、过温、欠压,一目了然。

注意: DRV8301的散热是个问题。它内部集成了LDO,压差大时发热严重。我那个项目里,输入48V,内部LDO输出12V,电流50mA,功耗就有1.8W。不加散热片的话,芯片温度能到90°C。后来我加了铜皮散热,才压到65°C。

3.2.2 IR2101——分立方案

IR2101是经典的半桥驱动芯片。一个芯片只能驱动一个半桥,做三相FOC需要三片。它没有集成电流采样,需要外加运放。

它的核心参数:

  • 供电电压:10V-20V
  • 驱动电流:290mA sink / 210mA source
  • 自举电路供电(需要外接自举二极管和电容)
  • 死区时间由外部电阻设置

为什么还有人用IR2101?便宜啊!三片IR2101加起来不到5块钱,一片DRV8301要20多块。而且分立方案灵活,你可以自己选MOS管、自己调死区时间。

但代价是什么?

  • PCB面积大——三片IR2101加三个自举电路,再加三个运放,板子比DRV8301方案大两倍
  • 调试麻烦——自举电容选型、死区时间匹配、走线布局,每个环节都可能出问题
  • 可靠性低——分立元件多,焊点多,故障率自然高
我的建议: 做原型验证用DRV8301,省时间。做低成本量产用IR2101,但一定要留足调试周期。我曾经在一个项目里用IR2101,自举电容选小了,高频时上管驱动电压不足,MOS管烧了三次才找到原因——嗯,那段时间真是「闻着焦味调参数」。

3.3 电流采样电路设计

电流采样是FOC的「眼睛」。采样不准,角度算出来就是错的,电机就会抖、会啸叫、会丢步。我见过太多人花大价钱买好芯片、好MOS管,结果在电流采样上省了几毛钱,整个系统性能一塌糊涂。

3.3.1 采样方式选择

电流采样有三种主流方式:

方式 原理 优点 缺点
低侧采样 在MOS管源极和GND之间串采样电阻 电路简单、共模电压低 只能在下管导通时采样
高侧采样 在电源和MOS管漏极之间串采样电阻 可连续采样 共模电压高、需要差分运放
相电流采样 在电机相线上串采样电阻 直接测量相电流 共模电压高、需要隔离

FOC最常用的是低侧采样。为什么?因为便宜、简单。你想想看,低侧采样电阻两端的电压就是采样电阻上的压降,共模电压接近0V,普通运放就能处理。

但低侧采样有个致命问题:只能在PWM下管导通时采样。如果PWM占空比接近100%,下管导通时间太短,采样窗口不够。这时候就需要「三电阻采样」或者「单电阻采样」的算法来补偿。

3.3.2 采样电阻选型

采样电阻的选型有几个关键参数:

  • 阻值: 一般选5mΩ-50mΩ。阻值越大,信号越强,但功耗也越大。我一般按「满量程时压降50mV-100mV」来算。比如电机峰值电流10A,选10mΩ电阻,满量程压降100mV,功耗1W。
  • 功率: 要留2倍裕量。上面例子1W功耗,选2W电阻。
  • 温漂: 选±50ppm/°C以内的。温漂大了,电流采样会随温度漂移,FOC的PI参数就得跟着调——这谁受得了?
  • 寄生电感: 选低电感型(比如金属箔电阻)。寄生电感会在PWM开关瞬间产生尖峰,干扰采样。
我的血泪教训: 有一次我用普通贴片电阻做采样,PWM频率20kHz,开关瞬间采样波形上有个200mV的尖峰。ADC采到的电流值忽大忽小,FOC算法直接发散,电机抖得像筛糠。后来换成低电感采样电阻,尖峰降到20mV以下,问题解决。

3.3.3 运放电路设计

采样电阻上的压降只有几十毫伏,需要放大到ADC的输入范围(一般是0-3.3V)。运放电路的设计要点:

  • 增益: 根据采样电阻和ADC范围计算。比如采样电阻10mΩ,峰值电流10A,峰值压降100mV。ADC范围3.3V,增益设为33倍(3.3V/0.1V)。实际选30倍或40倍,留点裕量。
  • 偏置: 电流是双向的(电机正转/反转),所以需要把信号偏置到ADC范围的中点。比如3.3V的ADC,偏置到1.65V。这样正向电流对应1.65V-3.3V,反向电流对应0V-1.65V。
  • 滤波: 在运放输出端加RC低通滤波,截止频率设为PWM频率的1/10左右。比如PWM 20kHz,滤波截止频率2kHz。

我常用的运放电路是这样的:

// 差分放大 + 偏置电路
// 采样电阻 Rs = 10mΩ
// 运放增益 G = 40 (Rf=40k, Rin=1k)
// 偏置电压 Vref = 1.65V

// 输出电压 Vout = (I * Rs * G) + Vref
// 当 I = +10A 时,Vout = (10 * 0.01 * 40) + 1.65 = 5.65V (超出ADC范围)
// 当 I = +5A 时,Vout = (5 * 0.01 * 40) + 1.65 = 3.65V (接近满量程)
// 当 I = 0A 时,Vout = 1.65V
// 当 I = -5A 时,Vout = (-5 * 0.01 * 40) + 1.65 = -0.35V (超出ADC范围)

你看,增益40倍时,±5A的电流范围对应-0.35V到3.65V,超出了ADC的0-3.3V范围。所以实际增益要调低,或者换更小的采样电阻。我一般把满量程电流对应的输出电压控制在ADC范围的80%左右,留20%裕量防止过冲。

布线注意事项: 采样电阻到运放的走线要短、要粗、要差分走线。千万不要跟大电流回路共用走线。我见过一个板子,采样电阻的走线跟电机相线走了同一段铜皮,结果采样到的电流里混入了电机相线的压降,FOC算法怎么调都调不好——嗯,最后发现是PCB布局的锅。

3.4 小结

硬件平台搭建,说白了就是三个选择:

  • 主控芯片: 学习用STM32F103,产品用STM32G431,省钱用GD32F303
  • 驱动芯片: 省心用DRV8301,省钱用IR2101
  • 电流采样: 低侧采样+差分运放,采样电阻选低电感型,增益留裕量

我个人的习惯是:先拿STM32G431+DRV8301搭一套原型板,把算法调通。然后根据成本目标,再考虑要不要换成GD32+IR2101的方案。这样既保证了开发效率,又控制了量产成本。

下一章咱们聊PCB布局和电源设计。说实话,这部分比芯片选型还容易踩坑——你想想看,一个布局不合理,整个板子可能就成了一个「大天线」,噪声满天飞。到时候FOC算法再牛也救不了。