第10章 无传感器控制总览
目录
概述
无传感器控制(Sensorless Control)是指不使用物理位置/速度传感器,通过算法估计电机转子位置和速度的控制方法。
核心思想:从电机可测量量(电压、电流)中反推转子信息
为什么需要无传感器控制
| 优点 | 描述 |
|---|---|
| 成本降低 | 无需编码器、Hall 传感器 |
| 空间节省 | 电机尺寸可以更小 |
| 可靠性提高 | 无传感器故障点 |
| 维护简化 | 无需传感器校准和维护 |
| 安装简便 | 减少布线和安装工作 |
| 缺点 | 描述 |
|---|---|
| 低速性能差 | 低速时反电动势小,难以估计 |
| 启动困难 | 启动时无反电动势,需要特殊策略 |
| 动态性能下降 | 响应速度低于有感方案 |
| 算法复杂 | 需要复杂的观测器算法 |
无传感器控制方法分类
┌───────────────────────────────────────────┐
│ 无传感器控制方法 │
└───────────────────────────────────────────┘
↓
┌─────────┴─────────┬──────────────┐
│ │ │
反电动势方法 观测器方法 混合方法
│ │ │
└─────────┬─────────┴──────────────┘
↓
┌───────┴────────┬─────────────┐
│ │ │
过零检测 反电动势积分 高频注入方法一:反电动势过零检测
原理
检测三相反电动势的过零点,判断换相时机。
工作流程
1. 悬空一相
2. 检测悬空相反电动势过零
3. 触发换相
4. 重复步骤1-3电路实现
┌─────────────┐
│ 分压电路 │ ─→ 电压中点
└─────────────┘
↓
┌────────────────────────────────┐
│ 相电压比较器 │
│ E_a > V_n, E_b > V_n, E_c > V_n │
└────────────────────────────────┘
↓
换相判断逻辑优缺点
| 特性 | 评价 |
|---|---|
| 实现简单 | ★★★★★☆ |
| 低速性能 | ★☆☆☆☆☆ |
| 中高速性能 | ★★★★☆☆ |
| 算法复杂度 | ★★★★★☆ |
| 成本 | ★★★★★☆ |
适用场景
- 中高速应用(风扇、泵)
- 成本敏感场景
- 简单速度控制
方法二:反电动势积分
原理
通过积分反电动势获得转子位置和速度。
E_α = V_α - R·i_α - L·di_α/dt
E_β = V_β - R·i_β - L·di_β/dt
θ = ∫E_α dt + L·i_β
└──∫E_β dt - L·i_α
ω = (E_α·cosθ + E_β·sinθ) / |Ψ|优点
- 无需硬件比较器
- 可以连续估计位置
- 适合中高速范围
缺点
- 需要准确的电机参数(R、L)
- 积分漂移问题
- 低速性能仍然有限
方法三:滑模观测器(SMO)
原理
设计滑模面,强制估计误差在滑模上运动。
滑模面:s = e + λ·ė = 0
控制律:u = K·sign(s)
观测器方程:
dî/dt = A·î + B·u + K·sign(s)SMO 结构
┌─────────────┐
│ 电流观测器 │
└──────┬──────┘
↓
┌─────────────┐
│ 滑模增益 │
└──────┬──────┘
↓
┌─────────────┐
│ 位置估计 │
└──────┬──────┘
↓
估计位置/速度优缺点
| 特性 | 评价 |
|---|---|
| 鲁棒性 | ★★★★★☆ |
| 低速性能 | ★★★☆☆☆ |
| 高速性能 | ★★★★☆☆ |
| 实现复杂度 | ★★★☆☆☆ |
| 抗干扰能力 | ★★★★★☆ |
抖振问题及解决
问题:sign 函数导致估计值在真值附近振荡
解决方案:
- 饱和函数替代 sign:tanh 函数、sat 函数
- 低通滤波:平滑估计输出
- 边界层滑模:在边界层使用线性控制
// 饱和函数
float sat(float x, float bound) {
if (x > bound) return bound;
if (x < -bound) return -bound;
return x;
}
// 使用饱和函数
output = K * sat(s, boundary_layer);方法四:扩展卡尔曼滤波(EKF)
原理
利用贝叶斯估计理论,考虑测量噪声和过程噪声。
预测步骤:
î(k|k-1) = f(î(k-1|k-1), u(k-1))
P(k|k-1) = A·P(k-1|k-1)·A^T + Q
更新步骤:
K(k) = P(k|k-1)·H^T·(H·P(k|k-1)·H^T + R)^(-1)
î(k|k) = î(k|k-1) + K(k)·(z(k) - H·î(k|k-1))
P(k|k) = (I - K(k)·H)·P(k|k-1)状态向量
// 五状态模型
StateVector x = {
i_α, // α 轴电流
i_β, // β 轴电流
E_α, // α 轴反电动势
E_β, // β 轴反电动势
θ // 转子位置
};优缺点
| 特性 | 评价 |
|---|---|
| 估计精度 | ★★★★★☆ |
| 鲁棒性 | ★★★★☆☆ |
| 低速性能 | ★★★☆☆☆ |
| 实现复杂度 | ★★☆☆☆☆ |
| 计算量 | ★★☆☆☆☆ |
适用场景
- 高精度要求
- 噪声环境
- 参数不确定系统
方法五:模型参考自适应系统(MRAS)
原理
使用可调模型,通过自适应律调整参数使模型匹配实际系统。
实际系统:dX/dt = f(X, θ)
参考模型:dX̂/dt = f(X̂, θ̂)
自适应律:dθ̂/dt = γ·(X - X̂)·X̂
目标:使 θ̂ → θMRAS 结构
┌─────────┐
│ 实际系统 │
└────┬────┘
│
差 e = X - X̂
↓
┌─────────┐
│ 自适应律 │ ─→ 参数更新
└────┬────┘
↓
┌─────────┐
│ 参考模型 │
└─────────┘
↓
模型输出 X̂优缺点
| 特性 | 评价 |
|---|---|
| 参数跟踪 | ★★★★★☆ |
| 稳定性 | ★★★★☆☆ |
| 实现复杂度 | ★★★☆☆☆ |
| 动态性能 | ★★★☆☆☆ |
方法六:高频注入
原理
向电机注入高频信号,从响应中提取位置信息。
工作原理
注入信号:u_inj = A·sin(ω_inj·t)
电感调制(电机饱和位置相关):
L(θ) = L_0 + L_1·cos(2pθ)
从响应中提取位置信息:
i_2ω ∝ L_1·sin(2pθ)优缺点
| 特性 | 评价 |
|---|---|
| 低速性能 | ★★★★★☆ |
| 静止位置检测 | ★★★★★☆ |
| 高频噪声 | ★★☆☆☆☆ |
| 转矩脉动 | ★★☆☆☆☆ |
适用场景
- 零速和低速启动
- 需要精确定位
- 高频噪声可容忍的应用
无传感器启动策略
1. 开环启动
1. 按预定时序换相(类似方波控制)
2. 逐渐增加速度
3. 当速度足够高时,切换到闭环2. 高频注入启动
1. 注入高频信号
2. 从响应中估计位置
3. 切换到闭环控制3. 电流脉冲检测
1. 施加电流脉冲
2. 检测响应
3. 根据响应确定位置
4. 迭代到足够精度性能对比总结
| 方法 | 低速性能 | 高速性能 | 鲁棒性 | 实现难度 | 计算量 |
|---|---|---|---|---|---|
| 过零检测 | ★☆☆☆☆☆ | ★★★★☆☆ | ★★☆☆☆☆ | ★★★★★☆ | 低 |
| 反电动势积分 | ★★☆☆☆☆ | ★★★★☆☆ | ★★★☆☆☆ | ★★★☆☆☆ | 低 |
| 滑模观测器 | ★★★☆☆☆ | ★★★★☆☆ | ★★★★★☆ | ★★★☆☆☆ | 中 |
| EKF | ★★★☆☆☆ | ★★★★★☆ | ★★★★☆☆ | ★★☆☆☆☆ | 高 |
| MRAS | ★★★☆☆☆ | ★★★★☆☆ | ★★★★☆☆ | ★★★☆☆☆ | 中高 |
| 高频注入 | ★★★★★☆ | ★★☆☆☆☆ | ★★★★☆☆ | ★★★☆☆☆ | 中 |
混合方法
低速 + 高速切换
低速区域:高频注入法
中速区域:滑模观测器
高速区域:反电动势法
根据速度范围平滑切换自适应方法切换
根据动态条件自动选择最优估计器
- 启动阶段:高频注入
- 加速阶段:EKF
- 稳定运行:SMO 或 EKF实现框架(C++)
#include <math.h>
// 滑模观测器
class SensorlessObserver {
private:
// 电机参数
float R_phase; // 相电阻
float L_phase; // 相电感
float pole_pairs; // 极对数
// 估计状态
float i_alpha_est; // 电流估计
float i_beta_est;
float E_alpha_est; // 反电动势估计
float E_beta_est;
float theta_est; // 位置估计
float omega_est; // 速度估计
// SMO 参数
float gain_smo; // 滑模增益
float boundary_layer; // 边界层宽度
public:
SensorlessObserver(float R, float L, int poles)
: R_phase(R), L_phase(L), pole_pairs(poles),
gain_smo(0.5f), boundary_layer(0.05f) {}
// 饱和函数
float sat(float x) {
if (x > boundary_layer) return boundary_layer;
if (x < -boundary_layer) return -boundary_layer;
return x;
}
// SMO 更新
void update(float v_alpha, float v_beta,
float i_alpha, float i_beta,
float dt) {
// 电流误差
float error_alpha = i_alpha - i_alpha_est;
float error_beta = i_beta - i_beta_est;
// 滑模面
float s_alpha = gain_smo * sat(error_alpha);
float s_beta = gain_smo * sat(error_beta);
// 反电动势估计
E_alpha_est = v_alpha - R_phase * i_alpha_est - L_phase * s_alpha;
E_beta_est = v_beta - R_phase * i_beta_est - L_phase * s_beta;
// 位置估计
theta_est += (L_phase * i_alpha_est * E_alpha_est -
L_phase * i_beta_est * E_beta_est) * dt;
// 速度估计
float E_magnitude = sqrtf(E_alpha_est * E_alpha_est +
E_beta_est * E_beta_est);
omega_est = E_magnitude / fabsf(L_phase);
// 限制到 [0, 2π)
theta_est = fmodf(theta_est, 2.0f * M_PI);
if (theta_est < 0) theta_est += 2.0f * M_PI;
// 电流更新
i_alpha_est += (v_alpha - R_phase * i_alpha_est -
L_phase * s_alpha + E_alpha_est) * dt / L_phase;
i_beta_est += (v_beta - R_phase * i_beta_est -
L_phase * s_beta + E_beta_est) * dt / L_phase;
}
// 获取估计值
float getTheta() { return theta_est; }
float getOmega() { return omega_est; }
};参数整定
滑模观测器参数
| 参数 | 作用 | 典型值 |
|---|---|---|
| gain_smo | 滑模增益,决定收敛速度 | 0.3-1.0 |
| boundary_layer | 边界层宽度,影响平滑度 | 0.01-0.1 |
| 滤波系数 | 后滤波平滑抖振 | 0.1-0.5 |
EKF 参数
| 参数 | 作用 | 典型值 |
|---|---|---|
| Q | 过程噪声协方差 | 1e-6 - 1e-4 |
| R | 测量噪声协方差 | 1e-4 - 1e-2 |
| P0 | 初始协方差 | 1e-3 - 1e-1 |
常见问题
Q1: 无传感器控制的最小启动速度?
答:
- 过零检测:~10% 额定转速
- 反电动势积分:~5% 额定转速
- 滑模观测器:~2-5% 额定转速
- EKF:~1-2% 额定转速
- 高频注入:可以从零启动
Q2: 如何提高低速性能?
答:
- 使用高频注入法
- 结合多种方法(低速用注入,高速用其他)
- 提高电流采样精度
- 优化滤波器设计
Q3: 无传感器和有感方案如何选择?
答:
| 应用 | 无传感器 | 有感 |
|---|---|---|
| 低成本风扇 | 推荐 | 不推荐 |
| 伺服机器人 | 不推荐 | 推荐 |
| 无人机动力 | 可选 | 推荐 |
| 电动汽车 | 可选 | 推荐 |
| 高速泵类 | 推荐 | 可选 |
Q4: 无传感器控制的稳定性如何保证?
答:
- Lyapunov 稳定性分析
- 设计合理的观测器增益
- 使用边界层减少抖振
- 故障检测和容错
参考资源
| 资源 | 链接 |
|---|---|
| 无传感器控制综述 | IEEE Transactions |
| 滑模观测器论文 | “Sliding Mode Observers for Sensorless Control” |
| EKF 电机控制 | “Extended Kalman Filter for PMSM” |
| ST 无传感器应用 | ST 官方文档 |
学习路径
第一阶段(1-2周)
- 理解反电动势原理
- 学习过零检测方法
- 搭建简单过零检测实验
- 理解低速性能限制
第二阶段(2-3周)
- 学习滑模观测器理论
- 实现 SMO 算法
- 处理抖振问题
- 性能测试和对比
第三阶段(2-3周)
- 学习 EKF 理论
- 实现 EKF 算法
- 调整噪声参数
- 与 SMO 对比
第四阶段(2-3周)
- 学习混合方法
- 设计切换策略
- 实现完整无传感器 FOC
- 全面测试和优化
最后更新:2025-05-07
相关内容
- 第01章 AI/深度学习增强控制
- 第02章 Clarke 变换(三相静止 → 两相静止)
- 第03章 FOC(磁场定向控制)原理
- 第04章 STM32 FOC SDK 入门指南
- 第05章 SVPWM(空间矢量脉宽调制)
如果这篇文章对你有帮助,欢迎请我喝杯咖啡 ☕
支付宝
微信