FOC控制算法滑膜观测器实现

继续自己手写FOC控制算法之滑膜观测器的实现。

滑膜观测主要就是对电机参数没那么敏感,而且数学公式推导比较简单,就是基本的电机的数学哦公式加上一个滑模面函数,相较于龙伯格来说需要调试的参数很少。龙伯格我自己测试好了再发上来。

滑膜观测器的我理解的核心原理主要是构造滑膜面函数,然后根据李雅普诺夫定理来设定合适的增益实现滑模面函数的收敛。一般构造的滑膜面函数就是这个α-β坐标系下的电流。具体的电机公式及数学推导网络上有很多资料,自己去查阅。我这里直接贴代码。

这个是我自己对滑膜观测器的梳理。

滑膜观测器实现代码

结构体及宏定义

#define BEMF_VOL_FACTOR		(5.0f)		//电机反电势常数的电压
#define BEMF_FREQ_FACTOR		(50)		//电机反电势常数的电转速频率


struct SMO_Obs
{
		float spd_filter;		//滤波后的电转速
		float spd;	//电转速
		float theta_Est;	//估算的电角度
		float ialpha;		//电流α-β坐标系的α轴分量
		float ibeta;		//电流α-β坐标系的β轴分量
		float ialpha_Est;	//估算的电流α-β坐标系的α轴分量
		float ibeta_Est;	//估算的电流α-β坐标系的β轴分量
		float ialpha_Err;	//估算的和实际值误差
		float ibeta_Err;	//估算的和实际值误差
		float ualpha;	//电压α-β坐标系的α轴分量
		float ubeta;	//电压α-β坐标系的β轴分量
		float Ts;		//采样时间,FOC执行周期
		float Rs;		//电机内阻
		float Ld;		//电机D轴电感
		float Lq;		//电机Q轴电感
		float gain;	//滑膜增益
		float bemfalpha;	//反电动势α-β坐标系的α轴分量
		float bemfbeta;		//反电动势α-β坐标系的β轴分量
};

void SMO_Init(void);
void SMO_Handle(struct SMO_Obs* ptr);

函数实现,这里滑膜观测器的增益需要结合自己的工程调试,我这里为了实现原理是随便给的。

//滑膜控制器结构体
struct SMO_Obs SMO_Observer;	

//锁相环
extern struct PLL_Handle  PllCtrl;

static int8_t FuncSign(float in);

/*!
*@prototype void SMO_Init(void)
*@param[ih] none
*@return none
*@brief 滑膜观测器初始化
*/
void SMO_Init(void)
{
		SMO_Observer.spd_filter = 0.0f;
		SMO_Observer
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值