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

news2024/9/26 5:24:44

        在前面几节我们介绍了基于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 无感无刷电机控制实例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1130785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言每日一题(18)数组匹配

牛客网 BC156 牛牛的数组匹配 题目描述 描述 牛牛刚学会数组不久&#xff0c;他拿到两个数组 a 和 b&#xff0c;询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 如果有多个子数组之和同样接近&#xff0c;输出起始点最靠左的数组。 输入描述&#xff1a; 第一行输…

SpringAOP源码解析之基础设施注册(一)

写在最前 AspectJ和Spring AOP是两种实现AOP&#xff08;面向切面编程&#xff09;的不同方式&#xff0c;它们在实现机制和使用方式上存在一些区别。 AspectJ是一种独立的AOP框架&#xff0c;它提供了比Spring AOP更强大和更灵活的功能。AspectJ可以在编译时或者运行时织入切…

ICMP权限许可和访问控制漏洞处理(CVE-1999-0524)

一、问题描述 某次例行安全扫描&#xff0c;发现&#xff1a;ICMP权限许可和访问控制漏洞&#xff0c;编号&#xff1a;CVE-1999-0524&#xff0c;危险级别&#xff1a;低风险。利用该漏洞&#xff0c;远程主机会回复ICMP_TIMESTAMP查询并返回它们系统的当前时间&#xff0c;I…

浅谈安科瑞ASJ继电器在马尔代夫环岛水上排屋的应用

摘要&#xff1a;对电气线路进行接地故障保护&#xff0c;方式接地故障电流引起的设备和电气火灾事故越来越成为日常所需。针对用户侧主要的用能节点&#xff0c;设计安装剩余电流继电器&#xff0c;实时监控各用能回路的剩余电流状态。通过实时监控用能以及相关电力参数、提高…

asp.net乡村旅游管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net乡村旅游管理系统是一套完善的web设计管理系统系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c# 语言开发 asp.net乡村旅游管理系统 二、…

2018年亚太杯APMCM数学建模大赛B题人才与城市发展求解全过程文档及程序

2018年亚太杯APMCM数学建模大赛 B题 人才与城市发展 原题再现 招贤纳士是过去几年来许多城市的亮点之一。北京、上海、武汉、成都、西安、深圳&#xff0c;实际上都在用各种吸引人的政策来争夺人才。人才代表着城市创新发展的动力&#xff0c;因为他们能够在更短的时间内学习…

Linux国产系统无法连接身份证读卡器USB权限解决办法

​ 如上图&#xff1a;连接身份证读卡器失败 接入读卡器后&#xff0c;运行output&#xff0c;读卡报错&#xff1a;libusb open device with pid vid: Resource temporarily unavailable&#xff0c;连接读卡器失败&#xff0c;t_nRe -1 &#xff0c;这是由于未接入读卡器或…

JavaEE 网络原理——TCP的工作机制(末篇 其余TCP特点)

文章目录 一、滑动窗口二、流量控制三、拥堵控制四、延时应答五、捎带应答六、面向字节流七、异常情况八、总结 其余相关文章&#xff1a; JavaEE 网络原理——TCP的工作机制(中篇 三次握手和四次挥手) 本篇文章衔接的是前面两篇文章的内容&#xff0c;在这里继续解释 TCP 的内…

GO语言代码示例

首先&#xff0c;我们需要安装 rod 库&#xff0c;这是一个用于构建网络爬虫的 Go 语言库。 使用 go get 命令安装 rod 库&#xff1a;go get -u github.com/gofiber/rod 创建一个新的 Go 程序文件&#xff0c;例如&#xff1a;main.go 在 main.go 文件中&#xff0c;导入 r…

(免费领源码)java#Springboot#mysql 大学生兼职平台94598-计算机毕业设计项目选题推荐

摘 要 当今人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动&#xff0c;人类的许多社会活动正在向网络化发…

认识环境变量和进程替换,实现一个简易的shell

文章目录 一、环境变量1.什么是环境变量2.环境变量的分类3.查看环境变量4.设置环境变量5.获取环境变量 二、进程控制1.进程终止2.进程等待3.进程替换 三、实现一个简单的shell 一、环境变量 1.什么是环境变量 首先&#xff0c;在百度百科中&#xff0c;环境变量的解释是这样的…

第1篇 目标检测概述 —(3)目标检测评价指标

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。目标检测评价指标是用来衡量目标检测算法性能的指标&#xff0c;主要包括几个指标&#xff1a;精确率&#xff08;Precision&#xff09;、召回率&#xff08;Recall&#xff09;、交并比&#xff08;IoU&#xff09;、平均…

ES SearchAPI----Query DSL语言

文章目录 Getting Startedmatch_all查询全部sort排序from\size分页_source指定字段 match匹配查询match_phrase短语匹配multi_match多字段匹配range范围查询bool复合查询must必须匹配&#xff0c;可贡献得分must_not必须不匹配&#xff0c;可贡献得分should可有可无&#xff0c…

GIS 数据结构BSP树

BSP树&#xff08;Binary Space Partitioning Tree&#xff0c;二值空间划分树&#xff09;的主要思想是将空间分割成更小的部分&#xff0c;从而使空间查询和其他运算更加高效。每个节点在BSP树中代表一个空间区域&#xff0c;这个区域可以进一步被子节点所分割。 一旦把凹形区…

C# 读取文件类型

获取示例 代码 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks;namespace ConsoleApp6filetype {internal class Program{static void Main(…

使用openlayers加载离线瓦片地图

一、需求背景 我们现在的项目就说使用openlayer geoServer自己发布的矢量地图&#xff0c;是和公安合作的项目&#xff0c;由于政府大都使用的是天地图&#xff0c;所以需要将geoServer的矢量地图改为天地图&#xff0c;搭配openlayers使用&#xff0c;openlayers还可以切换不…

spi的基本知识、软件spi、硬件spi(ADXL362为测试对象)

一、spi基础知识 1.1、spi基础知识一 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外设接口&#xff09;是由摩托罗拉&#xff08;Motorola&#xff09;在1980前后提出的一种全双工同步串行通信接口&#xff0c;它用于MCU与各种外围设备以串行方式进行通…

纹波类型及纹波抑制措施

纹波主要有这几种类型&#xff1a;输入低频纹波、高频纹波、寄生参数引起的共模纹波噪声、功率器件开关过程中产生的超高频谐振噪声和闭环调节控制引起的纹波噪声。 1、低频纹波 低频纹波是与输出电路的滤波电容容量相关。电容的容量不可能无限制地增加&#xff0c;导致输出低…

视频号视频提取小程序,快速下载视频号视频

​视频号提取小程序可以帮助用户方便地从视频号视频平台获取到自己喜欢的视频号内容。通过这个小程序&#xff0c;你可以快速搜索并提取出视频号&#xff0c;并进行相关的操作。 据悉视频下载bot小程序目前已经更名为【提取下载小助手】 使用视频号提取小程序有以下几个步骤&…

postgresql group by之后对string字段进行拼接

数据如下 想要的效果 sql 如下 SELECT company_id, string_agg(employee, , ORDER BY employee) FROM mytable GROUP BY company_id;PostgreSQL STRING_AGG()函数是一个聚合函数&#xff0c;用于连接字符串列表并在它们之间放置分隔符。该函数不会在字符串的末尾添加分隔符。…