3. 位置观测器基础:滑模观测器(SMO)与龙伯格观测器的原理对比
做无感启动,最核心的问题就是:转子在哪儿?
电机堵转时,反电动势为零,你没法直接算位置。等转起来,反电动势出来了,你又得从电压电流里把位置“观测”出来。这就是位置观测器干的事。
我入行那会儿,市面上主流的方案就两个:滑模观测器(SMO)和龙伯格观测器。很多人觉得SMO是“野路子”,龙伯格才是正统。其实各有各的脾气。今天我就把这两个家伙的底裤扒干净,讲讲它们到底怎么工作的,以及我在项目里踩过的坑。
3.1 为什么需要观测器?
说白了,我们手头只有电流采样和母线电压。转子的位置和速度,是藏在背后的状态量。你没法直接拿万用表去量。
观测器的本质就是:建一个电机模型,让模型跟着真实电机跑,模型内部的状态(位置、速度)就是我们要的估计值。
嗯,这里要注意:模型跑得准不准,取决于你用什么方式去“纠正”模型的误差。SMO和龙伯格的区别,就在这个纠正方式上。
核心思想: 观测器 = 电机数学模型 + 误差反馈校正。
3.2 滑模观测器(SMO)—— 简单粗暴,但抖得厉害
SMO的思路很直接:我不管你模型误差有多大,我强行用一个开关信号,把误差“拍”到零。
你想想看,这就像你开车,不管路有多弯,你方向盘直接打到底,硬把车掰回车道。这就是“滑模”的脾气——不连续、高增益、鲁棒性强。
3.2.1 SMO的工作原理
在αβ坐标系下,PMSM的电流方程可以写成:
diα/dt = (-Rs/Ls)*iα + (1/Ls)*vα - (1/Ls)*eα
diβ/dt = (-Rs/Ls)*iβ + (1/Ls)*vβ - (1/Ls)*eβ
其中 eα、eβ 就是反电动势,里面藏着转子位置信息。
SMO的做法是:构造一个电流观测器,然后用符号函数(sign)作为切换控制律:
dîα/dt = (-Rs/Ls)*îα + (1/Ls)*vα - (Ksw/Ls)*sign(îα - iα)
dîβ/dt = (-Rs/Ls)*îβ + (1/Ls)*vβ - (Ksw/Ls)*sign(îβ - iβ)
当观测电流追上实际电流时,切换项的平均值就等于反电动势。然后从反电动势里提取位置:
θ̂ = atan2(-eα, eβ)
我的经验: 符号函数会产生高频抖振。我早期一个项目里,SMO出来的位置信号毛刺特别多,直接导致速度环震荡。后来我换成了饱和函数(sat)或者Sigmoid函数做准滑模,抖振明显改善。
3.2.2 SMO的优缺点
| 优点 | 缺点 |
|---|---|
| 对参数误差不敏感(鲁棒性强) | 输出存在高频抖振,需要低通滤波 |
| 算法简单,计算量小 | 滤波会引入相位延迟,影响低速性能 |
| 容易在低成本MCU上实现 | 低速时反电动势信噪比低,容易失效 |
避坑指南: 我曾经在20W的小风机项目里用SMO,结果启动时因为反电动势太小,观测器直接“飞”了。后来加了I/F强拖启动,等转速上来再切SMO,才算搞定。
3.3 龙伯格观测器 —— 平滑细腻,但依赖模型
龙伯格观测器走的是另一条路:它用线性反馈增益,把观测误差“柔柔地”拉回来。不像SMO那么暴力,它更像一个PID调节器——误差大就多拉一点,误差小就少拉一点。
3.3.1 龙伯格观测器的工作原理
同样基于电流方程,龙伯格观测器把反电动势也当作状态变量来估计。它的结构是:
dîα/dt = (-Rs/Ls)*îα + (1/Ls)*vα - (1/Ls)*êα + g1*(iα - îα)
dîβ/dt = (-Rs/Ls)*îβ + (1/Ls)*vβ - (1/Ls)*êβ + g1*(iβ - îβ)
dêα/dt = g2*(iα - îα)
dêβ/dt = g2*(iβ - îβ)
这里的 g1、g2 就是反馈增益。通过极点配置,你可以让观测器的收敛速度比电机本身快3~5倍。
位置提取方式和SMO一样:
θ̂ = atan2(-êα, êβ)
关键区别: SMO用开关函数(不连续)做校正,龙伯格用线性增益(连续)做校正。一个刚,一个柔。
3.3.2 龙伯格观测器的优缺点
| 优点 | 缺点 |
|---|---|
| 输出平滑,无需额外滤波 | 对电机参数(Rs、Ls)敏感 |
| 低速性能优于SMO | 算法稍复杂,计算量略大 |
| 相位延迟小,动态响应快 | 参数不准时,观测误差会发散 |
我的建议: 如果你做的是伺服驱动器,对低速平稳性要求高,龙伯格是更好的选择。但记得要做在线参数辨识,否则Rs随温度一变,观测器就偏了。
3.4 核心对比:SMO vs 龙伯格
我把两个观测器的核心差异整理成一张表,方便你对照选型:
| 对比维度 | 滑模观测器(SMO) | 龙伯格观测器 |
|---|---|---|
| 校正方式 | 不连续切换(符号函数) | 连续线性反馈 |
| 参数敏感性 | 低(鲁棒性强) | 高(依赖Rs、Ls精度) |
| 输出质量 | 有抖振,需滤波 | 平滑,无需滤波 |
| 低速性能 | 差(反电动势弱) | 较好 |
| 计算量 | 小 | 中等 |
| 适用场景 | 风机、泵类、低成本方案 | 伺服、机器人、高性能驱动 |
3.5 一张图看懂两种观测器
下面这张SVG图,把SMO和龙伯格的结构差异画得清清楚楚:
3.6 实际项目中的选择建议
说了这么多理论,到底怎么选?我个人的经验是这样的:
- 如果你做的是几百瓦的小风机、水泵,成本敏感,MCU主频低,那就用SMO。记得加I/F强拖启动,转速起来后再切观测器。
- 如果你做的是伺服驱动器、机器人关节,对低速平稳性和动态响应有要求,那就上龙伯格。但一定要做参数辨识,或者用自适应龙伯格。
- 如果你既想要鲁棒性,又想要平滑输出,可以考虑“滑模+龙伯格”的混合方案——低速用龙伯格,高速切SMO。我在一个50W的BLDC项目里试过,效果不错。
曾经踩过的坑: 有一次我把SMO的切换增益Ksw设得太大,结果观测器直接自激振荡,电流波形像锯齿一样。后来我把Ksw设为反电动势幅值的1.2倍,才稳定下来。记住:增益不是越大越好。
3.7 小结
SMO和龙伯格,没有绝对的好坏。SMO像一把砍刀,简单直接,但需要你懂得怎么磨掉毛刺;龙伯格像一把手术刀,精细准确,但需要你懂得怎么保养(参数校准)。
做无感启动,第一步就是选对观测器。选对了,后面的弱磁、MTPA才有意义。选错了,你连转都转不起来。