在永磁同步电机(PMSM)的无传感器磁场定向控制(FOC)系统中,相电流的精确采样是确保控制性能的关键环节。电流采样方案的选择直接影响着系统的成本、可靠性和动态响应特性。目前主流的方案包括单电阻、双电阻和三电阻采样法,每种方案都有其独特的优势和适用场景。
我曾在多个工业伺服项目中实践过这三种方案,发现它们最核心的区别在于硬件成本和算法复杂度的平衡。单电阻方案成本最低但算法最复杂,三电阻方案硬件成本最高但算法相对简单,而双电阻方案则处于中间位置。对于大多数中小功率应用(1kW以下),双电阻和三电阻方案是最常见的选择。
电流采样的本质是通过测量逆变器下桥臂分流电阻的压降来反推相电流。这里有个容易忽略的细节:实际采样的是续流期间的电流,而不是导通期间的电流。这是因为在PWM周期内,只有当所有上桥臂关闭时(即V000矢量作用期间),电流才会完全流经下桥臂的采样电阻。这个物理特性决定了所有采样方案都必须解决"非观测区"问题——当PWM占空比过高时,V000矢量的作用时间过短,导致无法完成有效采样。
双电阻采样通常选择在逆变器的任意两个下桥臂(通常是B相和C相)串联采样电阻。这种布置有个工程上的考量:A相通常作为参考相,放在中间位置便于布线。在我的一个机器人关节电机项目中,实测发现将采样电阻放在B、C相可使PCB布局更规整,减少高频干扰。
采样电路的核心是仪表放大器配置。这里有个坑我踩过:普通运放电路在高压侧采样时会产生共模误差。后来改用专门的三运放仪表放大器(如AD620),配合0.1%精度的采样电阻,才将误差控制在1%以内。关键参数选择建议:
双电阻方案最大的挑战来自非观测区,这在实际调试中表现为电机高速运行时电流波形畸变。通过示波器抓取PWM波形可以发现,当最大占空比超过95%时(具体阈值与ADC采样时间有关),V000矢量的作用时间可能不足1μs,根本无法完成完整采样。
工程上通常采用两种应对方法:
电压限幅法:强制限制最大占空比(如95%),这是最直接的做法。但会牺牲约5%的电压利用率,导致电机最大转速下降。在某个AGV驱动项目中,这直接导致车辆爬坡能力降低10%。
动态重构法:当检测到即将进入非观测区时,改用上一周期的电流值进行插值补偿。这种方法需要精心设计滤波算法,否则会引入相位延迟。我开发过一个基于卡尔曼滤波的预测算法,在500Hz带宽下能将重构误差控制在3%以内。
双电阻下的电流重构看似简单(Ia = -Ib - Ic),但有几点需要注意:
以下是典型的重构代码框架(基于STM32):
c复制void Current_Reconstruction(void) {
// 读取ADC原始值
raw_B = ADC_GetValue(ADC_CH_B);
raw_C = ADC_GetValue(ADC_CH_C);
// 转换为实际电流值(A)
I_b = (raw_B - offset_B) * current_scale;
I_c = (raw_C - offset_C) * current_scale;
// 克希荷夫定律重构
I_a = -I_b - I_c;
// 低通滤波
I_a_filtered = 0.9*I_a_filtered + 0.1*I_a;
I_b_filtered = 0.9*I_b_filtered + 0.1*I_b;
I_c_filtered = 0.9*I_c_filtered + 0.1*I_c;
}
三电阻方案虽然增加了硬件成本(多1个采样电阻和1路信号链),但带来了显著的性能优势。在最近的一个精密数控机床主轴驱动项目中,改用三电阻方案后,电流环带宽从500Hz提升到了800Hz。
关键设计注意事项:
实测数据显示,三电阻方案在以下方面表现更优:
| 指标 | 双电阻方案 | 三电阻方案 |
|---|---|---|
| 电压利用率 | 95% | 100% |
| 最小采样时间 | 1.2μs | 0.8μs |
| THD(@1kHz) | 5.2% | 3.8% |
三电阻方案最精妙之处在于可以动态调整采样点。当检测到某相即将进入非观测区时,系统会自动将采样窗口切换到其他两相的正常区域。这需要精确的PWM时序控制,以下是实现步骤:

图3-1 通过PWM移相创造采样窗口的示意图
在STM32中,这可以通过高级定时器的"刹车"功能实现。具体配置要点:
三电阻方案的重构算法更灵活,这里分享几个实战技巧:
c复制typedef enum {
NORMAL_MODE, // 常规V000采样
HIGH_DUTY_MODE, // 高压调制区模式
TRANSITION_MODE // 扇区过渡模式
} SamplingMode_t;
void SelectSamplingMode(void) {
if(duty_a > DUTY_THRESHOLD && duty_b > DUTY_THRESHOLD) {
current_mode = TRANSITION_MODE;
PWM_PhaseShift();
}
else if(duty_a > DUTY_THRESHOLD) {
current_mode = HIGH_DUTY_MODE;
ADCTiming_Adjust();
}
else {
current_mode = NORMAL_MODE;
}
}
选择双电阻还是三电阻,需要综合考虑多方面因素。根据我的项目经验,可以遵循以下决策流程:
明确应用需求:
评估技术指标:
| 考量维度 | 双电阻优势 | 三电阻优势 |
|---|---|---|
| 硬件成本 | 低(少1路信号链) | 高 |
| 电压利用率 | 受限(约95%) | 100% |
| 算法复杂度 | 中等 | 较低 |
| 可靠性 | 单路故障导致系统失效 | 容错性强 |
| 动态响应 | 带宽通常<500Hz | 可达1kHz以上 |
典型应用场景:
在实际调试中,有几个常见问题需要特别注意:
采样噪声问题:
相位延迟问题:
温漂问题:
从近年来的技术演进看,电流采样方案呈现两个发展方向:
集成化解决方案:
智能重构算法:
在最近参与的一个协作机器人项目中,我们尝试将三电阻采样与神经网络补偿结合,成功将非观测区的电流重构误差从8%降低到2%。这种混合方案可能是未来的发展方向。