嵌入式开发--无刷电机学习1--FOC简介
写在前面
最近刚学FOC电机控制,文中错误在所难免,欢迎批评指正,也欢迎在评论区留言讨论。
FOC意义
普通直流电机(DC MOTOR)的驱动是碳刷换向,能看到这篇文章的朋友应该不用我再去复述一遍直流电机的工作原理了吧。缺点很明显,存在碳刷换向,换向时会有感生电动势冲击。电机产生的磁场与定子磁场之间的夹角不能保持为0度(或者说180度,是一个意思,以下均用0度表示),驱动力会有波动,也不能产生最大的驱动力矩,也就是能耗高。碳刷换向还会限制电机的使用寿命。优点是结构简单,无驱动电路。
针对上述缺点,BLDC无刷直流电机就产生了。
有一种改进方式是6步换向,对于1极对电机来说,电机每旋转60度角,霍尔元件产生一次换向信号,驱动电路依照这个信号对电机进行换向驱动,省掉了碳刷,也就提高了电机的寿命和可靠性。
另一种方式是FOC即磁场定向控制(Field Orientation Control),它可以让定子和转子的磁场始终处于接近0度状态,从而获得恒定也是最大的驱动力,也让电机工作得最有效率。
控制过程简述
下图是FOC控制电机的完整过程,先不用管它是怎么实现的,边学习边理解就好了。
红框内是开环状态的过程,也就是在不获得电机位置的情况下,通过强行输出每个时间节点的控制信息,来驱动电机旋转,至于电机到底动没动,先不管它。如果参数设置正确,转速不高,电机又是空载的情况下,还是能够转起来的。否则电机可能会在原地发抖。
在驱动电机之前,假设我们知道电机的各项参数,这是可以预先测试出来的,也知道电源能提供的最大电压和电流。
那么在给定驱动力矩的情况下,由于摩擦力,空气阻力的存在,电机是会匀速旋转的。
我们控制电机针对的是定子线圈,而转子因磁场变化是随动的,在开环运行时可以先不关心转子的状态,只有在进行闭环控制的时候,才开始由编码器去读取转子位置。故而以下所有讨论均围绕开环状态中的定子线圈进行。
首先我们用两个正交放置的线圈,来替代电机定子中120度分布的三相线圈,并将三相电流投射到α和β轴,并用Iα和Iβ来等效电机的三相电流ia,ib,ic,这样通过Iα和Iβ这两路电流来驱动这一对正交线圈,就可以等效的驱动三相线圈了。该方法最早由克拉克女士提出,被称为克拉克变换。
在电机运行时,如果定子产生的磁场方向不变化,那么这个磁场会吸引转子到一个固定的位置后不再旋转,电机就会锁定在这个位置,类似于步进电机的定位。如果把磁场旋转一个小角度,那么转子也会被磁场吸引到这个新角度上。
定子的三个线圈产生的磁场等效为某一个方向上的磁场,这个磁场也可以同两个正交布置的线圈来产生。这个过程称为帕克变换。
显然这两个变换过程存在某种对应关系,克拉克变换用的是电流,帕克变换用的是磁场,而电流乘以电感就是磁场,于是这两个变换可以连接起来,这样我们就可以通过磁场的方向和强度,来驱动电机。
SVPWM实现的就是具体的每个相给多少电压,由于相电阻和相电感是定值,也就实现了每个相的电流控制,使电机旋转一个小小的角度,然后重复这个过程,电机就转起来了。
归一化的电机坐标图
如上图所示,
黑色的ABC,表示电机的定子线圈的三个相,是电机最基础的坐标系,它的电流为ia,ib,ic
绿色是α和β坐标系,表示用两个的正交线圈去模拟这三个相,坐标系为α和β。相应的,它的电流为Iα和Iβ
蓝色的是定子坐标系d,q,它本来表示的是磁场,而电流乘以电感就是磁场,所以它也可以等效为id,iq,因为转子是不停的旋转的,所以会有一个θ角表示转子的位置。
力矩控制或者叫力矩环
FOC驱动无刷电机时,对于三相无刷电机来说,是以3路正弦波来驱动的,如下图。
这里有一个背景知识,对于真实的电机系统来说,由于摩擦阻力,空气阻力的存在,给定一个固定的力矩,电机会保持一个固定的转速,这也就是电机控制最根本的性质,也叫力矩控制,或者叫力矩环。
这个力矩是怎么来的呢,它来自于UVW或者叫ABC三相的驱动电流。比如我们以1KHz的频率驱动MOS管半桥,那么我们需要每秒计算1000次Y的值,X的值就是0秒,0.001秒,0.002秒…直到0.999秒,并相应的计算出Y的值,以驱动3相线圈,使得每个时刻定子产生的磁场,均平行于转子下一步应该到达的的磁场,如此可以获得最大的驱动力。
刚刚描述的是开环工作状态,闭环其实也类似,只是任意时刻电机的实际位置是由编码器给出,而不是由时间计算得出。
显然在任意一个时刻,如果驱动电流不再变化,其电流大小决定了定子产生的磁场的强度,而这并不会改变电机的旋转速度,只会改变电机的保持力矩,也就是扭力,单位是N.m。电机就会停在当前位置保持锁定状态。决定电机旋转速度的,是定子磁场强度与磁场变化的速度的乘积。
这种通过控制力矩来驱动电机旋转的方式叫力矩控制,是电机控制中最频繁控制也是最核心的环路,也叫力矩环。