3、单电阻采样原理:单电阻采样在FOC中的应用与采样窗口设计
单电阻采样,说白了就是只用一个电流传感器,去把电机三相电流都“算”出来。很多刚入行的朋友一听就觉得:这怎么可能?一个电阻怎么测三路电流?
我刚开始做FOC驱动时也有这个疑问。后来才明白,单电阻采样的核心秘密,就藏在母线电流的瞬时重构里。你想想看,电机三相电流在任何时刻都满足基尔霍夫电流定律:Ia + Ib + Ic = 0。只要我们能抓住两个关键时刻的母线电流,第三相自然就出来了。
3.1 单电阻采样的基本原理
单电阻采样通常把采样电阻放在逆变器的直流母线上,位置在下桥臂MOSFET的源极和地之间。当某一相的下桥臂导通时,该相的相电流就会流过这个电阻。我们只需要在PWM周期的特定时刻采样,就能得到对应相的电流值。
核心思想:利用PWM开关状态,在母线电阻上依次“看到”两相电流,再通过Ia+Ib+Ic=0计算出第三相。
具体来说,单电阻采样依赖的是空间矢量调制(SVPWM)的开关序列。在一个PWM周期内,会有两个非零电压矢量和一个零矢量。两个非零矢量分别对应两相下桥臂导通,这时候我们就能采样到这两相的电流。
我记得第一次在示波器上看到这个波形时,心里还挺震撼的——原来电流信号是“躲”在PWM开关噪声里的。你得找准那个采样窗口,不然读出来的全是毛刺。
3.2 采样窗口的时序设计
采样窗口设计是单电阻采样最关键的环节。窗口开得太早,电流还没建立稳定;开得太晚,下一个开关状态又来了。我见过不少工程师在这上面栽跟头。
一个典型的PWM周期里,采样窗口需要满足以下条件:
- 最小建立时间(t_setup):下桥臂导通后,电流需要时间从振荡中稳定下来,通常需要1-2μs
- 最小采样时间(t_sample):ADC采样保持时间,取决于ADC转换速率,一般0.5-1μs
- 安全裕量(t_margin):防止开关噪声干扰,建议留0.5μs以上
| 参数 | 典型值 | 说明 |
|---|---|---|
| t_setup | 1.0 - 2.0 μs | 电流建立稳定时间,与母线电压和电机电感有关 |
| t_sample | 0.5 - 1.0 μs | ADC采样保持时间,12位ADC通常需要 |
| t_margin | 0.5 - 1.0 μs | 安全裕量,防止开关噪声干扰 |
| 总窗口 | 2.0 - 4.0 μs | 三者之和,决定了PWM最小占空比限制 |
注意:采样窗口的总时间直接限制了PWM的最小占空比。如果窗口需要3μs,PWM周期是50μs(20kHz),那么占空比不能低于6%。低于这个值,窗口就放不下了。
3.3 单电阻采样的三大痛点
单电阻采样虽然省成本,但坑也不少。我总结了一下,主要有三个老大难问题:
3.3.1 不可采样区域
当电压矢量落在扇区边界附近时,两个非零矢量的作用时间会变得很短。短到连采样窗口都放不下。这时候你就没法同时采到两相电流了。
我曾经在一个风机项目上遇到过这个问题。电机在低速轻载时,电流很小,矢量作用时间也短,采样窗口根本不够用。结果电流重构出来的波形全是锯齿,FOC根本跑不稳。
解决办法通常有两种:
- 移相法:在不可采样区域,人为调整PWM波形,把采样窗口“挤”出来
- 预测法:利用上一周期的电流值,结合电机模型预测当前电流
3.3.2 电流重构噪声
单电阻采样的电流信号是从母线电阻上取的,这个信号非常微弱,而且叠加了PWM开关噪声。如果PCB布局不好,采样回路里还会串入功率级的di/dt噪声。
我的经验是:采样电阻一定要用四端开尔文连接,把采样回路和功率回路分开。另外,在ADC输入端加一个RC低通滤波器,截止频率设在1-2MHz左右,能有效滤掉高频噪声。
3.3.3 零点漂移与偏置
采样电阻本身有温漂,运放也有偏置电压。这些误差在低速大电流时会特别明显。我建议在每次电机启动前,做一次零电流校准——让逆变器输出零矢量,然后读ADC值作为偏置。
小技巧:零电流校准最好做多次取平均,比如采64次。这样能有效抑制随机噪声对偏置值的影响。
3.4 单电阻采样的FOC应用流程
下面这张图展示了单电阻采样在FOC中的完整数据流。从PWM触发采样,到电流重构,再到Clark/Park变换,最后进入电流环。
3.5 采样窗口的软件实现
在实际代码中,采样窗口的配置通常和PWM定时器紧密绑定。以STM32为例,我一般用高级定时器的触发事件来启动ADC采样。
// 伪代码示例:单电阻采样窗口配置
void SingleResistorSampling_Init(void) {
// 1. 配置PWM定时器,中心对齐模式
TIM1->CR1 |= TIM_CR1_CMS_1; // 中心对齐模式2
// 2. 配置ADC触发源为TIM1_TRGO
TIM1->CR2 |= TIM_CR2_MMS_1; // 更新事件作为触发输出
// 3. 配置ADC采样时间
ADC1->SMPR2 |= ADC_SMPR2_SMP0_0 | ADC_SMPR2_SMP0_1; // 采样周期 = 28个ADC时钟
// 4. 配置采样窗口偏移(在PWM周期的特定位置触发)
// 假设PWM周期为1000个定时器时钟
// 第一次采样在计数值=200时触发(下桥臂导通后)
// 第二次采样在计数值=800时触发(另一个下桥臂导通后)
TIM1->CCR1 = 200; // 第一次采样触发点
TIM1->CCR2 = 800; // 第二次采样触发点
}
经验之谈:采样触发点的位置不是固定的。我一般会在电机启动后,先跑一段开环,观察示波器上电流建立的时间,然后动态调整CCR的值。不同电机、不同负载下,最优采样点会不一样。
3.6 单电阻采样的局限性
单电阻采样虽然便宜,但也不是万能的。我把它和双电阻、三电阻采样做了个对比:
| 对比项 | 单电阻 | 双电阻 | 三电阻 |
|---|---|---|---|
| 成本 | 最低 | 中等 | 最高 |
| 采样精度 | 中等(受重构误差影响) | 较高 | 最高 |
| 低速性能 | 较差(不可采样区域大) | 较好 | 最好 |
| PCB布局难度 | 低 | 中等 | 高 |
| 适用场景 | 低成本、中高速应用 | 通用FOC驱动 | 高性能伺服、机器人 |
我个人习惯是:如果项目对成本敏感,而且电机主要运行在中高速区间(比如风机、水泵),单电阻采样完全够用。但如果是做伺服驱动器,要求零速大扭矩,那我建议还是上双电阻或三电阻,省得后面调试到崩溃。
避坑指南:我曾经在一个电动工具项目上硬用单电阻采样做低速大扭矩控制,结果电流重构出来的波形全是毛刺,FOC根本锁不住转子位置。后来换了双电阻,问题立刻解决。所以,选型时一定要评估好你的工况范围。
3.7 小结
单电阻采样是FOC电流采样方案里最“抠门”的一种,但也是最能考验工程师功底的一种。它要求你吃透PWM时序、ADC采样窗口、电流重构算法这三者的配合。只要把采样窗口设计好了,单电阻采样完全可以在中高速应用中交出满意的答卷。
嗯,这一章的内容就到这里。采样窗口的时序参数、不可采样区域的应对策略、以及代码实现中的细节,都是实际项目中绕不开的坎。希望你能把这些原理吃透,后面做项目时少走弯路。