FOC控制原理完整

FOC控制原理完整

ID:83088610

大小:2.33 MB

页数:15页

时间:2022-12-19

上传者:187****6550
FOC控制原理完整_第1页
FOC控制原理完整_第2页
FOC控制原理完整_第3页
FOC控制原理完整_第4页
FOC控制原理完整_第5页
FOC控制原理完整_第6页
FOC控制原理完整_第7页
FOC控制原理完整_第8页
FOC控制原理完整_第9页
FOC控制原理完整_第10页
资源描述:

《FOC控制原理完整》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

FOC控制原理FOC控制原理简介电机分为有刷电机和⽆刷电机,这⾥主要描述的FOC控制算法主要是针对⽆刷电机的控制,⽆刷电机⽤于飞⾏器或者四⾜狗、机械臂等这种⾼精度的环境当中。玩过四轴的都⽐较清楚在,四轴飞⾏器中⼀般采⽤电调的驱动⽅式,那么电调和FOC直接有什么优缺点呢?电调⽐较适⽤于电机告诉旋转的场景,⽽对低速的控制确实乏⼒,⽽FOC⽆论在⾼速还是低速的场景下都适⽤FOC⽤途之⼀,⽐如下⾯的狗⼦:⼀.电机的旋转原理1.电机旋转的基本知识磁铁的分N和S级,同性相斥异性相吸的原理,那么将两个磁铁放在⼀起会出现什么现象呢?如下图,若拖动下⽅的磁铁进⾏旋转,那么由于磁场的原因,上⽅的磁铁也会跟着进⾏旋转那么两个磁铁在何时⼒矩(⼒矩在物理学⾥是指作⽤⼒使物体绕着转动轴或⽀点转动的趋向)最⼤呢?如下图,当两个磁铁呈直⾓时,⼒矩最⼤(可以简单的认为相互作⽤⼒最⼤)。

1当将上⾯两个磁铁中下⽅的磁铁换成电磁铁,电磁铁是物理不旋转⽽是形成的磁场的进⾏旋转,那么是不是与上⽅的效果⼀样,带动另⼀个磁铁进⾏旋转1.电机旋转的⽅式a.电磁铁的构成单个通电线圈如下图所⽰,由右⼿螺旋定理可以得出该线圈磁场的⽅向是向上的,那么这⾥只有⼀个⽅向的磁场,那么如何增加旋转磁场的⽅向呢?简单的办法就是增加线圈,并且线圈的朝向不同即可,这⾥我们以三相电机为例⼦进⾏描述,三相电机就是采⽤如下图的⽅式,采⽤三个线圈,每个线圈的⽅向间隔120度由于减少硬件电路驱动(H桥)的数量,因此⼀般是将三个线圈的⼀端进⾏相连接,组成了三相星型结构,如下图,那么为什么会这样链接呢?每个线圈单独供电是否可以呢,当然是可以的,具体原因下⾯会描述

2b.H桥驱动电路驱动线圈驱动线圈供电,⼀般使⽤H桥驱动电路,那么我们先看⼀下如何驱动⼀个线圈的,如下图H桥由4个MOS管组成,当A和B‘打开时,电流由左上⽅流⼊线圈经由B’流⼊负极,也就是图上的红⾊箭头的⽅向,同理打开B和A'同时打开,电流就是蓝⾊箭头的⽅向,这样就能控制线圈产⽣不同⽅向的磁场了。那么如何控制上⽅线圈产⽣的磁场的⼤⼩呢?转换来看也就是如何控制加在线圈两侧的电压的⼤⼩呢?这⾥可以使⽤⽅波来控制MOS管的导通,如时间周期T,在T/2时间打开A和B',剩下的T/2关闭A和B',这样的话就相当于0.5VDC的电压加载到线圈上了(若是T时间均打开那么线圈上的电压就是VDC),线圈上的电压可能是0~0.5VDC之间不断的跳动,但是线圈的电流是接近连续的,因为这是电感,如下图,若是电压变动很快并且电感⾜够⼤,理论上是可以做到电流连续的

3由上⾯的H桥驱动电路可以知道,⼀个H桥由4个MOS管构成,那么若是三个线圈就需要12个MOS管构成,这样⾮常的浪费,**这也是为什么要将三个线圈连在⼀起组成星链结构的原因**。ps:在上⾯的H桥驱动电路上桥臂和下桥臂在同⼀时间只有⼀个能打开,这是为什么呢?因为两个同时打开就短路了。所以这种情况是不允许发⽣的。正是为了避免上⾯的情况发⽣,所以才有了**死区**时间的概念,死区时间是PWM输出时,为了使H桥或半H桥的上下管不会因为开关速度问题发⽣同时导通⽽设置的⼀个保护时段,所以在这个时间,上下管都不会有输出。那么H桥驱三相星链线圈是怎么样呢?如下图:

4定义MOS管开关状态如下:上桥开通下桥关断定义为状态1上桥关断下桥开通定义为状态0这样,三组半桥就⼀共有8种组合⽅式,编码分别为:**000**、**001**、**010**、**011**、**100**、**101**、**110**、**111**c.三相线圈产⽣的磁场0电流状态:上⾯的8种组合中有000和111状态,⽐较明显看出当在这两个状态时三相线圈是没有电流经过的,这个状态我们称为0电流状态。上⾯的8种状态除去两个0电流的状态,其余6种都会产⽣磁场,并且相应的磁场⽅向分别为:

5其中橘⾊箭头的⽅向和电磁铁形成磁场⽅向⼀致,但是这⾥我们把橘黄⾊箭头称呼为**电压⽮量的⽅向**,因为这⾥我们加载的是电压⽅向(1图中A指向B和C)由于是稳态的,所以电流⽅向也是这个⽅向,所以磁场⽅向和橘⾊箭头⼀致了<右⼿螺旋法则>。所以最终产⽣的磁场⽅向汇总如下:d.电磁场牵引转⼦最优的状态在上⾯已经提到当电磁铁的⽅向和转⼦(永久磁铁)的⽅向呈90度的时候,⼒矩最⼤,如下图,

6此时转⼦会向着电磁铁的⽅向旋转,此时若转⼦受到牵引转动了θ⾓,与此同时电磁铁也按照同⽅向转动了θ⾓,那么电磁铁的⽅向始终和转⼦的⽅向垂直,这样转⼦就会不断的进⾏旋转了并且⼒矩始终是最⼤的,这就好⽐下图:**⽑驴⼀直跟着胡萝⼘的位置进⾏转动,但是⽑驴和胡萝⼘的位置确不会被改变**现在我们已经知道我们需要的是什么了?**那就是⼀个旋转任意⾓度的磁场并且⼤⼩可控**,但是由上⾯描述三相线圈只能⽣成6个⽅向的电压⽮量(电压⽮量的⽅向和磁场⽅向相同),那么如何根据这6个电压⽮量合成任意⾓度的电压⽮量(磁场⽅向)呢?这就是SVPWM要⼲的事情了SVPWM:空间⽮量脉宽调制(SpaceVectorPulseWidthModulation)SVPWM的基本思想就是根据上⾯6个磁场⽅向的来合成任意⾓度的磁场⽅向a.⽮量的合成初中数学的知识回顾如下我们想产⽣(0,1)的⽮量,其实可以看作是:

71可以看作周期T的时间内有T这么长时间作⽤在X轴上,Y轴作⽤时间0我们想产⽣(1,0)的⽮量,其实可以看作是:我们想产⽣(0.5,0.5)的⽮量,其实可以看作是:其中这⾥0.5可以看作周期T的时间内有0.5T的时间作⽤在X轴上,也有0.5T的时间作⽤在Y轴上;根据上⾯的例⼦,我们可以固定这样的表达式那么若是想产⽣(0.25,0.25)这个⽅向的⽮量,该如何表达:这⾥加⼊了零向量,这⾥向量(0.25,0.25)和向量(0.5,0.5)⽅向相同,但是赋值不⼀样,但是总时长加起来还是1**可以得出⼀句话就是幅度要低,拿0来抵<上⾯的000和111状态派上了⽤场>**。b.SVPWM中的电压⽮量合成在这⾥我们可以认为电压⽮量⽅向和磁场⽅向相同(**因此本节也可以理解为磁场⽅向的合成**)⽮量控制,就是要通过6个⽅向的空间⽮量电压作为基向量来合成任意⽮量,基向量的选择是选择当前扇区的两个基向量。这⾥我们以第⼀扇区为例,当前需要合成的⾓度为θ,对应的基向量分别为U6和U4,如下:由上图可以看出,通过U4和U6显然是能够合成Uref的,将要⽣成的Uref向量分别投影到U6和U4上,由正⽞定理(**各边和它所对⾓的正弦值的⽐相等**)可以得出如下恒等式:(T6/T)*U6:可以理解为要产⽣Uref这个电压,U6要产⽣多少电压因为|U6|=|U4|=2Udc/3(Udc是供给电压,由欧姆定律计算得出),因此可以得出如下T4和T6的时间:其中参数m表⽰为SVPWM的调制系数(调制⽐):上⾯已经描述过,因为我们需要根据需要控制幅值,因此需要零⽮量的参与,因此零⽮量的时间为总时间T减去T4和T6的作⽤时间:这⾥为什么是1/2,是因为我们要插⼊两个零⽮量,所以时间要平分给两个零⽮量,那么为什么要插⼊两个零⽮量呢?只⽤⼀个零⽮量可以吗?理论上是可以的,但是会对MOS管的开断会产⽣较⼤的影响,影响MOS管的寿命,所以我们希望尽量减少MOS管的开关次数,因此⽬前设计出了7段式SVPWM的调制法,如下:

8解释⼀下该图的参数,A、B、C代表的是H桥驱动电路上的控制端信号,同时我们通过在合理的位置插⼊两个零⽮量,并且对零⽮量在时间上进⾏了平均分配,以使产⽣的PWM对称,从⽽有效地降低了PWM的谐波分量。同理可以得出其他扇区的切换顺序如下,为什么有这样的顺序呢?**对应到MOS管的开关上来看就是每次状态的切换只要⼀个MOS进⾏切换,极⼤的降低了MOS管的损耗**重新回到上⾯的T4和T6的公式中,得出的公式如下:其中因此到这⾥,SVPWM的⼯作完成了,我们得到了每⼀时刻所需要的空间电压⽮量以及它们持续的时间,在处理器中赋值给对应通道的捕获⽐较寄存器产⽣相应的三个PWM波形,控制MOS管的开关,**进⽽产⽣我们期望的电压、电流、⼒矩。**但上⾯的公式在实际的控制中并不使⽤,因为其还是太过于复杂,因为牵扯到了⾓度的变化,该种算法是⽼式的SVPWM的思路,那么现在是如何得到每个⽅向的Tx(基向量的作⽤时间)呢?如下⼀节:c.SVPWM和FOC的联系那么FOC和SVPWM是如何对接的?⾸先理解前后关系:FOC的输出是SVPWM的输⼊,SVPWM输出是三相电压的占空⽐,也就是最终设置到计时器中的⽐较寄存器的值。那么FOC输出的是什么呢?因为后⾯会介绍,所以这⾥直接给出结论是Vα和Vβ,这个也与直轴和交轴⽅向相同的两个电压⽮量直轴:转⼦N到S的⽅向交轴:与直轴垂直,维持转⼦转动的⽅向,在电机转动的过程中,交轴⽅向的⼒是维持转⼦转动的,⽽直轴上的⼒对转动⽆效果,因此我们应该尽⼒让其为0.

9那么该处假定已经知道了FOC输出的Vα和Vβ,那么该如何得到T4、T6、T0、T7,从⽽更新寄存器控制PWM的输出呢?继续贴出上⾯讨论的在第⼀象限的Uref,如下(Ts和上图中的T是⼀个意思,都是表⽰PWM输出的完整周期时间):电压⽮量U4(100)和U6(110)的Uout,分别是2/3Udc和2/3Udc*(cos(π/3),sin(π/3))->⽮量1.⾸先上式表⽰的是U4和U6⽅向的总电压,这个电压如何计算得出来的呢?三相线圈的等效电阻如下:由上⾯的电路我们可以根据电路原理和⽮量合并等原则算出各个⽅向输出的电压,这⾥不再进⾏计算直接给出结论,如下图:其中红框标出来的就时第⼀象限所需要的U6和U4的总电压

10其中U4(1,0,0)=2/3Udc(α⽅向),⽽U6=2/3Udc*e^(j\*π/3),这是个⽮量表达形式,我们将其变⼀下形:根据虚数变换公式可以将e^(j\*π/3)=cos(π/3)+j*sin(π/3),⽤坐标表⽰则就是**(cos(π/3),sin(π/3)),这样就很清晰了,其表⽰的是α和β轴对应的值,那么FOC输出的就是α和β轴向的值,这样就能得到了上⾯的值。我们将U4和U6分和Uref别投影到α和β轴上,那么就会出现如下恒等式:那么由左侧和右侧等式可以得出如下公式:其中⽐例系数为*K*=√3*Ts*/Udc,该是个固定的值。因此上⾯就建⽴了T4、T6、T0和T7与FOC输出的Uα、Uβ的关系了。上⾯仅限于第⼀区域的计算公式,其他扇区的公式不进⾏推倒,直接给出结论:这样我们拿到FOC的输出结果Uα、Uβ,然后执⾏如下步骤:1.根据该值判断合成的⽮量所在的扇区2.然后利⽤对应扇区的公式计算Tx、Ty、Tz等值,然后进⾏变换后设置到PWM控制器的⽐较值中,即可产⽣我们想要的波形,从⽽产⽣定向的磁场⽅向这样就能完成电机的⽮量控制,SVPWM的⼯作就已经完成了上⾯已经得到根据FOC的输出能够很轻易的得到需要设置寄存器的值以来控制电机,那么下⾯我们来分析这个FOC是如何得到这个Uα、Uβ的⼆.FOC控制原理

11当我们拿到⼀个三相⽆刷电机时,当⼿转动电机然后⽤⽰波器观察电机的三根信号线,能够看到输出的是三个相位相差120度的正弦波形,因为电动机反过来就是发电机。因为控制常⽤的就是闭环控制,⽽检测正弦波⽐较困难,那么FOC主要做的⼯作就是解耦,就是将复杂的信号拆解成⽐较容易分析的量1.FOC控制的Pipeline这幅图是以电流闭环控制为例的,也就是让电机始终产⽣⼀个恒定的⼒矩(也就是恒定的电流,因为⼒矩和电流成正⽐)。可以看到控制器的输⼊是最左边的Iq_ref和Id_ref,两个变量经过PID控制器进⾏反馈调节,其中还涉及到⼏个变换模块,**有Park变换和Clark变换**;最后通过前⾯提到的SVPWM模块作⽤到三相逆变器上进⽽控制电机;⽽PID控制器的反馈量,是对电机输出电流的采样值。FOC控制的整个过程是这样的:1.对电机三相电流进⾏采样得到IaIbIc2.将Ia、Ib、Ic经过`Clark变换`得到IαIβ3.将IαIβ经过`Park变换`得到Iq和Id4.计算Iq和Id和其设定值Iq_ref,Id_ref的误差5.将上述误差输⼊两个PID(只⽤到PI)控制器,得到输出的控制电压Uq,Ud6.将进⾏`反Park变换`得到Uα,Uβ7.⽤Uα,Uβ合成电压空间⽮量,输⼊`SVPWM模块`进⾏调制,输出该时刻三个半桥的状态编码值8.按照前⾯输出的编码值控制三相逆变器的MOS管开关,驱动电机9.循环上述步骤2.Clark变换通过电流的采样,我们得到了三个相位相差120度的正弦波,采集电机前的电流的作⽤主要是⽤作PID反馈,以此来调整输⼊的误差。从上图可以看出,我们只需要采样两个信号线,另⼀根可以使⽤基尔霍夫定律得出(在任⼀时刻,流⼊节点的电流之和等于流出节点的电流之和,也就是说Ia+Ib+Ic=0那么将三相正选波形直接作为PID,那么这个过程⾮常的复杂,因此我们这⾥⽤⼀些算法对其进⾏转换,将采集的三相电流表⽰如下图:

12其中横坐标表⽰为α轴,纵坐标表⽰为β轴,那么此时将Ia、Ib、Ic分别投影到α和β轴上,就能⽐较轻易的得到如下恒等式:经过这样的投影,我们将Ia、Ib、Ic转换成了Iα和Iβ两个变量了,可能这样还不够直观,我们从波形上看看到底有什么变化:从上图可以看出经过上⾯的变换后,需要控制的变量从3个编程了2个了,这样的转换就称为Clack变化,但是这两个还是正弦波形,还是不好做跟踪不好做处理,最理想的跟踪变量是什么呢?肯定是直线了,下⾯我们沿着Clack变换继续进⾏处理。4.Pack变换在上⾯的Clack的输出中得到了**α-β坐标系**,若是将该坐标系旋转θ⾓,如下:经过旋转后Q-D坐标系可以表⽰成如下:Q和D可能很熟悉,那就是分别对应电机的Q轴(交轴)和D轴(直轴),θ就是转⼦转动的⾓度,也就是d-q坐标系是始终随着转⼦进⾏转动的。这个操作是可⾏的,因为我们会通过编码器输⼊转⼦的实时旋转⾓度,所以这个⾓度始终是⼀个已知数。经过这⼀步的变换,我们会发现,⼀个匀速旋转向量在这个坐标系下变成了⼀个定值!**(因为参考系相对于该向量静⽌了,Id和Iq相对于D-Q坐标系)**,这个坐标系下两个控制变量都被线性化了!接下来如果我们以Iq和Id这两个值作为反馈控制的对象,那么显然就可以使⽤⼀些线性控制器来进⾏控制了,**⽐如PID**5.PID控制

13PID是在控制领域最常的算法之,这不做过多的介绍,只介绍下PID在FOC控制系统当中的应:在FOC控制中主要到三个PID环,从内环到外环依次是:**电流环**、**速度环**、**位置环。**也就是说:我们**通过电流反馈来控制电机电流(扭矩)**->然后**通过控制扭矩来控制电机的转速**->再**通过控制电机的转速控制电机位置**。a.电流环从上图可以看出,我们上的系列的操作运算,如clack变换和pack变换最后输出的Iq和Id的值,也就是主要对采样的正弦电流进解耦,分解成径向和切向这两个向的变量:-其中Iq是我们需要的,代表了期望的矩输出-Id是我们不需要的,我们希望尽可能把它控制为0**由上图可以知道经过FOC的控制标就是将Id的电流尽量减到0,因为其对电机的转向是没有任何帮助的所以我们尽量让其控制到0**b.速度环w是电机的转速反馈,可以通过电机编码器或者霍尔传感器等计算得到,依然是使**PI控制**。注意这的w转速并不是瞬时的速率,是测了段时间取平均值的速率,因此若是在低速的情况下,速率环就不那么适了,因为平均测速法会存在常的误差(转不动或者动地很慢,编码器就没有输出或者只输出1、2个脉冲)。c.位置环

14由于去掉了速度环,这⾥的位置环我们使⽤**完整的PID**控制,即把微分项加上(因为位置的微分就是速度,这样可以减⼩位置控制的震荡加快收敛;积分项的作⽤是为了消除静态误差)。到⽬前为⽌,FOC控制⽆刷电机的驱动⽅式已经基本讲解完了,有了以上的内容就能够⾮常妥善的控制电机运转,但FOC还有⼀部分内容,那就是能量回收,该部分放到以后进⾏分享~三、参考⽂章STM32参考程序:SVPWM:⼀些开源的项⽬:MIT的机器狗的参考code

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭