一、观测器技术的核心价值
在电机控制系统中,状态观测器如同为控制器装上了一双"智慧之眼"。它通过算法重构不可直接测量的电机状态参数(如转子位置、转速、磁链等),在无传感器控制领域具有革命性意义。据行业统计,采用先进观测器方案可降低系统BOM成本15%-30%,同时提升可靠性等级2-3个数量级。
二、什么是电机观测器
电机观测器(Motor Observer)是电机控制系统中的一种算法模块,用于实时估计电机内部无法直接测量的状态参数(如转子位置、转速、磁链等)。它通过数学模型和信号处理技术,结合可测量的电压、电流等信号,“推算”出电机运行的关键状态信息,是实现**无传感器控制**(Sensorless Control)的核心技术。
1. 为什么需要电机观测器?
- 降低成本:替代物理传感器(如编码器、旋转变压器,霍尔传感器),减少硬件成本和系统复杂度。
- 提高可靠性:消除传感器线缆故障、信号干扰等问题,增强恶劣环境(高温、振动)下的稳定性。
- 拓展控制能力:支持零速/低速、高速全范围控制,突破传统传感器的物理限制。
2. 工作原理
电机观测器的核心是数学建模与状态重构:
- 建立电机模型:基于电机物理方程(如永磁同步电机的d-q轴方程)构建状态空间模型。
- 输入测量信号:采集电机三相电流、母线电压等实际运行数据。
- 算法实时计算:通过观测器算法(如滑模观测器、卡尔曼滤波)对比模型输出与实际信号,动态修正误差,估算出目标参数(如转子位置θ)。
三、主流观测器技术架构对比
1. 龙伯格观测器(Luenberger Observer)
- 技术特点:基于电机数学模型构建状态方程,通过误差反馈修正
- 适用场景:参数稳定的PMSM/IPM电机系统
- MCU资源占用:约15% MIPS(以100MHz Cortex-M4为例)
- 实测表现:在额定转速±20%范围内,位置估计误差<1.5°
2. 滑模观测器(SMO)
- 创新机制:引入切换函数实现强鲁棒性
- 抗扰优势:在±50%参数扰动下仍保持稳定
- 典型挑战:高频抖振现象需通过准滑动模态优化
- 行业应用:白色家电、电动工具领域占比超60%
3. 卡尔曼滤波器(Kalman Filter)
- 算法优势:最优随机估计理论,支持噪声统计特性建模
- 扩展变体:EKF(扩展卡尔曼滤波)处理非线性系统
- 资源需求:矩阵运算需硬件FPU支持
- 典型案例:新能源汽车驱动电机位置观测
4. 模型参考自适应(MRAS)
- 双模型架构:参考模型与可调模型协同工作
- 参数辨识:支持在线电机参数辨识(Rs, Ld/Lq等)
- 调试要点:自适应律设计影响收敛速度
四、新一代观测器技术演进
- 混合架构设计:
- SMO+EKF复合观测器:兼顾动态响应与稳态精度
- 实验数据:在电动助力转向(EPS)系统中,切换超调降低40%
- AI增强型观测:
- LSTM网络补偿参数漂移
- 轻量化神经网络部署方案(<50KB Flash)
- 芯片级优化:
- 专用观测器加速器(Observer Accelerator)
- 矩阵运算指令集扩展
五、选型指导与开发建议
评估维度 |
消费级方案 |
工业级方案 |
车规级方案 |
核心算法 |
SMO |
EKF |
混合观测器 |
位置精度 |
±3° |
±1° |
±0.5° |
过调制支持 |
有限 |
支持120%调制 |
支持150%调制 |
功能安全 |
- |
SIL2 |
ASIL-D |
典型MCU型号 |
STM32G4系列 |
TI C2000+CLA |
Infineon AURIX™ |
六、APM32M3514观测器介绍
1、APM32M3514主要使用滑膜观测器,通过电机系统模型、电压和电流矢量输入估算反电动势,下图给出了基于 SMO 的转子位置和速度 估算方法的简化框图。

2、代码介绍
基本参数设定

初始化SMO滑模观测器的相关参数
/*******************************************************************************
* Function Name : smo_para_init
* Description : 初始化SMO滑模观测器的相关参数
*
* Input : SMO滑模结构体
* Output : None
* Return : 若初始化异常,返回-1;正常返回0
*******************************************************************************/
int8_t smo_para_init(stc_smo_para_t *pstc)
{
uint8_t i = 0;
int8_t s8Temp = 0;
pstc->s16q15_SmoA = Q15(1.0f - Rs / Ls / PWMFREQ);
pstc->s16q15_SmoB = Q15(UDC_MAX / Ls / I_MAX / PWMFREQ);
/*若电机参数异常,则返回错误代码*/
if(pstc->s16q15_SmoA == 0x7FFF || pstc->s16q15_SmoA < 0|| pstc->s16q15_SmoB == 0x7FFF)
{
s8Temp = -1;
}
else
{
s8Temp = 0;
}
pstc->s16q15_SatMax = SMO_ERR_MAX;
pstc->s16q15_SatMin = -SMO_ERR_MAX;
pstc->s16q10_SmoGain = 1024 * SLIDE_GIAN/SMO_ERR_MAX;
pstc->s16q15_LPF_K1 = 29491;
pstc->s16q15_LPF_K2 = 32768 - pstc->s16q15_LPF_K1;
pstc->s16q15_Ealpha = 0;
pstc->s16q15_Ebeta = 0;
pstc->s16SpdToTheta = SPEED_TO_THETA;
pstc->s16DeltaTheta = 0;
pstc->s16Theta = 0;
pstc->s16q15SpdObs = 0;
pstc->s16SpeedValidationBand_H = SPEED_BAND_UPPER_LIMIT;
pstc->s16SpeedValidationBand_L = SPEED_BAND_LOWER_LIMIT;
pstc->s16MinStartUpValidSpeed = OBS_MINIMUM_SPEED_UNIT;
pstc->u16ConsistencyCounter = 0;
pstc->u16StartUpConsistThreshold = NB_CONSECUTIVE_TESTS;
pstc->bForceConvergency = false;
pstc->bIsAlgorithmConverged = false;
pstc->bEnableObserver = false;
pstc->bObserverConverged = false;
pstc->bIsStartTransition = false;
pstc->s16SpeedBufferOldest = 0;
pstc->u8SpeedBufferSizeUnit = SMO_FIFO_DEPTH;
pstc->u8Speed_Buffer_Index = 0;
pstc->u16VariancePercentage = PERCENTAGE_FACTOR_Q7;
pstc->StatorIdq.s16q15_Q = 0;
for(i=0;i<64;i++)
{
pstc->s16Speed_Buffer[i] = 0u;
}
return s8Temp;
}
七、总结
不同观测器对MCU需求资源不一致,根据使用场景的不同使用的观测器也不同,APM32M3514使用滑模观测器(SMO),用于根据测得的输入和输出估算可观测系统的内部状态。在此应用中,SMO 用于估算电机的反电动势。与传统线性反电动势转子位置和速度估算相比,使用 SMO 的 主要优势在于,当存在未知信号和不确定性时,SMO 的稳健性极高。 |