STM32F4 磁链观测器+PLL 无感无刷电机位置驱动

2023-10-25 08:28

本文主要是介绍STM32F4 磁链观测器+PLL 无感无刷电机位置驱动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在前面几节我们介绍了基于stm32f1的定点运算的滑膜观测器反正切以及stm32f4的浮点运算滑膜+PLL的案例,大家反馈的还挺好,在做售后的过程中有小伙伴咨询了磁链观测器和隆伯格观测器,针对磁链观测器咨询的较多,我们调试了磁链的程序,以及在这一讲我们将为大家简单讲解一下磁链观测器的使用方法。

硬件测试平台依旧使用我们前面用到的滑膜+PLL的 KY_Motor无刷电机驱动板:

       PMSM的FOC控制需要位置信息。在一些应用中,安装位置传感器很麻烦,例如,在一些真空泵中,由于密封性问题,不可能将电机轴伸出电机壳外。在起重机和电梯应用中,电机和逆变器之间的距离很大,传感器信号衰减和噪声干扰很高。在一些家用设备,如冰箱和空调,成本限制阻碍了传感器的使用。

        PMSM无传感器技术大致分为三种类型:反电动势(EMF)、电感和磁链。

        转子磁链观测器利用定子电压、定子电流或转子转速信号观测出转子磁链的相位和幅值。如果转子磁链的相位观测不准,那么定子电流的励磁分量与转矩分量就不能实现完全的解耦,可能会造成系统的振荡甚至不稳定。如果观测出转子磁链的幅值偏大,会使得电机运行在弱磁状态,减小带载能力;如果观测出转子磁链的幅值偏小,会导致过大的励磁电流,使电机的铁心饱和,严重时还会导致绕组过热而烧坏电机。因此决定整个矢量控制系统性能优劣的最为关键环节就是转子磁链观测器。

         电压型磁链观测器方程

从式(2-51)可以发现该观测器具有以下特点:

(1) 该模型与转子电阻无关,且不需要电机转速信息,适合用于无速度传感器矢量控制系统;

(2) 包含一纯积分项,被积项的初始相位与直流偏置都会影响积分结果;

(3) 低速时观测器性能较差。因为低速时给定的定子电压幅值小,电机端电压难以精确获得,定子电阻的阻值在运行过程中又会发生变化,使得被积项产生明显的相对误差。

电流型磁链观测器方程

从(2-53)可以看出磁链观测器具有以下特点:

1、需要实测的电子电流和转速信号,不需要定子电压信号;

2、包含转子时间常数和互感参数,当电机温升和磁路饱和时会对这些参数产生较大影响;

3、不包含纯积分环节,故其观测值是渐进收敛的。

如何用C语言将磁链方程转述出来:

只需要下面四步就可以将磁链和PLL表述出来。

1、void Observer_Par_init(void);//初始化磁链参数

2、Flux_Observer_Angle(float Ialpha,float Ibeta,float Ualpha,float Ubeta);//磁链观测器角度

3、Observer_Flux(PFlux_Obser ptHandle);//磁链观测器实现

4、Flux_Pll_Compute(PFlux_Obser ptHandle);//磁链+PLL计算

磁链初始化需要初始化电机参数,增益以及PI参数,完整函数如下:

void Observer_Par_init(void)
{Flux_Obser.Ls = Motor_Ls;Flux_Obser.Flux = Motor_Flux*Motor_Flux;Flux_Obser.Gain = 1000000.0f; Flux_Obser.Rs = Motor_Rs;Flux_Obser.tPll.Kp=  300.00f; Flux_Obser.tPll.Ki = 100.0f;Flux_Obser.tPll.Speed_coeff = 60.0f/(2.0f*Motor_Pn*PI);//每Ts角度增加Ui电角度 可求速度Flux_Obser.tPll.Kslf = LPF_CutFre(100.0f); //100Hz 截止频率}

磁链观测器角度函数:

void Flux_Observer_Angle(float Ialpha,float Ibeta,float Ualpha,float Ubeta)
{Flux_Obser.I_Alpha = Ialpha;Flux_Obser.I_Beta  = Ibeta;Flux_Obser.U_Alpha = Ualpha;Flux_Obser.U_Beta  = Ubeta;Pll_Compute(&Flux_Obser.tPll,Flux_Obser.Est_Yita_alpha,Flux_Obser.Est_Yita_beta);
}

磁链观测器+PLL计算函数:

void  Flux_Pll_Compute(PFlux_Obser ptHandle)
{float Sin_Value = 0;float Cos_Value = 0;Cos_Value = arm_cos_f32(ptHandle->tPll.Theta);Sin_Value = arm_sin_f32(ptHandle->tPll.Theta);ptHandle->tPll.Err =  ptHandle->Est_Yita_beta  * Cos_Value - \ptHandle->Est_Yita_alpha * Sin_Value;ptHandle->tPll.Interg +=ptHandle->tPll.Err * ptHandle->tPll.Ki;ptHandle->tPll.Ui = ptHandle->tPll.Err * ptHandle->tPll.Kp + ptHandle->tPll.Interg;ptHandle->tPll.Theta += ptHandle->tPll.Ui;ptHandle->tPll.Theta = (ptHandle->tPll.Theta > 2*PI)? ptHandle->tPll.Theta- 2*PI :ptHandle->tPll.Theta;ptHandle->tPll.Theta = (ptHandle->tPll.Theta < 0)? ptHandle->tPll.Theta + 2*PI : ptHandle->tPll.Theta;ptHandle->tPll.SpeedLpf_Rpm = ptHandle->tPll.SpeedLpf_Rpm + ptHandle->tPll.Kslf * (ptHandle->tPll.Speed_Rpm - ptHandle->tPll.SpeedLpf_Rpm);}

        以上就是磁链观测器+PLL在stm32f4平台上实现的全过程,写的比较简单,磁链属于foc控制的进阶教程,相信有foc控制基础的学员,看了这个教程能有一些启发,也能自己写出完整的磁链控制程序,能够更加深入的去实现磁链控制以及无感电机foc控制。

下面是完整的测试视频:

        视频中我们分别对电流波形进行了上位机显示,通过启动波形,电位器调速的波形来形象直观的感受磁链观测器的启动过程,以及带负载的情况。

stm32f4平台 磁链+PLL 无感无刷电机控制实例

这篇关于STM32F4 磁链观测器+PLL 无感无刷电机位置驱动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/281284

相关文章

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p