前置知识点:无刷电机驱动器硬件结构、无刷电机转动原理
在使用驱动器控制直流无刷电机时,我们需要电机输出一定的力矩进行旋转,显然力矩是一个线性的对象(可以理解为阶跃信号),但我们如果想要驱动电机以该力矩平滑的旋转,我们就需要生成三个相位差为120°的正弦波Ia
、Ib
、Ic
来控制,但是我们的驱动电路是由MOS管构成的逆变电路,控制对象为MOS管
,其只有导通(1)
和关断(0)
两种状态,如何由此产生正弦波呢?可以采用SPWM技术加低通滤波器来模拟正弦波。但我们根本没有必要去产生正弦波来进行控制,要对非线性的信号(信号阶次大于一阶)进行准确控制就要使用复杂的高阶控制系统,而根据控制理论,控制系统的型次要大于等于输入信号的阶次,否则会导致系统稳态误差为无限大而无法进行控制,而高阶的控制系统对于建模成本、处理器算力、控制实时性等都是不利的。所以我们需要将问题进行简化,将复杂的控制方式(正弦波)简化为线性的控制方式(阶跃信号或者速度信号)。所以我们可以采用clark
和park
变换来将问题简化。
第一步:Clark变换
我们知道,驱动电机平滑旋转的是三个相位差为120°的正弦波,可以将其用Ia
、Ib
、Ic
三个矢量来表示,但很明显,这三个矢量不正交且都处于同一个二维线性空间,根据线性代数的知识我们可以知道,我们可以通过clark
变换将这三个向量变换到一个正交直角坐标系,我们可以将其命名为α-β坐标系
由此我们得到clark
变换的基本形式,将控制对象简化为Iα
和Iβ
两个对象,但我们在使用的时候往往要加上一个系数:2/3等幅值变换系数
、sqrt(2/3)等功率变换系数
等幅值变换系数是使得经过clark
变换后的Iα
等于Ia
的系数,可以通过基尔霍夫定律并代入具体值来推导
但此时我们得到的Iα
和Iβ
仍是正弦波,这并不是我们想要的。我们的目的是将非线性的控制对象线性化,所以我们就要再使用Park
变换。
第二步:Park变换
我们可以将α-β
坐标系固定在电机定子上,如果此时我们想要用Iα
和Iβ
来描述电机的转动状态,但我们会发现Iα
和Iβ
是不断变化着的,分析起来仍旧困难,所以此时我们在电机转子上再建立一个坐标系q-d
,当电机转子发生转动时,q-d
坐标系就会与α-β
坐标系产生一个电角度θ
,那么我们可以通过θ
将Iα
和Iβ
变换到q-d
坐标系中用Iq
和Id
来表示。
正变换:
逆变换:
由于q-d
坐标系是固结在转子上的坐标系,因此在电机旋转时Iq
和Id
是固定不变的,至此,我们就将正弦的控制对象转化成了线性的控制对象,即Iq
、Id
、θ
。在实际工程中,θ
可以用磁编码器很容易的测出,所以我们在使用时可以通过设定Iq
和Id
的值来控制电机各相的电流,但因为Iq
和Id
都是固结在电机转子上的矢量,其值不变,都表示电机的旋转状态,即转子旋转的径向Id
和切向Iq
这两个方向的变量,径向Id
是我们不需要的,需要的量就只有切向的Iq
,这是一个线性的变量,所以我们就可以采用线性控制器(如PID)来控制电机的力矩了。
再梳理一下实际控制过程中信号的变换过程:
前向通路:想要实现电机以一定力矩转动,可以通过设定矢量Iq
的值,并测量电角度θ
,通过park
逆变换使得矢量Iq
从转子上的q-d
坐标系变换到α-β
坐标系得到矢量Iα
和Iβ
,再通过clark
变换使得Iα
和Iβ
变换到自然坐标系得到三相的正弦电流Ia
、Ib
、Ic
,以此来驱动电机以一定力矩旋转。
反馈回路:对无刷电机三相实际电流Ia
、Ib
、Ic
进行采样得到电流值,通过clark
变换使矢量Ia
、Ib
、Ic
变换到电机定子上的α-β坐标系得到矢量Iα
和Iβ
,由磁编码器得到电角度θ
,再通过park
变换得到矢量Iq
。
以下是信号变换过程框图:
学生学习笔记,如有错误欢迎大佬批评指正。
参考资料:
-
【手把手教写FOC算法】 系列视频2-4P【手把手教写FOC算法】4_帕克变换_哔哩哔哩_bilibili
-
【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 - 稚晖的文章 - 知乎 【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 - 知乎