1. 永磁电机无速度传感器控制概述
永磁同步电机(PMSM)的无速度传感器控制一直是电机驱动领域的热点和难点。传统基于反电动势的观测器在低速和零速区域性能急剧下降,而高频信号注入法通过利用电机自身的凸极性特征,成功突破了这一限制。这种方法的核心思想类似于声呐系统——通过主动注入探测信号并分析其反馈来获取位置信息。
在实际工程应用中,高频注入法需要解决三个关键问题:信号注入策略设计、位置信息提取算法、以及与双闭环控制的融合。其中旋转电压注入因其抗干扰能力强、实现简单等特点,成为最常用的方案。注入频率通常选择在2-5kHz范围内,这个频段既能避开控制系统的带宽,又不会引起可闻噪声。
重要提示:高频注入电压幅值一般控制在额定电压的5%-10%,过高会导致额外损耗和振动,过低则信噪比不足。这个参数需要根据具体电机特性进行微调。
2. 高频信号注入的实现细节
2.1 高频信号生成算法
高频信号的生成需要在每个控制周期精确计算,典型的实现如以下C代码所示:
c复制// 高频信号生成函数
void HF_Injection(float *hfi_alpha, float *hfi_beta) {
static float theta_hfi = 0.0f;
const float f_hfi = 2500.0f; // 2.5kHz注入频率
const float V_hfi = 0.08f * Vdc; // 注入幅值为直流母线电压的8%
theta_hfi += 2 * PI * f_hfi * Ts; // Ts为控制周期
if(theta_hfi > 2*PI) theta_hfi -= 2*PI;
*hfi_alpha = V_hfi * cosf(theta_hfi);
*hfi_beta = V_hfi * sinf(theta_hfi);
}
这段代码需要在中断服务程序中执行,关键点包括:
- 控制周期Ts必须精确匹配实际中断周期,否则会导致频率偏差
- 角度累加器theta_hfi需要使用static变量保持连续性
- 三角函数计算可以采用查表法优化执行时间
2.2 位置信息解调技术
从高频电流响应中提取位置信息是核心技术难点,典型的解调流程包括:
- 坐标变换:将αβ轴电流变换到高频旋转坐标系
- 带通滤波:提取高频响应分量
- 锁相环跟踪:估计转子位置
具体实现代码如下:
c复制// 解调处理函数
void Demodulation(float i_alpha, float i_beta, float *pos_est) {
static float hfi_filter[2] = {0};
float hfi_comp = i_alpha * cosf(theta_hfi) + i_beta * sinf(theta_hfi);
// 二阶IIR带通滤波
hfi_filter[0] = hfi_filter[1];
hfi_filter[1] = 0.85f * hfi_filter[0] + 0.15f * hfi_comp;
// PLL更新
PLL_Update(hfi_filter[1]);
*pos_est = PLL_GetAngle();
}
调试技巧:
- 用示波器观察hfi_comp信号,应能看到明显的正弦波形
- 滤波器带宽设置约为注入频率的±20%
- PLL参数需要根据系统响应速度要求调整
3. 双闭环控制系统设计
3.1 电流环设计要点
电流环是无传感器控制的基础,需要特别注意:
- PWM频率建议≥20kHz以减小电流纹波
- 采样时刻应设置在PWM周期中点
- 避免使用一阶滞后滤波,推荐移动平均滤波
典型电流环PI参数整定公式:
c复制pi->Kp = L * 2 * PI * f_bandwidth; // f_bandwidth取1/10 PWM频率
pi->Ki = R / L; // R、L为电机参数
3.2 速度环参数整定
速度环PI参数对系统动态性能影响显著,经验整定方法:
c复制void SpeedLoop_Init(PI_Controller *pi) {
// 基于系统惯量J的经验公式
pi->Kp = 0.1f * J;
pi->Ki = pi->Kp * 40.0f;
pi->OutputLimit = I_rated * 0.8f; // 留有余量
}
实用调试技巧:
- 先设置Ki=0,逐步增大Kp至出现轻微超调
- 然后加入Ki,观察负载扰动下的恢复速度
- 最后加入抗饱和处理,避免积分饱和
4. 工程实现中的关键问题
4.1 初始位置检测
高频注入法在启动前需要解决初始位置问题,可靠方案包括:
- 强制注入高频信号0.5-1秒
- 等待位置估计收敛
- 再使能转矩输出
实现代码框架:
c复制if(startup_phase){
if(delay_counter < STARTUP_DELAY){
delay_counter++;
InjectHFOnly(); // 仅注入高频
}else{
EnableControlLoop(); // 启动闭环
}
}
4.2 模式切换策略
系统需要在不同速度区间采用不同观测方法:
- 零低速区(<5%额定转速):高频注入法
- 中高速区:反电动势观测器
- 切换时需要平滑过渡,避免跳动
5. Simulink仿真实现
5.1 S-Function设计要点
高频注入模块的S-function实现需要注意:
- 必须使用固定步长求解器
- 步长设置与实际控制周期一致
- 加入适当的量化处理模拟实际ADC
典型实现片段:
matlab复制function sys = mdlOutputs(t,x,u)
persistent theta_hfi;
if isempty(theta_hfi)
theta_hfi = 0;
end
V_hfi = 0.1 * Vdc;
f_hfi = 2500;
Ts = 50e-6;
theta_hfi = theta_hfi + 2*pi*f_hfi*Ts;
if theta_hfi > 2*pi
theta_hfi = theta_hfi - 2*pi;
end
sys(1) = V_hfi * cos(theta_hfi);
sys(2) = V_hfi * sin(theta_hfi);
end
5.2 仿真调试技巧
- 从开环注入开始验证,观察电流响应
- 逐步增加闭环控制,先电流环后速度环
- 加入逆变器非线性补偿提高仿真真实性
- 测试不同负载条件下的稳定性
6. 实际调试经验分享
- 硬件准备:
- 使用可调压电源(先低压测试)
- 准备高分辨率示波器(观测电流波形)
- 电机轴端做好标记(验证位置精度)
- 参数调整顺序:
- 先调电流环,确保电流跟踪性能
- 再调位置观测器,验证静态精度
- 最后调速度环,优化动态响应
- 常见问题处理:
- 启动抖动:检查初始位置检测,增加启动延迟
- 低速振荡:调整PLL参数,降低速度环带宽
- 噪声敏感:优化滤波器设计,检查接地
- 安全注意事项:
- 上电前确认功率线路连接正确
- 初次运行使用限流电源
- 避免在未接电机时输出PWM
