目录
一、FOC介绍
二、FOC基本概念
1、为什么是三相?
2、FOC矢量控制总体算法简述
3、为什么FOC不一定需要电流采样?参考链接
4、FOC的分类
(1)有感FOC与无感FOC
三、FOC中电流采样 参考链接
1、高端采样
2、低端采样
(1)单电阻采样
(2)双电阻采样
(3)三电阻采样
3、采样方式的选取
四、FOC原理
1、Clark变换
2、Park变换
3、PID控制
(1)电流环(最内环)
(2)速度环(第二层)
(3)位置环(最外层)
(4)位置控制时采用 位置环+电流环 控制
4、SVPWM变换
五、FOC控制算法调试
一、FOC介绍
最近为了精确控制电机旋转的角度、速度、力矩,采用三相直流无刷电机控制,采用FOC磁场定向控制算法,在这里记录一下自己的学习过程。
从家电到汽车和重工业机器人——都采用无刷直流(BLDC)和交流电机,因为它们能效高,可定制性更广。交流和BLDC电机在许多应用中都是首选,因为它们的缺点很少,如微控制器成本和复杂的控制算法。
FOC是驱动电动马达的最有效方式之一。FOC的主要目标是保持正交的定子和转子磁场以产生最大扭矩。一种方法是不断监测三个时变相电流,并调制每个施加的相电压以实现正确的时变定子磁场方向。
二、FOC基本概念
1、为什么是三相?
无刷直流电机(BLDC:Brushless Direct Current Motor),也被称为电子换向电机(ECM或EC电机)或同步直流电机,是一种使用直流电(DC)的同步电机。无刷直流电机实质上为采用直流电源输入,并用逆变器变为三相交流电源,带位置反馈的,永磁同步电机。
一个典型的永磁同步电机的3相绕组在空间120°电角度布置,绕组里面分别通相位相差120°的三相交流电。为什么需要通相位相差120°的三相交流电?为了产生一个幅值大小不变的圆形旋转磁动势。
三相交流电通定子线圈,定子线圈是静止的,但线圈产生的磁场是与转子永磁体产生的磁场相互作用,转子在转,线圈产生的磁场也在同步转。
2、FOC矢量控制总体算法简述
输入:位置信息,两相采样电流值(或3相电流、电机位置或者电机速度)
输出:三相PWM波
所需硬件:ADC至少需要一到三个电流检测输入,一个光电或磁编码器,主控,依据电压等级的不同有mosfet或者IGBT或者SiC功率模块组成的三个半桥
FOC算法在本质上就是一些线性代数中的矩阵变换,我在这里讲述的是有传感器的FOC算法,转子的位置信息是通过绝对式磁编码器反馈的,直接是数字量。
3、为什么FOC不一定需要电流采样?参考链接
FOC磁场定向控制。其原理在于调制电机三相的电压,使电流产生的磁场矢量方向与定子磁铁(励磁产生或永磁铁)成90度。为什么成90度?因为90度的时候力矩最大。如果小于90或者大于90,实际上电机也能转,只是达不到最大力矩而已。基本上60-120度都能转。
我们先不考虑电流,因为我们能直接控制的实际上只有ABC三相的电压(怎么控制呢?SVPWM)。我们通过控制这三相电压的大小,就可以得到一个方向和幅值都可以控制的电压矢量。
电压采样:把目标v_q直接经过坐标变换和svpwm输出而不经过pid运算,而v_d则直接赋予0,确实可以达到还行的效果。这样做的问题在于并不能保证i_d为零,i_q等于目标值,因此电机并不能工作在效率最高的状态,力矩控制也是不准确的, 只是这样磁场矢量与定子磁铁的角度不是90度,而是略小一点。
如果没有电流环没有电流采样也可以工作,电流采样的作用是获取三相电流做坐标变换后得到实际的id,iq,如果不要电流环,只有速度环反馈或者位置环反馈其实也可以达到还行的效果。
4、FOC的分类
(1)有感FOC与无感FOC
在FOC算法中,转子的磁场角必须是已知的,以保持正交的定子和转子磁场。这可通过编码器或旋转变压器的位置反馈来实现(有感FOC),也可通过反电动势/磁通观测器软件来测量相电流以估计转子角(无感FOC)。
三、FOC中电流采样 参考链接
1、高端采样
直接采样桥臂输出电流,软件上无需再进行电流重构计算,采样值即真实输出电流,使用方便简单高效,较为稳定,但成本过高。由于该位置采样所选器件需要承受母线电压,在电源非隔离条件下,运放的抗共模电压指标需要大于等于母线电压(多数选母线电压的2倍),否则无法正常工作。而电源隔离条件下,其参考地(GND)不同,所以无需考虑该问题。因为电机三相电流遵循Ia+Ib+Ic=0,故实际实现时只需采样任意两相电流即可获得完整三相输出电流。
2、低端采样
分为单、双、三电阻采样,易受公共地噪声影响。
(1)单电阻采样
单电阻采样又称为母线电流采样,一般将采样电阻串联在直流母线来进行采样,受逆变桥开关状态影响,其采样电流与相输出电流有差异,且在特定占空比条件下难以获取输出电流,故需在一个周期内至少采样2次,并对采样电流重构补偿,同时把握好采样时刻才能获取有效电流数据,因而过程复杂,难度过大,不过由于成本低廉(仅使用一个运放,且不需要考虑高共模电压影响)。
(2)双电阻采样
通过采样逆变任意2个下桥臂电流来获取有效数据。在实际操作过程中,需要在下桥臂开关管开通时采样(蓝色波形),并在软件上对采样数据重构获取输出电流。
(3)三电阻采样
如果我们使用的是三电阻方式采样的话,选用的ADC模块必须至少要有三个通道同时采样的功能,这样才能确保采样得到的三相相电流是同一时刻的电流,此时才能保证Iu+Iv+Iw=0,这个公式成立。这样的话,可以对采样窗口小的一相电流进行重新计算,这样得到的结果准确度是最高的
3、采样方式的选取
在电机控制中,对电流采样的采样转换方式一般都是使用PWM触发ADC来转换
当PWM模块设置的触发点匹配之后,触发信号就会给到ADC模块,此时采样开关就会断开,然后ADC模块开始转换,转换完成即可得到对应的采样电流的电压信号的AD数值,在程序中使用这个数值进行算法编写验证即可。
四、FOC原理
1、Clark变换
三相交流电,我们是否可以把它整成两相?就好比我们看一个三维的问题,我总是倾向于转化到二维去解决。三相交流电相互间相位相差120°,那我们是否可以构建一个坐标系α-β,使用它来表示三相交流电。
Ia,Ib,Ic投影到该坐标系α-β,则有:
写成矩阵形式为:
2、Park变换
虽然坐标系下少了一维变量,但是新的变量还是正弦非线性的,接下来用Park变换将它们线性化。经过这一步的变换,我们会发现,一个匀速旋转向量在这个坐标系下变成了一个定值。
变换公式为:
写成矩阵形式:
我们一通操作将转子磁链进行了解耦,分解为了转子旋转的径向和切向这两个方向的变量:
- 其中是我们需要的,代表了期望的力矩输出
- 而 是我们不需要的,我们希望尽可能把它控制为0
3、PID控制
将上一步得到的两个值作为反馈控制的对象,作为PID算法的输入。
由于这里的电压和电流的传递函数会发现这其实就是一个一阶惯性环节,所以这里只需要PI控制即可。
在FOC控制中主要用到三个PID环,从内环到外环依次是:电流环、速度环、位置环。
我们通过电流反馈来控制电机电流(扭矩) -> 然后通过控制扭矩来控制电机的转速
-> 再通过控制电机的转速控制电机位置。
(1)电流环(最内环)
(2)速度环(第二层)
(3)位置环(最外层)
(4)位置控制时采用 位置环+电流环 控制
在实际使用中,由于编码器无法直接返回电机转速 ,往往计算一定时间内的编码值变化量来表示电机的转速(即平均速度代表瞬时速度)。当电机转速比较高的时候,这样的方式是可以的;但是在位置控制模式的时候,电机的转速会很慢,这时候用平均测速法会存在非常大的误差(转子不动或者动地很慢,编码器就没有输出或者只输出1、2个脉冲)。
此时需要对位置环做一点变化:
4、SVPWM变换
前面有Park变换对应反Park变换,但是没有反Clark变换,取而代之的是SVPWM变换。使用反Park变换和SVPWM变换可以把计算出来的数据转换成开环的旋转磁场。
在这里我就不详细说明SVPWM原理了,写这篇文章目的是自己能徒手写出代码,现在有现成的SVPWM模块,可以把FOC的控制结果转换为定时器6个通道的占空比,从而驱动三相逆变模块控制定子绕组产生旋转磁场,拖动转子旋转。
五、FOC控制算法调试
由于作者还没有做到FOC算法调试这个步骤,后续调试算法时,会具体补充这一部分,大家可以参考:参考链接