FOC电机控制原理

最近在学习FOC,想通过记录的方式帮助自己进一步理解,同时也把自己对FOC的理解分享给大家,希望通过通俗易懂的方式讲清楚FOC的来龙去脉。

FOC,全称是磁场定向控制,Field-Oriented Control,顾名思义,是通过控制磁场任意方向和大小的技术来精准控制电机,从而提高电机的效率、动态响应和稳定性等。
1.电机旋转的基本知识

我在小时候就玩过电机,是四驱赛车中的关键部件,那时候我们叫马达,拆开马达可以看到中间旋转的轴上缠绕很多铜线,一般是分三组,三个方向缠绕,外壳有固定的弧形磁铁,两片电刷始终和旋转轴电接触,当给马达通电后,根据著名的定理,通电导线会产生磁场,就是电生磁,磁生电那句话,磁场会与外壳固定的永磁体发生作用力,同性相斥异性相吸,产生的作用力推动旋转轴旋转。给马达的电压越高,则流过的电流越大,产生的磁场强度就越高,马达的转速也就也快。永磁体在空间上是固定,位置不变的,在开始旋转轴旋转的时候,电刷接触旋转轴的位置也会发生变化,通过旋转轴中导线的电流方向也会发生变化,从而保持作用在旋转轴上的力是同一方向,这里不展开细说了,大概就是这个原理。

以上就是有刷直流电机的控制原理。
2.无刷电机的诞生

因为有刷直流电机结构简单,带来的功能也比较简单,通电就可以旋转,想要反转就反向通电即可,但是,因为存在电刷,在电机运行过程中会出现磨损,磨损过大会出现电接触不良,因此电刷需要定时维护更换,可靠性欠佳,此时聪明的人类发明了无刷电机:此前永磁体是外围,固定不变,中间是旋转的缠绕导线;无刷电机中变成了永磁体旋转,多组缠绕的导线固定,这样,只需要控制多组缠绕的导线产生旋转的磁场,便可以驱动外围的永磁体旋转。

到这里,就开始有了FOC的味道了。
3.FOC控制的逻辑

贯穿电机旋转的本质,就是同性相斥异性相吸,这句话要永远记住。

在无刷电机中,永磁体是旋转部件,内部的定子有很多组缠绕的导线,缠绕的导线通过电流后就可以产生磁场,电流方向不一样则磁场方向不一样,只要我们控制了电流方向,就是控制了磁场方向,那既然我们能控制磁场方向,只要我们知道了此时转子的位置,我们在对应的位置上产生磁场,就可以拉着(引导)转子旋转,在旋转的过程中我们要一直去切换多个组中的电流方向,进而保证磁场的方向在变化(旋转),才能一直保持给转子产生的力是恒定且方向不变的,如果要提高驱动的能力,那就提高电流就可以了,就这么简单。

实现上面的逻辑需要有前提条件。

第一,需要传感器,获取转子当前的位置。(这里简单拓展一下,通过传感器获取转子的位置来实现FOC控制,在行业上叫有感控制,感就是传感器,近些年随着科学技术的发展,有一种新的技术,叫做无感控制,也就是不需要专门的传感器,通过类似激励等方式,因为转子转动后再感知感应电流来推测出转子的位置,也可以实现FOC控制,之所以存在无感控制,是因为传感器也会有坏的时候,也需要定期维护,如果取消传感器,电机的可靠性将大大增加。但是无感控制也有它的缺点,就是在低速的时候,猜不准转子的位置,控制逻辑比有感的复杂。从电机的接线数量我们可以很容易区分是有感还是无感电机。如果是有感电机,因为要接收传感器信号,线的数量比较多,三相三根线,加上传感器供电和信号,以电子FOC为例,是四根线,这里也可能是其他数量。加起来就是七线。如果是无感电机,只有三根线,就只需要接电机的三相就行。所以只需要记住,接三根线的就是无感电机无感控制,超过三根的就是有感控制)

第二,需要逆变电路,就是要实现电流的正反驱动,上一时刻电流是这么流,下一时刻电流是反着流,那我们能做的就是调整电压的正负极,调整电压就是调整电流,根据著名的定律,电流等于电压除以电阻,电机中的绕线是不变的,也就是线电阻不变,要改变电流那就改变电压即可,一样的,所以需要这么一个电路,时刻可以调整电压方向,在这里就叫做逆变电路。
4.六步换相介绍

定子绕组可以简化成三相绕组,参考下图

实际的电机不仅仅是三相,为了控制更精密,实际的绕组更多更密,也是为了保证旋转更细腻。

三相绕组,就是将原本的三根独立的导线,将各自的一头连接在一起,最后只剩下三个连接点,分别是A B C,这就是三相的电气连接点,就这么简单。导线是旋转缠绕的,三根导线圈呈120°空间分布,那怎么产生任意方向的磁场呢?这就涉及到磁场矢量合成。

在三相绕组中,有六种电流情况,分别是

电流A进,BC出

电流AC进,B出

电流C进,AB出

电流BC进,A出

电流B进,AC出

电流AB进,C出。

在平面上的三相绕组,最简单的,我们能产生六个方向的磁场,间距60°,这很简单,也是著名的六步换相。只要切换逆变器按照顺序切换,将合成的磁场方向旋转起来,可以联想到,永磁体也会跟着旋转起来。但很明显这样的控制方式,太粗糙,360°只用了其中六个方向,电机转起来也会有一格一格的抖动感,不够细腻,参考下图

为了连续控制,我们要产生任意方向的磁场,不仅仅局限在六个方向。

我们要怎么产生任意方向的磁场,怎么实现?

很简单,参考PWM控制,只需要在相邻的两个磁场方向上,作用对应比例的时间,就可以模拟出来。比如有0°和60°方向的磁场,我们现在要产生30°的磁场,那利用0°和60°方向的磁场,在一个单位时间内,各作用一半,那合成的磁场矢量就是30°,这跟PWM调节是不是有异曲同工之妙?很有意思。其他角度的同理,只需要控制好相邻磁场方向的时间占比,就可以产生任意,这里是任意,任意方向的磁场。控制了方向,那磁场的幅度又怎么控制呢?还是那套逻辑,再把一个参数挤到刚才提到的单位时间中,那就是零矢量。(什么是零矢量,就是除了刚才的六个矢量,还有两个零矢量,分别是将ABC相都接正极或者都接负极,这样线圈就没有电流流过,也就没有了磁场,磁场的幅值为零。)零矢量掺杂越多,那合成的矢量幅值就越小,不是吗,答案为是的。

以上的逻辑,就是SVPWM,就是要制造无限个连续的方向,最终实现任意方向;调整磁场大小,就是插入零矢量,通过调整零矢量的作用时间,来控制幅值。

从概念来说,上面已经说完了FOC控制的原理。

5.总结

我们总结一下,我们的目的是合成任意方向的磁场来实现电机方向的无极控制,物理形态上我们至少有间隔120°的三组绕线线圈(实际中不止三组),三组绕线线圈首先可以产生六个方向的磁场,我们在这六个方向的磁场中,通过两两结合,在一个时间单位中合理分配两侧磁场方向的占比时间,就可以合成这个区间中任意方向的磁场,其他五个区间的同理。我们为了控制磁场的大小,也就是电机驱动力的大小,我们可以再在上面的单位时间中加上零矢量,零矢量越多,合成磁场的幅值就越小。至此,我们就完成了任意方向和任意大小的磁场定向控制。

到这里,从概念上你就明白了FOC的原理。

6.从概念到应用

但是实际运用上,还有很多概念没说。FOC中定义了永磁体的d轴和q轴,d轴是永磁体NS极的连线方向,而q轴则和d轴垂直。在FOC控制中,我们希望产生的磁场方向和q轴重合,也就是与d轴呈90°,这样产生在永磁体上的力最大,电机的效率最高。当转子旋转的时候,我们控制磁场方向始终跟q轴重合,也就是我们控制的磁场也在旋转,其实这里说起来有点矛盾,本质是我们产生的磁场旋转的同时,转子跟着旋转。这里可能有同学会有一个问题,就是逻辑上的矛盾,我们去驱动电机,也就是我们去合成磁场,然后让转子跟着转,那我们又要保证合成的磁场和永磁体转子的q轴重合,这个怎么保证?如果转子跟不上呢?放心,我们的控制系统是完全闭环的,整个FOC至少包含两个PID环,如果发现转子跟不上,那就是负载比较大等情况,只需要增加电流,提高磁场的强度就可以,时刻保证合成的磁场方向与q轴重合,简单地说,你跟不上,我给你加把劲就行了,这里简单理解就行了。

就像那个著名的故事,在驴前面放一个胡萝卜,驴就会一直往前走,但又一直吃不到。

控制磁场大小本质是控制电流的大小,往前本质是控制电压的大小,这也是我们能操作的。

要控制dq轴的电流大小,那就要在电路中做电流检测,一共就三根线路,abc,只要检测其中两根的电流大小,最后一根根据那个啥基尔霍夫定理就可以数学计算出来,也就是流入节点的电流始终等于流出节点的电流,对吧。

一开始我们只有三个方向的磁场,要先做坐标变化,三相坐标先投影α、β坐标,然后再转换到dq轴,以上就是clark变换和park变换。

为什么要有clark变换和park变换? 我们给到的只有电压,只有根据这一系列的变换,才能得到最终我们要的q轴矢量,而这些变换,是有数学公式的,是在FOC算法中有体现的,换句话说,我们上面讲的那些逻辑,总要有数学载体,总要能通过代码写出来,这些数学变换就是实际的载体,这么说明白了吧。

上面讲的都只是一些概念上的东西,要进一步学习FOC,不仅仅是这一篇文章就搞定了,最好还是结合代码去分析,还可以搞一些实物去真正玩玩,看看到底是怎么驱动控制的,这样更有利于理解并印象深刻。
7.参考文章

其实FOC的知识网上有很多,我也看了很多篇,我觉得下面这篇讲的是最通俗易懂的,可以去看看。能用最简单的话把复杂的东西说明白,是非常厉害的,大道至简。

我佩服这样的人,我也希望能成为这样的人。

https://zhuanlan.zhihu.com/p/104546205

相关推荐
会编程是什么感觉...7 天前
算法 - FOC闭环位置控制
算法·foc
Geehy极海半导体14 天前
极海APM32F035无电解电容变频控制参考方案,助力智能家电实现低成本、高能效驱动
单片机·嵌入式硬件·电机控制
战术摸鱼大师1 个月前
电机控制(四)-级联PID控制器与参数整定(MATLAB&Simulink)
算法·matlab·运动控制·电机控制
战术摸鱼大师1 个月前
电机控制(一)-电机分类
算法·运动控制·电机控制
玉~你还好吗1 个月前
【嵌入式电机控制#进阶9】无感模式切换
电机控制
玉~你还好吗2 个月前
【嵌入式电机控制#34】FOC:意法电控驱动层源码解析——HALL传感器中断(不在两大中断内,但重要)
单片机·嵌入式系统·电机控制
昔时扬尘处2 个月前
【C2000】德州仪器C2000产品整体介绍
电机控制·c2000·数字电源·德州仪器·实时控制mcu
玉~你还好吗2 个月前
【嵌入式电机控制#补充3】SDK电机控制台的功能
单片机·嵌入式硬件·嵌入式系统·电机控制·控制算法
会编程的果子君2 个月前
灯哥FOC笔记-----(1)无刷电机概论和硬件控制原理
foc