3. 电流采样与调理电路设计:单电阻/双电阻/三电阻采样原理、运放选型与偏置电路、采样时序与ADC触发配置

电流采样,说白了就是FOC控制的眼睛。眼睛不好使,算法再牛也白搭。我这些年调试过的电机驱动板,十有八九的问题都出在采样环节——要么噪声太大,要么相位不对,要么ADC触发时机没卡准。

今天咱们就把这块彻底讲透。从采样拓扑到运放选型,再到时序配置,一条龙捋清楚。

3.1 三种采样拓扑:单电阻、双电阻、三电阻

先说说这三种方案的区别。你想想看,它们本质上是在「成本」和「精度」之间做取舍。

3.1.1 三电阻采样——最正统的方案

三电阻采样,就是在逆变器下桥臂的三个MOS管源极各串一个采样电阻。每个相电流独立测量,互不干扰。

优点很明显:

  • 每相电流独立采样,精度最高
  • 可以在任意时刻触发ADC,时序最灵活
  • 重构电流波形最完整,谐波分析也方便

缺点也实在:

  • 需要三个运放通道,BOM成本高
  • PCB面积大,走线复杂
  • 三个电阻的温漂一致性要匹配
我的经验: 做伺服驱动器或者高端机器人关节,我建议直接上三电阻。别省那几块钱,后期调试省下的时间远不止这个数。

3.1.2 双电阻采样——最常用的折中方案

双电阻只采样两相电流,第三相通过基尔霍夫电流定律推算(Ia + Ib + Ic = 0)。

我在项目中遇到过一个问题:当某一相电流接近零时,推算出来的第三相误差会放大。尤其是低速轻载工况,这个误差会导致转矩脉动明显增加。

适用场景:

  • 家用电器、风机、水泵等对成本敏感的场合
  • 中高速运行,低速性能要求不高的应用
  • PCB空间有限,只能放下两路运放

3.1.3 单电阻采样——最省钱但也最折腾

单电阻只在直流母线上放一个采样电阻。通过在不同PWM状态下采样,重构出三相电流。

嗯,这里要注意:单电阻采样有个「盲区」问题。当电压矢量落在扇区边界附近时,有效采样窗口会变得极窄,甚至消失。我早期做电动工具项目时就被这个坑过——电机转起来嗡嗡响,电流波形跟锯齿似的。

避坑指南: 单电阻采样必须做「移相处理」或「脉冲注入」。我曾经在扇区边界处补了一个最小脉宽,虽然会引入一点谐波,但至少保证了采样可靠性。如果你做的是低成本方案,这个技巧值得记下来。

3.2 运放选型与偏置电路设计

运放选型,我个人的习惯是先看三个参数:失调电压、带宽、共模抑制比

3.2.1 关键参数解读

参数 推荐值 为什么重要
失调电压 < 1mV 失调电压会直接叠加到电流信号上,导致零漂。我见过有人用LM358做采样,结果零漂就有20mV,换算成电流误差超过0.5A
增益带宽积 > 5MHz PWM开关频率通常是10-20kHz,运放带宽不够的话,采样信号会失真
共模抑制比 > 80dB 电机驱动环境噪声大,高CMRR能抑制共模干扰
压摆率 > 5V/μs 采样信号上升沿要快,否则ADC采样时刻不准

我常用的几款运放:TI的OPA4376(四通道,性价比高)、ADI的AD8418(自带增益,适合高边采样)、ST的TSV912(低功耗,电池供电项目首选)。

3.2.2 偏置电路设计

电流信号是双极性的(正负都有),但STM32的ADC只能采0-3.3V。所以需要把信号抬升到1.65V中心点。

偏置电路通常有两种做法:

  • 电阻分压+跟随器: 简单可靠,但分压电阻要选高精度(0.1%),否则偏置电压不准
  • 参考电压芯片: 比如TL431或REF3033,精度更高,但多一个器件

我个人习惯用REF3033做偏置。虽然贵几毛钱,但温漂只有15ppm/℃,比电阻分压稳定得多。有一次客户反映产品低温下电流不准,查了半天就是分压电阻温漂惹的祸。

偏置电压计算公式:
Vout = I_sense × R_shunt × Gain + V_ref
其中V_ref通常设为1.65V,确保零电流时ADC读数为2048(12位ADC中点)。

3.3 采样时序与ADC触发配置

时序问题,是FOC调试中最容易出幺蛾子的环节。你想想看,如果ADC在MOS管开关瞬间采样,那采到的全是尖峰噪声。

3.3.1 采样窗口在哪里?

正确的采样时刻,是在PWM的中心对齐点。为什么?

  • 中心对齐时,上下桥臂都处于导通状态(死区时间之外)
  • 电流续流路径稳定,没有开关噪声
  • 采样到的电流值就是相电流的平均值

我刚开始做FOC时,直接在PWM周期起点触发ADC,结果电流波形全是毛刺。后来用示波器一看,采样点正好落在开关尖峰上。调整到中心对齐后,波形瞬间干净了。

3.3.2 STM32的ADC触发配置

以STM32G4为例,配置步骤如下:

// 1. 配置定时器TIM1为中央对齐模式
TIM1->CR1 |= TIM_CR1_CMS_1;  // 中央对齐模式2

// 2. 配置触发输出为更新事件(中心对齐点)
TIM1->CR2 |= TIM_CR2_MMS_2;  // 选择更新事件作为TRGO

// 3. 配置ADC为定时器触发
ADC1->CFGR2 |= ADC_CFGR2_JEXTEN_0;  // 使能外部触发
ADC1->CFGR2 |= 0x6;  // 选择TIM1_TRGO作为触发源

// 4. 配置采样时间
ADC1->SMPR1 |= ADC_SMPR1_SMP0_2;  // 采样周期设为12.5个ADC时钟周期
小技巧: 采样时间不要设得太短。我一般设12.5-20个ADC时钟周期。太短的话,采样电容充不满,测量值偏小。太长的话,会占用PWM周期时间,影响控制频率。

3.3.3 双电阻采样的特殊时序

双电阻采样需要同时触发两个ADC通道。STM32的ADC支持注入组和规则组,我建议用双重ADC同步模式

  • ADC1采A相电流
  • ADC2采B相电流
  • 两个ADC同时触发,同时转换

这样做的好处是:A相和B相的采样时刻完全一致,避免了相位差。我见过有人用单ADC轮流采样,结果两相电流之间有几十微秒的延迟,导致Clark变换算出来的电流矢量有角度误差。

3.3.4 单电阻采样的时序陷阱

单电阻采样需要在两个不同的PWM状态采样。典型做法是:

  1. 在PWM周期的前半段,采样一次(对应某两相电流)
  2. 在PWM周期的后半段,再采样一次(对应另外两相电流)
  3. 通过两次采样值重构出三相电流

这里有个坑:两次采样的时间差不能太大,否则电流已经变化了,重构出来的值不准。我一般要求两次采样间隔不超过PWM周期的10%。

重要提醒: 单电阻采样在过调制区(调制比>0.9)几乎无法正常工作。因为此时有效采样窗口太窄,ADC来不及完成转换。如果你需要高调制比运行,建议至少用双电阻。

3.4 实战建议总结

说了这么多,最后给几个实在的建议:

  • 新手入门: 先用双电阻方案,调试难度适中,性能也够用
  • 产品量产: 根据成本目标选型,但采样电阻和运放不要省,这是「一分钱一分货」的地方
  • 高性能需求: 三电阻+独立ADC通道,配合过采样技术,可以把电流分辨率做到mA级别
  • PCB布局: 采样电阻到运放的走线要短,差分走线,远离功率回路。我见过太多因为走线太长引入噪声的案例了

电流采样这块,说白了就是「信号链」的设计。从电阻到运放再到ADC,每个环节都会影响最终的控制精度。多花点心思在这上面,后面的控制算法调试会顺利很多。

下一章咱们聊聊电流环PI参数整定,到时候会用到今天讲的采样数据。记得把采样时序调稳了再往下走。