4、电流采样与调理:单电阻采样、双电阻采样、三电阻采样、采样时序与重构、运放偏置与滤波

电流采样,是电机控制的「眼睛」。眼睛看不清,算法再牛也白搭。

做EPS这些年,我见过太多因为采样问题导致的抖动、噪音甚至炸管。说白了,电流采样搞不定,你的FOC就是空中楼阁。今天咱们就把单电阻、双电阻、三电阻这些方案掰开揉碎了聊。

4.1 三种采样方案,怎么选?

先看一张对比表,心里有个底:

方案 硬件成本 采样精度 重构难度 适用场景
单电阻采样 最低 中等 低成本、低转速应用
双电阻采样 中等 较高 EPS主流方案
三电阻采样 最高 最高 高性能、高可靠性

我个人习惯,EPS项目首选双电阻。为什么?性价比最优。单电阻虽然便宜,但采样窗口窄,重构算法写起来让人头秃。三电阻当然好,但多一个运放、多一路ADC,成本上去了,老板会找你谈话的。

4.2 单电阻采样:省钱但费脑

单电阻采样,只在直流母线上放一个采样电阻。你想想看,一个电阻搞定三相电流,听着就玄乎。

原理是利用PWM开关状态,在不同时刻采集母线电流,再反推出三相电流。举个例子,当A相上管和B相下管导通时,母线电流等于A相电流。换个开关状态,又能采到B相或C相。

关键点:一个PWM周期内,必须采集至少两次母线电流,才能重构出两相电流(第三相由基尔霍夫定律算出)。

但坑来了。当占空比接近0%或100%时,采样窗口会变得极窄。窄到ADC都来不及转换。我在项目中遇到过,电机低速轻载时,电流重构直接失败,电机一顿一顿的。

避坑指南:我曾经在单电阻方案上栽过跟头。解决方法是加入「移相PWM」或「注入零序分量」,人为拉宽采样窗口。但代价是电流纹波会变大,需要权衡。

4.3 双电阻采样:EPS的黄金搭档

双电阻采样,在下桥臂的任意两相各放一个电阻。比如A相和B相。这样,任何时候都能直接读出两相电流,第三相算出来就行。

为什么说它是EPS的黄金搭档?因为EPS电机通常工作在中等转速,PWM占空比不会极端到0%或100%。双电阻的采样窗口足够宽,ADC有充足的时间完成转换。

采样时序怎么安排?看这里:

// 伪代码示例:双电阻采样时序
// 假设PWM周期为50us,死区时间为2us
// 在PWM计数器的中间点触发ADC

void PWM_ISR() {
    // 等待死区结束
    delay(2us);
    
    // 采集A相和B相电流
    adc_start(ADC_CH_A);
    adc_start(ADC_CH_B);
    
    // 等待转换完成
    while(!adc_done());
    
    i_a = adc_read(ADC_CH_A);
    i_b = adc_read(ADC_CH_B);
    i_c = -i_a - i_b;  // 基尔霍夫定律
}

嗯,这里要注意。采样点必须避开PWM开关切换的瞬间,否则会采到尖峰噪声。我一般把采样点放在PWM计数器的中间点,也就是开关状态最稳定的时刻。

4.4 三电阻采样:简单粗暴,但贵

三电阻采样,三相下桥臂各放一个电阻。三相电流直接读,不需要重构,不需要计算。精度最高,延迟最小。

但代价也明显:三个采样电阻、三个运放、三个ADC通道。PCB面积大,成本高。一般用在高端EPS或者功能安全要求极高的场合。

我的建议:如果你的项目对成本不敏感,或者需要满足ASIL-D功能安全等级,直接上三电阻。省心,少掉头发。

4.5 采样时序与重构:细节决定成败

不管是单电阻还是双电阻,采样时序都是核心。时序错了,电流就是错的。

几个关键原则:

  • 避开死区:死区时间内,上下管都关断,电流路径不确定。采样必须等死区结束后再进行。
  • 避开开关尖峰:MOS管开关瞬间会有电压尖峰,耦合到采样电阻上就是噪声。我习惯在开关动作后等3-5us再采样。
  • 同步PWM中心:对于双电阻,采样点最好对齐PWM计数器的中心点。此时三相电流最稳定。

对于单电阻的重构,还有个「不可观测区」的问题。当电压矢量落在某些扇区边界时,采样窗口会消失。解决办法是「脉冲移位」或「电流预测」。说白了,就是强行改变PWM波形,让采样窗口露出来。

警告:脉冲移位会引入额外的电流纹波和转矩脉动。EPS对NVH(噪声、振动、平顺性)要求很高,用单电阻方案时一定要做充分的台架测试。

4.6 运放偏置与滤波:把信号洗干净

采样电阻上的信号是毫伏级的,必须经过运放放大才能送给ADC。这里有两个关键点:偏置和滤波。

运放偏置:电机电流是交流的,有正有负。但ADC只能采集正电压(比如0-3.3V)。所以需要给运放加一个直流偏置,把交流信号抬升到ADC的中间点。

// 偏置电压计算示例
// ADC参考电压:3.3V
// 采样电阻:0.001Ω (1mΩ)
// 最大电流:±100A
// 运放增益:50倍

// 最大差分电压:100A * 0.001Ω = 0.1V
// 放大后电压:0.1V * 50 = 5V (超出ADC范围!)

// 实际设计:增益改为20倍
// 放大后电压:0.1V * 20 = 2V
// 偏置电压:1.65V (ADC中点)
// ADC输入范围:1.65V ± 1V = 0.65V ~ 2.65V

滤波:采样信号上有很多高频噪声,来自PWM开关、电机换向、甚至电源纹波。我一般在运放输出端加一个RC低通滤波器,截止频率设置在开关频率的1/10左右。

举个例子,PWM频率20kHz,RC滤波器的截止频率设在2kHz。R取1kΩ,C取0.1μF,算下来截止频率约1.6kHz,够用。

小技巧:运放的选型也很关键。我习惯用零漂移运放,比如OPA2188。温漂小,长时间运行也不会偏。EPS方向盘打到底堵转时,电流采样不能飘,否则力矩控制就废了。

好了,电流采样这块就聊到这儿。说白了,采样方案的选择就是一场权衡游戏:成本、精度、复杂度、可靠性。EPS作为安全件,我建议至少用双电阻。别为了省几毛钱,把整个项目的可靠性搭进去。