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时钟周期
3.3.3 双电阻采样的特殊时序
双电阻采样需要同时触发两个ADC通道。STM32的ADC支持注入组和规则组,我建议用双重ADC同步模式:
- ADC1采A相电流
- ADC2采B相电流
- 两个ADC同时触发,同时转换
这样做的好处是:A相和B相的采样时刻完全一致,避免了相位差。我见过有人用单ADC轮流采样,结果两相电流之间有几十微秒的延迟,导致Clark变换算出来的电流矢量有角度误差。
3.3.4 单电阻采样的时序陷阱
单电阻采样需要在两个不同的PWM状态采样。典型做法是:
- 在PWM周期的前半段,采样一次(对应某两相电流)
- 在PWM周期的后半段,再采样一次(对应另外两相电流)
- 通过两次采样值重构出三相电流
这里有个坑:两次采样的时间差不能太大,否则电流已经变化了,重构出来的值不准。我一般要求两次采样间隔不超过PWM周期的10%。
3.4 实战建议总结
说了这么多,最后给几个实在的建议:
- 新手入门: 先用双电阻方案,调试难度适中,性能也够用
- 产品量产: 根据成本目标选型,但采样电阻和运放不要省,这是「一分钱一分货」的地方
- 高性能需求: 三电阻+独立ADC通道,配合过采样技术,可以把电流分辨率做到mA级别
- PCB布局: 采样电阻到运放的走线要短,差分走线,远离功率回路。我见过太多因为走线太长引入噪声的案例了
电流采样这块,说白了就是「信号链」的设计。从电阻到运放再到ADC,每个环节都会影响最终的控制精度。多花点心思在这上面,后面的控制算法调试会顺利很多。
下一章咱们聊聊电流环PI参数整定,到时候会用到今天讲的采样数据。记得把采样时序调稳了再往下走。