在工业自动化领域,永磁同步电机(PMSM)的控制一直是个技术难点。传统方案需要安装位置传感器,不仅增加成本,还降低了系统可靠性。我在某工业伺服项目中发现,约35%的现场故障都源于编码器损坏或信号干扰。这促使我们团队转向无传感控制技术的研究。
基于TI C28035的单电阻采样方案,我们成功实现了:
这个方案的核心创新点在于将滑模观测器(SMO)与单电阻采样技术结合,通过电压重构算法补偿采样失真。下面我将从硬件设计到算法实现,完整解析这套工业级解决方案。
选择TMS320F28035主要基于以下考量:
重要提示:实际项目中发现,必须配置ADC采样窗口在PWM周期中点附近,否则电流采样会受开关噪声影响。我们通常设置在PWM_ON时间的75%处。
传统三电阻方案需要3个隔离运放,而单电阻方案仅需1个。关键设计参数:
text复制采样电阻值:50mΩ/5W(阻值过大会导致功率损耗,过小则信号幅值不足)
运放增益:20倍(TI INA240专用电流检测运放)
RC滤波:1kΩ+100nF(截止频率1.6kHz,高于PWM频率但低于奈奎斯特频率)
实测波形对比显示,单电阻方案在10kHz PWM下仍能保持信噪比>60dB。但需注意:
SMO的本质是用不连续控制力迫使系统状态沿滑模面运动。我们采用的改进型SMO方程:
code复制ẋ = Ax + Bu + L*sgn(s)
s = Cx - y
其中关键参数整定原则:
实际调试中发现,在低速区域(<5%额定转速)需要动态调整L值:
c复制if(rpm < 50) {
L = L_base * (1 + 50/rpm);
} else {
L = L_base;
}
由于只能采样一相电流,必须采用分时重构技术。我们的PWM和ADC触发时序如下:
| PWM状态 | 采样相 | 有效时间段 |
|---|---|---|
| PWM_ON | U相 | T0+0.7*Ton |
| PWM_OFF | V相 | T0+0.3*Toff |
| 下一个PWM_ON | W相 | T1+0.7*Ton |
对应的代码实现:
c复制void ADC_ISR() {
static uint8_t phase = 0;
switch(phase) {
case 0: Iu = ADC_read(); phase++; break;
case 1: Iv = ADC_read(); phase++; break;
case 2: Iw = ADC_read(); phase=0; break;
}
// 克拉克变换
Iα = (2*Iu - Iv - Iw)/3;
Iβ = (Iv - Iw)/sqrt(3);
}
由于单电阻采样导致母线电压利用率下降约15%,我们采用基于状态观测器的补偿方法:
code复制V_err = Vdc*(dead_time/2 + Td_on - Td_off)/Ts
c复制if(I > 0) Vce = a0 + a1*I;
else Vce = b0 + b1*abs(I);
code复制D_comp = D_cmd + (Vce + Vd)/Vdc
实测表明,该方案可将电压重构误差控制在±2%以内。
锁相环的阻尼比ξ和自然频率ωn决定动态性能:
code复制ξ = 0.707 (最佳阻尼)
ωn = 2π*f_bandwidth/3 (f_bandwidth取速度环带宽的1/3)
具体实现时采用二阶广义积分器(SOGI)结构:
c复制void SOGI_Update(float input) {
static float x1=0, x2=0;
x1 = x1 + K*(input - x1 - ξ*x2)*Ts;
x2 = x2 + ωn*x1*Ts;
output = x1;
}
无传感方案的最大挑战是零速启动。我们采用三段式启动:
关键代码逻辑:
c复制if(startup_state == OPEN_LOOP) {
if(rpm > 50 && smo_snr > 20) {
startup_state = CLOSED_LOOP;
Enable_SMO();
}
}
在某纺织机械项目中的性能对比:
| 指标 | 编码器方案 | 本方案 |
|---|---|---|
| 速度波动率 | ±0.1% | ±0.25% |
| 启动成功率 | 99.8% | 98.5% |
| 成本 | $35 | $12 |
| 安装工时 | 45min | 20min |
典型问题处理经验:
这套代码经过3年现场验证,已批量应用于200+台设备。最关键的收获是:无传感方案不是简单地去掉编码器,而是需要从电磁设计、控制算法到生产工艺的全链条优化。比如我们发现转子磁钢的充磁一致性会直接影响SMO的观测精度,后来与电机厂合作将充磁公差控制在±1°以内。