直流无刷电机FOC控制原语

2024-01-22 03:28

本文主要是介绍直流无刷电机FOC控制原语,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

直流无刷电机FOC控制原语

文章目录

  • 直流无刷电机FOC控制原语
    • 1. 前言
    • 2. FOC控制原理
      • 2.1 磁的问题
      • 2.2 电的问题
    • 3. 如何获取 `I_feedback` ?
    • 4. 如何调整 `I_feedback`?
    • 5. 总结

1. 前言

在这之前,我写了三篇关于直流无刷电机 FOC 矢量控制的文章,从理论驱动原理到实际控制实现。三篇博客发布后,受到大家的广泛好评,我也受到大家很大的鼓舞,回顾之前的三篇文章以及结合各位粉丝的留言意见,我觉得对于FOC的分享还可以有所补充,故又抽时间整理了此篇博文,希望对有幸阅读到此篇文章的你有所帮助。

在之前的写的那几篇文章中我们通过数学以及物理推导,详细阐述了FOC的理论以及实现过程,基本原理简单但内容较为深入;而在此篇博文中,我将从另外一个角度,站在更上层的视角分享FOC的实现原理,我将此篇文章称之为《直流无刷电机FOC控制原语》,其目的是让更多人可以快速理解什么是FOC控制,FOC控制是如何实现的,读完此篇文章,你将如同拿到了一张沙漠里的地图,帮助你快速建立起FOC控制的一个完整概念,让你学习FOC过程中不再迷失方向!

2. FOC控制原理

2.1 磁的问题

关于直流无刷电机的FOC控制其实很简单,整个核心其实就是在下面这一张图里面:
在这里插入图片描述

FOC 矢量控制原理如上图所示,我们已采用转子采用永磁体的电机举例,其转子上的多对磁铁最终会产生一个特定的合成磁场,也就是我们上图中的转子磁场。

而实现FOC控制,其本质就是通过控制U V W三相的通电顺序,根据电生磁的物理特性,产生一个上图中的合成磁场,此合成磁场与转子磁场需要刚好呈90°角时才能使得磁力的做功最大。

但是电机不是一直不动的,电机一直在转动,也就是转子在转动,对应的转子磁场也就在转动,因此我们需要做的是,不断的调整我们的合成磁场的方向,以保证合成磁场一直与转子磁场呈90°,保证磁力做功最大。

但是在实际中,我们往往不能向控制通电一样很方便的直接控制磁场的以及直接检测磁场,但根据物理学基础,可以电生磁,也可以由磁生电。故我们可以将磁的问题转换到电上面去,通过控制电进而控制磁,从而最终实现我们的无刷电机矢量控制。

2.2 电的问题

在这里插入图片描述

我们将磁的问题转化成电的问题,如上图,乍一看看不懂,没关系这很正常,慢慢看完后面的内容你就懂了!

结合上述图,我们通过问答的方式帮助讲解几个关键的问题,如下:

  • FOC矢量控制的本质?
    • 控制电机内部的磁场,通过控制U V W通电产生一个合成磁场,通过磁力吸引转子磁铁转动。转子磁铁可以是永磁体;也可以电磁场,所谓电磁场也就是由线圈绕制,通过线圈通电产生。
  • 磁场如何控制?又如何检测?
    • 直接检测和控制磁场都是复杂且困难的,但我们可以通过别的方式实现;从上述描述可知,磁场是我们通过控制电产生的,同样反馈我们也可以通过检测电信号实现;故磁的问题可以通过转变为电的问题来实现。
    • 最终控制磁场变成了控制电流,所以FOC矢量控制的本质又可以转变为:
      • 根据反馈电流 I_feedback 修正我们的输出已控制反馈达到 I_target
  • 如何控制输出?
    • 通过调节合成磁场的大小以及方向调整输出
  • 如何调节合成磁场?
    • 通过控制电机U V W三相通电,根据电生磁的基本物理特性,通过控制通电顺序及时间,每次通电都会产生一个磁力,我们可以将其用矢量表示,而通过矢量的合成(矢量相加)即可得到我们的最终需要的合成磁力
  • 如何精准控制使得反馈 I_target 刚好等于或近似等于我们的目标 I_feedback
    • 此处可使用适当的算法实现,最常用的也就是PID控制算法

自此,如何实现FOC矢量控制的问题就转变为了:如何获取 I_feedback 以及如何调整 I_feedback

3. 如何获取 I_feedback

获取 I_feedback 呢?其实这个很简单,也就是几个坐标系统转换的问题,怎么转化呢?其实就是高中力的分解与合成。

获取 I_feedback 主要分为以下几大步骤:
(此处对于电流采用方案不做过多讲解,本篇博文重点讲述实现原理)

  1. 通过电流检测IC或者电阻采样等方案,我们可以得到U V W三相的电流,此时的U V W三相电流位于U-V-W 三相坐标系;根据无刷电机特性,电机转动时的 Ia Ib Ic 将呈正弦变化
    在这里插入图片描述

  2. 之后我们将 U V W三相电流通过 clark变换 ,转化到 α-β 直角坐标系,将U V W三相在α-β 直角坐标系上进行 “力的分解” 得到
    在这里插入图片描述

  3. 此时在 α-β 直角坐标系 中,Iα 和 Iβ 仍然呈线程正弦变化,呈现出正弦变化的数据不利于我们进行算法计算,我们需要想办法将其转化为“常数”,这样才有利于我们计算
    在这里插入图片描述

  4. 电机转动时,Iα 和 Iβ 仍然呈线程正弦变化,且与角度有关,那如果我们将 Iα 和 Iβ 所在的 α-β 直角坐标系和角度结合起来,将 α-β 直角坐标系 跟着电机转子角度一起转动,那么在旋转的 α 和 β 轴上的分量会发生怎样的变化呢?因此我们将 Iα 和 Iβ 分解到旋转的 q_d 旋转坐标系上,这就是 park变换
    在这里插入图片描述

  5. 经过 park变化 之后,我们发现之前呈现的 Iα 和 Iβ 分解到 q_d 旋转坐标系 中的 Iq 和 Id 之后,Iq 以及 Id 不再呈正弦变化,变为一个常数。

  6. 此外,由于 q_d 旋转坐标系 是跟着转子一起转动的,d轴方向将一直与转子磁场方向平行,而q轴方向将一直与合成磁场方向在平行!

  7. 还记得我们前面说过:为了使磁力做功效率最大,我们需要尽可能的使得合成磁场方向与转子磁场方向垂直,因此我们只需要尽可能控制 Id 为0 使得效率最大,控制 Iq 大小进而控制磁力大小,进而控制电机转速即可!

整个完整过程如下:
在这里插入图片描述

上述变化中虽然没有提到 I_feedback,但是其实一直都是围绕着 I_feedback 展开,经过 Park变化 之后的 IqId 不就是 I_feedback 吗!( I_feedback是一个抽象概念,而Iq和Id是其实例罢了,我们可以将 IqId 分别称之为 Iq_feedback, Id_feedback )

4. 如何调整 I_feedback

经过坐标变化之后拿到了 Iq 和 Id,也即获取了 I_feedback,那我们又是如何调节 I_feedback的呢?

我们先回顾一下我们前面讲到的 “如何调节合成磁场”(见2.2章节) :

  • 通过控制电机U V W三相通电,根据电生磁的基本物理特性,通过控制通电顺序及时间,每次通电都会产生一个磁力,我们可以将其用矢量表示,而通过矢量的合成(矢量相加)即可得到我们的最终需要的合成磁力

因此,我们通过控制 U V W三相的通电顺序以及对应的通电时间,我们便可以控制合成磁力的大小及方向F_setting
在这里插入图片描述
在上图中,我们可以发现,F_setting 并不是直接等于 F_target,这是因为电机在运转时通常会负载等情况,因此会存在一个阻力 f,因此 F_target = F_setting + f

然后实际中,阻力 f 是不确定的,因此对于 F_setting 我们需要根据阻力 f 的变化来实时调整,此处我们引入 PID 控制算法对 F_setting 的输出进行控制以达到更好的效果,使得F_target始终保持恒定,此时电机呈现出来的现象即:电机以一个稳定的转矩在转动

那么 F_setting 又如何实现呢?

F_settingF_feedback 一样是一个抽象的概念,其实例对应的即 Uq 和 Ud

  • Uq 位于 q_d 旋转坐标系 的 q 轴上,Ud 位于 q_d 旋转坐标系 的 d 轴上
  • Uq 大小由 Iq_feedback 以及 Iq_target 经过 PID运算得到,Ud 大小由 Id_feedback 以及 Id_target 经过 PID运算得到
  • 其中 Iq_target 以及 Id_target 对应的就是 F_target
  • 电机转动时,输出的力矩也即 Iq_target
    在这里插入图片描述

经过PID计算之后,得到了在 q_d 旋转坐标系 上的 Uq 和 Ud 之后,如何作用与我们最终的 U V W通电顺序组合和时间呢?

将 Uq 和 Ud 转化到最终的 U V W通电顺序组合和时间需要经过两个步骤:反 Park 变化 以及 SVPWM生成

  1. 反 Park 变化:同样还是“力的合成与分解”,将位于q_d 旋转坐标系 上的 Uq 和 Ud 分解到 α-β 直角坐标系
    在这里插入图片描述

2.其中 Utarget 即为我们最终需要输出的目标矢量
在这里插入图片描述

  1. 注意得到 Uα 和 Uβ 之后,并不是直接继续进行 反clark变化 噢,而是进行 SVPWM 计算,所谓SVPWM,核心原理如下:
    • 根据 U V W三相的不同通电顺序组合(每种组合每项都会有电流流过,总共存在6种组合),得到6种不同方向的基础磁力矢量,六个不同方向的矢量将其划分为6个扇区。

    • 在这里插入图片描述

    • 根据 Uα 和 Uβ 的值的比例以及大小,可以推算出 Utarget 位于哪个扇区,从而可知 Utarget 将由哪两个基础矢量合成,以及对应的矢量时间

    • 在这里插入图片描述

    • 而基础矢量我们是可以通过控制 U V W 的不同通电顺序得到的,故我们可以通过控制 U V W采用不同的通电组合、通过控制通电时间完成实现矢量 Utarget 的合成。

5. 总结

以上便是关于直流无刷电机矢量控制FOC控制算法的实现原理啦,我将其称之为直流无刷电机FOC控制原语,相信有了这份原语,大家对于FOC的原理会有清晰的了解,这也是我编写此专栏的意义。

欢迎大家有疑问在评论区留言讨论,当然本文中没有对底层细节的实现过程以及细节理论部分进行详细介绍,想深入了解并自己付诸实践的同学,可以阅读我之前编写的几篇文章:

  • 专栏:电机控制专栏(点击跳转)

  • 博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(一)(点击跳转)

  • 博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(二)(点击跳转)

  • 博文:直流无刷电机FOC控制算法 理论到实践 —— 实践(点击跳转)

  • 博客主页:爱出名的狗腿子(点击跳转)

😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃


创作不易,转载请注明出处!

关注、点赞+收藏,可快速查收博主有关分享!


😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃

这篇关于直流无刷电机FOC控制原语的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

【电机控制】数字滤波算法(持续更新)

文章目录 前言1. 数字低通滤波 前言 各种数字滤波原理,离散化公式及代码。 1. 数字低通滤波 滤波器公式 一阶低通滤波器的输出 y [ n ] y[n] y[n] 可以通过以下公式计算得到: y [ n ] = α x [ n ] + ( 1 − α ) y [ n − 1 ] y[n] = \alpha x[n] + (1 - \alpha) y[n-1]

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—10.控制节点-Heat服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版