1. 永磁无刷电机无传感器控制的技术挑战
在无人机、电动汽车和工业伺服系统中,永磁无刷直流电机(BLDC)因其高效率、高功率密度和长寿命等优势而广泛应用。传统控制方案依赖安装在电机轴上的位置传感器(如霍尔传感器或编码器)来获取转子位置信息,但这带来了成本增加、可靠性降低和安装空间受限等问题。无传感器控制技术通过算法估算转子位置和转速,成为解决这些痛点的关键技术。
然而在实际工程应用中,无传感器控制面临三大核心挑战:
- 低速工况下的信号信噪比问题(反电动势幅值与转速成正比)
- 负载突变时的动态响应性能
- 参数变化(如绕组电阻随温度变化)带来的观测误差
2. 超螺旋滑模观测器原理剖析
2.1 传统滑模观测器的局限性
传统滑模观测器(SMO)通过设计滑模面使系统状态在有限时间内收敛,其基本形式为:
code复制s = x_hat - x
u = K*sign(s)
其中K为滑模增益。这种方法的突出问题在于:
- 高频抖振现象严重
- 对测量噪声敏感
- 需要较大的滑模增益来保证鲁棒性,但大增益又会加剧抖振
2.2 超螺旋算法的改进机制
超螺旋滑模观测器(STSMO)在传统SMO基础上引入二阶滑模项,其数学描述为:
code复制dz/dt = -λ|s|^1/2 sign(s) + v
dv/dt = -α sign(s)
这种结构具有两个关键特性:
- 在不增加增益的情况下提高收敛速度
- 通过连续化处理有效抑制高频抖振
在电机控制应用中,我们将其离散化为:
c复制// 超螺旋项计算
mtr->z_alpha += mtr->K2 * sign(e_alpha) * mtr->Ts;
mtr->z_beta += mtr->K2 * sign(e_beta) * mtr->Ts;
3. 具体实现与参数整定
3.1 观测器核心代码实现
完整的STSMO实现包含以下关键步骤:
c复制typedef struct {
float i_alpha_hat; // α轴电流观测值
float i_beta_hat; // β轴电流观测值
float z_alpha; // α轴超螺旋项
float z_beta; // β轴超螺旋项
float R_s; // 定子电阻
float L_sigma; // 等效漏感
float K1, K2; // 滑模增益
float Ts; // 采样周期
} Motor;
float STSMO_Update(Motor *mtr, float ia, float ib) {
// 反电动势观测
float e_alpha = mtr->L_sigma * (mtr->i_alpha_hat - ia) + mtr->K1 * sign(mtr->i_alpha_hat - ia);
float e_beta = mtr->L_sigma * (mtr->i_beta_hat - ib) + mtr->K1 * sign(mtr->i_beta_hat - ib);
// 超螺旋项更新
mtr->z_alpha += mtr->K2 * sign(e_alpha) * mtr->Ts;
mtr->z_beta += mtr->K2 * sign(e_beta) * mtr->Ts;
// 状态更新
mtr->i_alpha_hat += (-mtr->R_s/mtr->L_sigma*ia + e_alpha + mtr->z_alpha) * mtr->Ts;
mtr->i_beta_hat += (-mtr->R_s/mtr->L_sigma*ib + e_beta + mtr->z_beta) * mtr->Ts;
return atan2f(-e_beta, e_alpha); // 转子位置估算
}
3.2 关键参数整定指南
| 参数 | 物理意义 | 整定方法 | 典型取值范围 |
|---|---|---|---|
| K1 | 滑模趋近增益 | 根据电流跟踪误差调整 | 50-200 |
| K2 | 超螺旋增益 | 根据转速动态性能调整 | 1000-5000 |
| L_sigma | 等效漏感 | 通过堵转实验测量 | 0.1-1mH |
| Ts | 采样周期 | 受限于控制器性能 | 50-100μs |
调试经验:
- 先固定K2=0,调整K1使电流跟踪误差最小
- 逐步增加K2直至转速突变时的角度波动在可接受范围
- 最后微调L_sigma补偿参数误差
4. 转速估算的锁相环设计
4.1 改进型PLL实现
转速估算采用二阶锁相环结构,其Python实现如下:
python复制class PLL:
def __init__(self, Kp, Ki):
self.Kp = Kp # 比例增益
self.Ki = Ki # 积分增益
self.theta_hat = 0.0 # 角度估计
self.omega_hat = 0.0 # 转速估计(rpm)
self.integrator = 0.0 # 积分器
def update(self, theta_err, Ts):
# 抗积分饱和处理
theta_err = np.clip(theta_err, -0.5, 0.5)
# PI调节
self.integrator += self.Ki * theta_err * Ts
self.omega_hat = self.Kp * theta_err + self.integrator
# 角度积分
self.theta_hat += self.omega_hat * Ts
return self.theta_hat, self.omega_hat
4.2 PLL参数优化
通过波特图分析确定PLL带宽:
- 带宽应大于转速变化频率
- 但过大会放大噪声影响
- 经验公式:带宽 ≈ (1/5 ~ 1/10) PWM频率
实测参数组合:
- 对于20kHz PWM频率:Kp=0.8, Ki=0.3
- 对于10kHz PWM频率:Kp=0.5, Ki=0.15
5. 工程实践中的问题解决
5.1 低速性能优化
问题现象:当转速低于100rpm时,角度估算出现周期性跳变
解决方案:
- 用饱和函数替代符号函数:
c复制#define SAT(x,eps) (fabs(x)<eps ? (x/eps) : (x>0 ? 1 : -1))
- 动态调整死区阈值eps:
c复制float eps = BASE_EPS + SPEED_COEFF * fabs(omega_hat);
5.2 抗干扰措施
- PWM谐波抑制:
- 在ADC采样时刻避开PWM开关边沿
- 采用移动平均滤波,窗口大小与载波频率同步
- 温度补偿:
c复制// 在线更新电阻参数
mtr->R_s = R0 * (1 + 0.00393*(temp - 25));
6. 实测性能分析
测试条件:
- 电机型号:DJI 2312E
- 额定功率:200W
- 控制器:STM32F407@168MHz
| 性能指标 | 传统SMO | STSMO |
|---|---|---|
| 角度误差(稳态) | ±1.5° | ±0.2° |
| 转速阶跃响应时间 | 15ms | 8ms |
| 最低运行转速 | 200rpm | 50rpm |
| CPU占用率 | 5% | 7% |
在实验室环境下,该系统实现了全速范围内的稳定运行。特别是在突加减载测试中,转速恢复时间控制在10ms以内,满足大多数无人机应用的需求。
