首页 > 其他分享 >无刷电机FOC控制(一)

无刷电机FOC控制(一)

时间:2024-09-12 18:54:04浏览次数:5  
标签:控制 电机 MOS 无刷电机 转子 FOC 电流 坐标系

前言

无刷电机是一种典型的机电一体化产品,它以电子换向取代了传统有刷电机的机械换向,具有众多显著优势。

从结构上看,无刷电机主要由定子和转子组成。定子包含绕组等部件,转子通常由永磁体构成。无刷电机的工作原理是通过特定的电子控制器,按照一定的顺序切换定子绕组中的电流,从而产生旋转磁场,驱动转子旋转。

与有刷电机相比,无刷电机具有更高的效率、更长的使用寿命、更低的噪声和更小的电磁干扰。在众多领域得到了广泛应用,如航空航天模型、电动车、工业自动化设备、医疗器械等。在航模领域,无刷电机以其高功率密度、精准的调速性能和可靠的运行,成为了航模爱好者的首选动力源。

无刷电机的发展得益于电子技术的不断进步,随着控制技术的日益成熟,无刷电机的性能还在不断提升,为各个行业的发展提供了强大的动力支持。

宏观上区分,我们也可以直接把电机分为定子部分和转子部分。

  • 定子就是有线圈绕组,固定不动的部分;
  • 转子就是电机旋转的部分,用于输出电机的转动和扭矩。

而进一步的,无刷电机可以分为内转子和外转子两种。

  • 内转子无刷电机就是转子在内部;
  • 外转子无刷电机就是转子在外面,我们常见的无刷电机。比如航模无刷电机,就是外转子无刷电机。

FOC 的基本原理是通过对电机的定子电流进行解耦控制,将其分解为产生磁场的励磁电流和产生转矩的转矩电流。然后,分别对这两个电流进行独立控制,以实现对电机的精确控制。

具体来说,FOC 通过测量电机的三相电流和转子位置信息,利用坐标变换将三相电流转换为旋转坐标系下的直轴电流(Id)和交轴电流(Iq)。其中,直轴电流用于控制电机的磁场强度,交轴电流用于控制电机的转矩。通过调节直轴电流和交轴电流的大小,可以实现对电机的转速、转矩和位置的精确控制。

硬件电路部分

无刷电机与有刷电机的主要区别在于无刷电机没有电刷。有刷电机可通过机械结构实现电流换向,而无刷电机需借助如 MOS 管这样的器件进行电子换向。MOS 管本质上是一种开关,可像水龙头控制水流通断一样控制电流通断。

就像上面这张图, 通过控制不同MOS管的通断组合, 电机线圈电流大小和方向就能够被改变。图中的Q0-Q5就是MOS管的代号,而右边的这个带有三个线圈的就是星形无刷电机的连结方式。 

那么怎么让这个电机转动起来呢?

很简单,如上图所示,我们只需要接下来把Q1管和Q4管打开, 那么继续根据有右手螺旋定则,此时磁场的方向进一步发生改变,转子磁极发生进一步旋转。因此,只需要交替的开关不同的MOS管,就可以实现电机磁极的交替运动,这就是无刷电机旋转运动的原理。 

瞧,上面的这张图详尽地总结了转子磁铁在旋转一周的过程中各个相的通电状况。只需交替地开启和关闭这些不同相的 MOS 管,便能让电机顺畅地转动起来。当 MOS 管的开关速度加快时,转子的转动也会随之加速;而当 MOS 管的开关速度减慢时,转子的转动速度亦会放缓。

由此,我们可以归纳出这样一条规律:对电机的控制,本质上就是对 MOS 管开关规律的掌控。而 MOS 管的开关规律需要借助单片机程序来进行控制,正因如此,我们的 FOC 控制算法便应运而生。FOC 控制恰似一种对电机运动模型的精心抽象与简化,进而能够有规律地控制各个 MOS 管的开关与通断过程。

 

FOC软件控制原理 

我们已然明晰了电机控制的硬件过程,即通过交替地开关各个相的 MOS 管,从而实现电机的转动。

那么,我们可以依据期望的电机运行状态,借助一个电机运行模型,来实现交替开关各个 MOS 管的算法。此算法便是 FOC 算法,它还有一个名称叫做磁场定向控制算法。而克拉克变换与帕克变换,则是磁场定向控制算法的两大核心所在。

克拉克变换

在电机控制中,为了实现对电机的精确控制,需要将电机的三相静止坐标系(a-b-c 坐标系)中的变量转换到两相静止坐标系(α-β 坐标系)或两相旋转坐标系(d-q 坐标系)中进行处理。克拉克变换的主要目的就是将三相静止坐标系中的电流、电压等变量转换到两相静止坐标系中,以便进行后续的控制算法处理。

 

克拉克变换的公式如下:

基于等赋值变换,我们就能够得到α、β相位与i_{a},i_{b},i_{c}的关系,已知等赋值变换式:

最后综合,可以得到了列出​电流i_{a},i_{b},i_{c}I_{\alpha },I_{\beta }电流的关键关系式,总结如下:

可以明显看出,在上述式子中,我们消除了变量i_{c}。这是因为基于基尔霍夫电流定律的存在,我们无需知晓所有三相电流。实际上,仅需知道两相电流,便能够求解得到另外一相的电流。

克拉克逆变换

三矢量经过克拉克变换后被转换至二维坐标平面。那么,是否存在一种方法能够将二维坐标进行升维原来的i_{a},i_{b},i_{c}?这一过程便被称为克拉克逆变换。

由上我们了解了i_{a},i_{b},i_{c}I_{\alpha },I_{\beta }电流的关键关系式:

 由此关系式,可将i_{b}关系式算出:

i_{b}=\frac{\sqrt{3}I_{\beta }-I_{\alpha }}{2}

最后,还是根据基尔霍夫电流定律:i_{a}+i_{b}+i_{c}=0,可得到i_{c}关系式:

i_{c}=\frac{-I_{\alpha }-\sqrt{3}I_{\beta }}{2}

则克拉克逆变换三式皆得,总结如下:

i_{a}=I_{\alpha }

i_{b}=\frac{\sqrt{3}I_{\beta }-I_{\alpha }}{2}

i_{c}=\frac{-I_{\alpha }-\sqrt{3}I_{\beta }}{2}

通过克拉克变换对三相电流波形的降维,克拉克逆变换对二维坐标升维,我们就可以以简单的二维坐标形式描述三相电机运转时的电流情况。

帕克逆变换

然而,在此处我们发现,降维后虽然少了一个变量,但只要电机转动,这个变量I_{\alpha },I_{\beta }就依然在持续变化。那么,有没有办法能够用一个定值来描述无刷电机的旋转呢?换言之,能否对这个电机系统进行进一步的降维,使得我们甚至无需考虑不断变化的这个变量I_{\alpha },I_{\beta },而仅需一个定值就能描述整个电机系统的转动状态呢?答案是肯定的!帕克变换正是为了实现这件事!

帕克变换在此过程中的主要目的是将电机在三相静止坐标系(a-b-c 坐标系)中的变量转换到两相旋转坐标系(d-q 坐标系)中。在这个新的坐标系下,电机的数学模型得以极大简化,从而使控制策略的设计和实现更加容易。具体而言,通过帕克变换,原本复杂的交流变量被转换为直流量,这就为采用成熟的直流控制方法来控制交流电机奠定了基础。帕克变换就是能够帮助我们求得各种旋转情况下的I_{\alpha },I_{\beta }

帕克变换的公式如下:

其中,、是经过克拉克变换后得到的两相静止坐标系中的电流分量,、是两相旋转坐标系中的直轴和交轴电流分量,是转子的电角度。 

因此,在知道电角度的前提下,我们就可以用I_{q}​,I_{d}坐标系上的定值来描述电机的旋转。

根据矩阵乘法,取逆,我们可进行帕克逆变换,也就是知道I_{q}​,I_{d}​值和电角度的前提下,反求I_{\alpha },I_{\beta },式子如下:

由此得出结果:

在实际的 FOC 应用中,电角度是通过编码器实时求出的,所以是已知量I_{q}​和I_{d}可以合成一个矢量,由于电角度(旋转)的存在,这个合成矢量可以被看作是一个不断旋转的矢量。在通过I_{q}​和I_{d}以及电角度求出I_{\alpha },I_{\beta }之后,我们便可以借助前面提及的克拉克逆变换来求得i_{a},i_{b},i_{c}的波形,而这正是 FOC 的基本过程。

总结

其中,帕克变换可以对用户输入I_{q}进行变换,依据电角度算出相关量I_{\alpha },I_{\beta }。接着,通过克拉克逆变换能够求出三相电流i_{a},i_{b},i_{c}。最后,这三个量能够作为控制指令输入到电机控制器硬件中,以实现对电机的控制。

后续更新FOC速度控制代码撰写和控制框架流程。

标签:控制,电机,MOS,无刷电机,转子,FOC,电流,坐标系
From: https://blog.csdn.net/m0_67278762/article/details/142179939

相关文章

  • 让小爱音箱播放电脑/NAS上歌曲,支持自动从哔哩哔哩/油管下载歌曲,无需刷机。支持语音控
    小米AI音箱很多人都有,但使用中播放歌曲时总是提示仅能播放试听版,不能完整听歌,很烦人。今天介绍的方法就是要彻底解决这个问题,实现让小爱AI音箱能够播放本地歌曲,本地没有的歌曲还能自动从网上搜索下载的功能。已测试支持的设备:型号名称L06A小爱音箱L07ARedmi小爱音......
  • 基于MicroPython的ESP8266控制RGB颜色传感器识别颜色的设计方案
        以下是一个基于MicroPython的ESP8266控制RGB颜色传感器进行颜色识别的设计方案:一、硬件准备1. ESP8266开发板(如NodeMCU)。2. RGB颜色传感器(例如TCS3200传感器)。3. 面包板。4. 杜邦线若干。5.3.3V直流电源二、硬件连接1. 将ESP8266的3.3V引脚、GND......
  • 基于MicroPython的ESP8266控制舵机的设计方案
        以下是一个基于MicroPython的ESP8266控制舵机的设计方案: 一、硬件准备1. ESP8266开发板(如NodeMCU)。2. 舵机(如SG90)。3. 杜邦线若干。 二、硬件连接1.将5V直流电源连接到舵机的电源引脚(通常为红色线)。2.将3.3V直流电源连接到ESP8266的3.3V管脚。3......
  • FlexibleBI智能SPC系统:提升效率,优化质量控制的利器
    在现代工业中,质量控制是决定产品合格率和企业竞争力的关键环节。为了应对生产流程中的复杂数据管理需求,我们推出了一款集成全面功能的智能SPC(统计过程控制)系统,旨在帮助企业高效地管理、分析和优化生产质量。以下是这款SPC系统的核心特点及优势。FlexibleBI一键生成全面SPC分......
  • 从站式IO系统:解锁智能制造的分布式控制奥秘
    在当今的工业自动化领域,从站式IO(Input/Output)系统作为一种高效的解决方案,正在逐渐成为分布式控制系统中的关键组成部分。这种系统通过优化数据交换和任务分配,极大地提升了工业生产的智能化和效率。本文将为您科普有关从站式IO的定义及分类。什么是从站式IO:从站式IO(Input/Output)是......
  • 所有控制文件丢失后的恢复
    使用备份控制文件进行恢复 a.准备数据库 createtabletb01(idint); insertintotb01values(1); insertintotb01values(2); commit; b.备份控制文件 SQL>selectnamefromv$controlfile; NAME -------------------------------------------------------......
  • VisualStudio 通过配置 DefaultXamlRuntime 属性 让控制台项目里的 XAML 应用上智能提
    本文记录一个VisualStudio黑科技,通过配置DefaultXamlRuntime属性,即可让非WPF或WinUI或MAUI等系列类型的项目也可以拥有XAML的智能提示,智能提示方式和WinUI智能提示行为相同比如说在一个控制台项目里面,我期望从控制台开始,定制自己的UI框架,比如说到现在还没有支持......
  • 【linux】进程控制(2)
     3.进程等待1.是什么通过系统调用wait/waitpid对子进程的退出状态进行检测和回收的功能2.为什么僵尸进程无法杀死,通过进程等待来杀掉它,进而解决内存泄漏的问题(一)进程等待的方法 a.wait:代码wait:等待任意一个子进程注意:如果子进程不退出,父进程调......
  • 通过git进行本地项目代码备份与版本控制
    在本地进行项目开发时,由于代码需要进行多次迭代,因此备份代码是不可缺少的。因此使用版本控制系统来进行代码备份是很有必要的。本文将介绍有关git配置gitee以及github的相关内容,并对一些问题做出相应解释。1.git工具1.1git介绍Git是一个开源的分布式版本控制系统,可以有效、......
  • scanpy计算n_genes_by_counts和total_counts等质量控制指标
    利用scanpy计算adata的obs中的质量控制指标(n_genes_by_counts,total_counts等参数指标)⚠️注意:只是计算相关质量控制指标,并不会筛选/过滤数据。需要用的包:scanpy和anndata导入包和读取adata数据importanndataimportscanpyasscimportpandasaspdimportnumpyasnpa......