永磁同步电机(PMSM)因其高效率、高功率密度等优势,在工业自动化、电动汽车等领域得到广泛应用。传统的FOC(磁场定向控制)需要依赖位置传感器获取转子位置信息,这不仅增加了系统成本,还降低了可靠性。无感FOC控制技术通过算法估算转子位置和速度,成为当前研究热点。
在众多无感控制方案中,高频注入(HFI)技术因其在零低速区域的优异表现备受关注。特别是对于需要0速带载启动、堵转保持扭矩等严苛工况的应用场景,HFI方案展现出独特优势。本文将基于STM32F405平台,深入解析高频方波注入方案的技术细节与实现方法。
高频方波注入技术利用了永磁同步电机的凸极效应(磁饱和效应)。当向电机定子绕组注入高频电压信号时,由于d轴和q轴磁路不对称,会在电流响应中产生与转子位置相关的特征分量。
具体实现上,我们在基波电压上叠加一个高频方波电压信号(通常频率在1-10kHz范围)。这个高频信号会在电机中产生相应的高频电流响应,通过解调这个响应信号,可以提取出转子的位置信息。
关键点:高频注入频率的选择需要综合考虑系统带宽、开关损耗和信号提取难度。通常建议选择高于基波频率10倍以上,但低于PWM载波频率的1/3。
位置估算的核心在于从高频响应电流中提取位置信息。对于方波注入,通常采用同步解调技术:
c复制// 位置估算核心代码示例
void PositionEstimation(void) {
// 获取三相电流
float i_a = GetCurrent(ADC_CHANNEL_A);
float i_b = GetCurrent(ADC_CHANNEL_B);
// Clark变换
float i_alpha = i_a;
float i_beta = (i_a + 2*i_b) * ONE_BY_SQRT3;
// 带通滤波
i_alpha_hf = BPF_Update(i_alpha);
i_beta_hf = BPF_Update(i_beta);
// 解调处理
float demod_signal = i_alpha_hf * sin(hf_angle) - i_beta_hf * cos(hf_angle);
// PLL更新
PLL_Update(demod_signal);
}
在初始阶段,电机处于静止状态,此时反电动势为零,传统观测器无法工作。高频注入通过以下步骤实现角度估算:
实测技巧:收敛时间通常在100-300ms,可通过监测解调信号幅值判断是否收敛。建议设置超时机制,避免异常情况导致系统卡死。
角度收敛后得到的位置信息存在180°不确定性(无法区分N/S极),需要通过脉冲测试确定磁极极性:
c复制void PoleIdentification(void) {
// 施加测试电压矢量
SetVoltageVector(est_angle, 0.1*Vdc);
Delay(50); // 等待响应
// 检测运动方向
float speed = GetEstimatedSpeed();
if((speed > 0 && expected_dir == CW) ||
(speed < 0 && expected_dir == CCW)) {
// 极性正确
pole_correct = true;
} else {
// 需要反转角度
est_angle += PI;
pole_correct = true;
}
// 清除测试电压
SetVoltageVector(0, 0);
}
完成极性辨识后,系统进入双闭环控制模式:
STM32F405的丰富外设非常适合电机控制应用:
| 外设 | 功能配置 | 备注 |
|---|---|---|
| TIM1 | PWM生成 | 中心对齐模式,死区时间5% |
| TIM2 | 速度测量 | 编码器接口模式 |
| TIM3 | HFI信号生成 | 独立模式,10kHz方波 |
| ADC1 | 电流采样 | 注入通道,触发同步 |
| SPI1 | 通信接口 | 参数调试与监控 |
系统采用分层架构设计:
关键中断安排:
在低速区(通常<5%额定转速),持续使用HFI方案:
当速度超过阈值时,切换到滑模观测器:
c复制void SpeedObserverSwitch(void) {
// 混合权重计算
float blend_factor = (est_speed - switch_start) / (switch_end - switch_start);
blend_factor = constrain(blend_factor, 0, 1);
// 混合观测结果
est_angle = blend_factor * smo_angle + (1-blend_factor) * hfi_angle;
est_speed = blend_factor * smo_speed + (1-blend_factor) * hfi_speed;
// 完全切换后关闭HFI
if(blend_factor >= 1.0) {
DisableHFI();
}
}
| 参数 | 调试方法 | 典型值 |
|---|---|---|
| 注入频率 | 根据PWM频率选择 | 5-10kHz |
| 注入幅值 | 从5%Vdc开始测试 | 5-15%Vdc |
| 滤波器截止 | 略低于注入频率 | 0.8*f_inj |
| PLL带宽 | 响应速度与噪声折中 | 50-100Hz |
速度环PI参数调试步骤:
电流环通常采用内模控制(IMC)方法设计,可获得较好鲁棒性。
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 角度不收敛 | 注入幅值不足 | 增大注入电压 |
| 极性判断错误 | 负载转矩过大 | 减小测试矢量幅值 |
| 启动抖动 | PI参数不当 | 重新调节速度环 |
| 过流保护 | 相位错误 | 检查接线顺序 |
在移植到不同电机时,需要重新调整以下参数:
实际项目中,我们发现在注入频率为8kHz、幅值10%Vdc时,大多数中小功率PMSM都能获得良好的启动性能。对于需要快速响应的应用,可以适当提高PLL带宽,但要注意噪声抑制。