电流环硬件基础:电流采样方案对比与PWM同步
做FOC,第一关就是电流采样。你想想看,电流环要是连电流都读不准,后面速度环、位置环全是白搭。我这些年调过的板子,少说也有几十种了,踩坑最多的就是采样这块。今天咱们就把单电阻、双电阻、三电阻这三种方案掰开揉碎了讲清楚。
一、三种电流采样方案的本质区别
说白了,这三种方案的区别就一句话:用几个ADC通道、在什么时刻、怎么重构出三相电流。我习惯先看硬件成本,再看软件复杂度,最后看性能上限。
| 方案 | 采样电阻数量 | ADC通道数 | 重构方式 | 典型成本 |
|---|---|---|---|---|
| 单电阻 | 1个(下桥臂公共端) | 1路 | 两次采样 + 基尔霍夫 | 最低 |
| 双电阻 | 2个(两相下桥臂) | 2路 | 直接读两相,第三相计算 | 中等 |
| 三电阻 | 3个(三相下桥臂) | 3路 | 直接读三相 | 最高 |
核心原则:无论哪种方案,采样时刻必须避开MOS管开关动作引起的振铃区间。这个坑我栽过——第一次调单电阻时,采样点没对准,电流波形全是毛刺,折腾了两天才发现是采样窗口没避开死区后的振荡。
二、单电阻采样:最省钱,也最折腾
单电阻方案只在直流母线下桥臂串联一个采样电阻。它的逻辑是:通过两次不同PWM状态下的采样,拼出两相电流,再用基尔霍夫定律算出第三相。
具体怎么做?我画个时序图你就明白了。
单电阻最大的问题是不可观测区域。当占空比接近0%或100%时,两次采样之间的时间窗口太短,ADC根本来不及完成转换。我遇到过最极端的情况——电机低速轻载时,占空比只有5%,采样窗口只有不到1μs,ADC刚启动就被打断了。
我的经验:单电阻方案适合成本敏感、对低速性能要求不高的产品。如果你要做伺服级别的低速平稳控制,建议直接上双电阻或三电阻。别在单电阻上死磕,时间成本比那几毛钱的物料成本贵多了。
三、双电阻采样:性价比之选
双电阻在两相下桥臂各放一个采样电阻。硬件上多了1个电阻和1路ADC,但软件复杂度大幅降低。直接读两相电流,第三相用Ia + Ib + Ic = 0算出来。
采样时序也简单很多:
- 在PWM周期中间点触发ADC——此时三相下桥臂全部导通,电流流经采样电阻
- 同时采样两路ADC——保证两相电流是同一时刻的值
- 计算第三相——Ic = -(Ia + Ib)
这里有个细节:ADC触发时刻必须对齐到PWM的载波顶点或谷底。我习惯用PWM定时器的上溢中断来触发ADC,这样采样点天然就在PWM周期的正中间,电流纹波最小。
注意:双电阻方案在过调制区域(占空比>95%或<5%)仍然存在采样窗口不足的问题。虽然比单电阻好很多,但如果你要做满功率输出,还是得考虑三电阻。
四、三电阻采样:性能天花板
三电阻方案在三相下桥臂各放一个采样电阻,三相电流直接读,不需要任何重构计算。这是性能最好的方案,也是成本最高的方案。
它的优势很明显:
- 无不可观测区域——任何占空比下都能采样
- 采样精度最高——没有计算引入的误差
- 故障诊断方便——三相独立,哪相出问题一目了然
但要注意,三电阻方案对ADC的要求也最高:需要3路ADC同时采样。如果你的MCU只有1个ADC模块,那就得用3个采样保持器同时触发,然后依次转换。我见过有人图省事用3个独立的ADC轮流采样,结果三相电流之间差了几个微秒,低速时相位误差大到没法用。
五、采样时序与PWM同步的硬核细节
不管用哪种方案,采样时序和PWM同步都是绕不开的坎。我总结了几条铁律:
| 铁律 | 说明 | 违反后果 |
|---|---|---|
| 采样点必须避开死区 | 死区期间MOS管全关,采样电阻上无电流 | 读到0电流,电流环失控 |
| 采样点必须避开振铃 | 开关动作后1-2μs内电流有高频振荡 | 采样值抖动,电流环噪声大 |
| 多相采样必须同时 | 三相电流是同一时刻的值 | Clark/Park变换引入相位误差 |
| 采样频率必须等于PWM频率 | 每个PWM周期采样一次 | 电流环带宽受限 |
具体到代码实现,我一般这样配置:
// 以STM32G4为例,配置PWM触发ADC
// 1. 配置PWM定时器TIM1,中心对齐模式
TIM1->CR1 |= TIM_CR1_CMS_1; // 中心对齐模式2
// 2. 配置ADC触发源为TIM1_TRGO
ADC1->CFGR2 |= ADC_CFGR2_TRGEN; // 使能外部触发
ADC1->CFGR2 |= 0x0A; // 选择TIM1_TRGO
// 3. 配置TIM1_TRGO为更新事件(上溢/下溢)
TIM1->CR2 |= TIM_CR2_MMS_1; // 更新事件作为TRGO
// 4. 配置采样时间,确保避开死区
ADC1->SMPR1 |= 0x07; // 采样周期设为640.5个ADC时钟周期
// 这样采样窗口足够宽,能覆盖到电流稳定区域
一个小技巧:如果你用的MCU支持ADC硬件过采样,建议开启。4倍过采样可以把有效分辨率提高2位,对单电阻方案特别有用。我曾在单电阻方案上开16倍过采样,硬是把12位ADC用出了14位的效果。
六、方案选型决策树
最后,我习惯用一张图来帮自己做决策:
我个人建议:做产品原型阶段直接用三电阻,把性能调到最优,再根据成本目标降级到双电阻或单电阻。这样你能清楚知道性能上限在哪,降级后也知道牺牲了什么。