【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 - 知乎
笔记前声明:文中截图均出自上方链接中稚晖君的文章。
目录
一、什么是FOC
二、FOC驱动器和无刷电调的区别
2.1 FOC的优势:
2.2 电调的优势:
2.3 FOC待解决的问题
2.4 直流无刷电机分析
三、驱动电路的实现
3.1 三相逆变器电路
3.2 旋转的三相电机波形
四、FOC驱动原理
4.1 天书 算法导图
4.2 稍微解释
4.3 SPWM
4.4 Clark变换
4.5 Park变换
4.6 三环串级PID
4.7 Id与Iq(电流环)
4.8 速度环
4.9 位置环
FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制(VC,Vector Control),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。
1. 低转速下控制
由于控制原理的区别,无刷电调只能控制电机工作在高转速下,低速下无法控制;而FOC控制器则完全没有这个限制,不论在什么转速下都可以实现精确控制。
2. 电机换向
同上面的理由,由于电调无法反馈转子位置,因此很难实现电机正反转的换向(当然有感电调可以实现);而FOC驱动器的换向性能极其优秀,最高转速下正反转切换可以非常顺畅;此外FOC还可以以能量回收的形式进行刹车控制。
3. 力矩控制
普通电调都只能控制电机转速,而FOC可以进行电流(力矩)、速度、位置三个闭环控制。
4. 噪音
FOC驱动器的噪音会比电调小很多,原因是普通电调采用方波驱动,而FOC是正弦波。
1. 兼容性
电调驱动不同的BLDC(无刷直流电机)不需要进行参数整定,而FOC需要。
2. 算法复杂度
电调的算法实现更简单,运算量少,很适合需要提高带宽的超高转速电机。
3. 成本
电调的成本比FOC低很多。
至于什么时候怎么知道该换到哪个供电相?如何产生更平滑的换向电压?如何提高电源的利用效率?这些都是FOC控制方法要探讨和解决的问题。
简单地说,BLDC由于反电动势接近梯形波,所以依然是采用方波驱动,肯定是会有上面说的抖动问题的,但是转一圈抖6下太明显了,如果我增加电机槽、极对数(也就是磁铁对数),那以前是360度里面抖6下,现在变成120度里面抖6下,甚至更小,这样“颗粒感”不就变得更小了嘛?实际中买到的BLDC电机基本都是多极对的(比如下图),原理跟之前的分析是一样的,出来的都是三相信号(图中的三根线),可以自己进行类推。
而另一方面,为什么我们非得用方波这种不平滑的波来驱动电机呢,用正弦波它不香吗?是的,这就是PMSM解决问题的方式,由于PMSM的反电动势被设计为正弦波的形状,我们用软件和算法结合PWM技术将方波转变成等效的正弦波,再来驱动电机,结果美滋滋,控制效果很理想。当然为了产生更好的正弦波、更好的旋转磁场,驱动器、控制算法就变得非常复杂,这也是FOC的实现原理,后面会进行详细介绍。
所谓逆变电路,即把直流电变换为交流电,或者简单点说就是一个可以产生不同电流流向的电路,通过前面的电机模型分析我们也可以看出,对于无刷电机的驱动是需要在不同时刻施加不同方向的电压(电流)的,因此需要逆变电路。
而逆变电路具体的实现则一般是采用半桥MOS电路来制作的。半桥电路的原型如下,其实很简单,就是两个MOS管组成的上桥臂和下桥臂,中间引出一条输出线:
打开红的和两个蓝的,三相都有磁场
按照前面的无刷电机基本模型,假设我们拿到这样一个电机,手动匀速转动它的转子,然后用示波器观察它的三相输出电压(也就是反电动势产生的电压),会看到什么波形呢?
其实很自然可以想到,我们会得到3根正弦曲线,而且三根曲线两两相位差为120°:
发电机反过来就是电动机啦,所以假如反过来我们在三相无刷电机的三相线圈上输入上述三相正弦电压,那么就可以驱动无刷电机平稳高效地旋转了。
而这也是FOC驱动无刷电机的基本手段,即通过计算所需电压矢量,使用 SVPWM 技术产生调试信号,驱动三相逆变电路,合成出等效的三相正弦电压驱动电机。
最主要的原因是,通过上面三个半桥逆变器电路的分析我们可以知道,我们并不好在某一时刻独立地控制某一时刻电机的三个相电压,也就很难合成三路这种SPWM波了;另外SPWM也比后面要说的SVPWM的电压利用率要低15%(具体怎么算的这里就不介绍了)
遗留问题:开尔文接法
这个操作是可行的,因为我们会通过编码器输入转子的实时旋转角度,所以这个角度始终是一个已知数。经过这一步的变换,我们会发现,一个匀速旋转向量在这个坐标系下变成了一个定值!(显然的嘛,因为参考系相对于该向量静止了),这个坐标系下两个控制变量都被线性化了!
这仨是什么?
解决了,因为park变换需要这个值嘛
可以看出来,这也就是前面提到的FOC控制9个步骤所描述的过程。实际只用到了PI控制,没有引入微分,因为电流的采样率非常高不需要加入微分项。(为啥)
首先,星形连接:相电流 = 线电流
其次,通过我的推导:电流的方向就是转子的受力方向
因为电流流经线圈产生的磁场,进而是磁场提供动力而不是电流了
(这不是转载的)
遗留问题:线圈一定是三个么,这是三相交流电,可不可以多相?
最外一层是位置环,也就是可以控制电机旋转到某个精确的角度并保持,控制框图如下:
同理应该很简单可以理解,上图中位置控制PID只用了P项(也可以使用PI)。
(厉害了,这跟我担心的反着,速度低反而不理想了,我感觉速度太高也会不理想)
所以为了避免速度环节带来的误差,在做位置控制的时候可以只使用位置和电流组成的双环进行控制,不过此时需要对位置环做一定的变化,控制框图如下:
由于去掉了速度环,这里的位置环我们使用完整的PID控制,即把微分项加上(因为位置的微分就是速度,这样可以减小位置控制的震荡加快收敛;积分项的作用是为了消除静态误差)
遗留问题:看不懂
SVPWM
4.10.1 空间电压矢量
什么是空间电压矢量?
空间电压矢量是我们在控制电机过程中虚拟出来的一个矢量,既然是矢量,自然是有大小和方向的,那么它的大小和方向是什么呢?
还是以前面三相逆变驱动电路那幅图中的状态为例,输入100的状态:
取一种做演示:
如前文分析,此时的电压矢量为AO方向,大小为 Udc ,我们把这个矢量画在坐标轴中如图:
4.10.2 SVPWM技术
遗留问题:m还能改么 ?零矢量的也没看懂
解决:发现一个问题:
为了避免(1,1,1)的零矢量造成运算错误,需要(0,0,0)矢量与(1,1,1)等大?
这是真的强