DengFOC学习笔记
FOC
Field oriented control 磁场定向控制,直流有刷电机中磁场的变换是通过机械结构(电刷)完成的,而无刷电机则没有这样的结构。
想像一下,一个可以绕中心旋转的条形磁铁,我们可以拿另一个磁铁吸引,控制它旋转停止,FOC就是模拟这个过程。这里"另一个磁铁"并不是磁铁,而是电流产生的磁场,所以对磁场的控制其实就是对电流的控制。
先分析单极对的电机,n极对的就是乘上一个n而已后面再说。对电机进行转动,电机会产生这样的电动势:
三条相差120度的正弦波,反过来,我们要控制电机,就是要产生这样的波。
逆克拉克变换
用三个电流矢量 I a I b I c I_a I_b I_c IaIbIc 的大小代表电流的大小,方向则是相差120度。我们要做的就是把三个矢量的控制转化为两个矢量
把三维电流矢量 I a I b I c I_a I_b I_c IaIbIc 分别正交分解到二维电流矢量 I α I β I_\alpha I_\beta IαIβ中,其中 I a I_a Ia 的方向与 I α I_\alpha Iα 方向一致
[ I α I β ] = [ 1 − s i n 3 0 ∘ − s i n 3 0 ∘ 0 c o s 3 0 ∘ − c o s 3 0 ∘ ] [ I a I b I c ] \begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix} \ = \ \begin{bmatrix} 1 & -sin30^\circ & -sin30^\circ \\ 0 & cos30^\circ & -cos30^\circ \end{bmatrix} \ \begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix} [IαIβ] = [10−sin30∘cos30∘−sin30∘−cos30∘] IaIbIc
[ I α I β ] = [ 1 − 1 2 − 1 2 0 3 2 − 3 2 ] [ I a I b I c ] \begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix} \ = \ \begin{bmatrix} 1 & -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \end{bmatrix} \ \begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix} [IαIβ] = [10−2123−21−23] IaIbIc
由基尔霍夫定律: I a + I b + I c = 0 I_a + I_b + I_c = 0 Ia+Ib+Ic=0 可算出 I α = 3 2 I a I_\alpha = \frac{3}{2} I_a Iα=23Ia 故制定等幅变换系数 2 3 \frac{2}{3} 32 使得 I α = I a I_\alpha = I_a Iα=Ia
[ I α I β ] = 2 3 [ 1 − 1 2 − 1 2 0 3 2 − 3 2 ] [ I a I b I c ] \begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix} \ = \ \frac{2}{3} \ \begin{bmatrix} 1 & -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \end{bmatrix} \ \begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix} [IαIβ] = 32 [10−2123−21−23] IaIbIc
[ I α I β ] = [ 2 3 − 1 3 − 1 3 0 3 3 − 3 3 ] [ I a I b I c ] \begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix} \ = \ \begin{bmatrix} \frac{2}{3} & -\frac{1}{3} & -\frac{1}{3} \\ 0 & \frac{\sqrt{3}}{3} & -\frac{\sqrt{3}}{3} \end{bmatrix} \ \begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix} [IαIβ] = [320−3133−31−33] IaIbIc
用基尔霍夫定律消去
I
c
I_c
Ic
[
I
α
I
β
]
=
[
1
0
0
1
3
2
3
0
]
[
I
a
I
b
I
c
]
\begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix} \ = \ \begin{bmatrix} 1 & 0 & 0 \\ \frac{1}{\sqrt{3}} & \frac{2}{\sqrt{3}} & 0 \end{bmatrix} \ \begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix}
[IαIβ] = [13103200]
IaIbIc
逆变换
[
I
a
I
b
I
c
]
=
[
1
0
−
1
2
3
2
−
1
2
−
3
2
]
[
I
α
I
β
]
\begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix} \ = \ \begin{bmatrix} 1 & 0 \\ -\frac{1}{2} & \frac{\sqrt{3}}{2} \\ -\frac{1}{2} & -\frac{\sqrt{3}}{2} \end{bmatrix} \ \begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix}
IaIbIc
=
1−21−21023−23
[IαIβ]
逆帕克变换
与定子的正交矢量 α β \alpha \beta αβ 对应,建立转子的正交矢量 DQ ,电角度 θ \theta θ
可得
[
I
D
I
Q
]
=
[
c
o
s
θ
s
i
n
θ
−
s
i
n
θ
c
o
s
θ
]
[
I
α
I
β
]
\begin{bmatrix} I_D \\ I_Q \end{bmatrix} \ = \ \begin{bmatrix} cos\theta & sin\theta \\ -sin\theta & cos\theta \end{bmatrix} \ \begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix}
[IDIQ] = [cosθ−sinθsinθcosθ] [IαIβ]
逆变换
[
I
α
I
β
]
=
[
c
o
s
θ
−
s
i
n
θ
s
i
n
θ
c
o
s
θ
]
[
I
D
I
Q
]
\begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix} \ = \ \begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix} \ \begin{bmatrix} I_D \\ I_Q \end{bmatrix}
[IαIβ] = [cosθsinθ−sinθcosθ] [IDIQ]
在简单的FOC应用中,只需要控制 I Q I_Q IQ 的电流大小,而把 I D I_D ID 设置为0。因为Q轴是切向轴而D轴是径向轴,Q轴主做功,D轴主磁弱。
此时, I Q I_Q IQ 的大小决定了三相电流 I a I b I c I_a I_b I_c IaIbIc 的大小,决定了定子产生磁场的强度。进一步决定电机产生的力矩大小
综合
由
I
Q
,
θ
I_Q, \theta
IQ,θ 通过帕克逆变换求得
I
α
I
β
I_\alpha I_\beta
IαIβ
[
I
α
I
β
]
=
[
c
o
s
θ
−
s
i
n
θ
s
i
n
θ
c
o
s
θ
]
[
I
D
I
Q
]
(1)
\begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix} \ = \ \begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix} \ \begin{bmatrix} I_D \\ I_Q \end{bmatrix}\tag{1}
[IαIβ] = [cosθsinθ−sinθcosθ] [IDIQ](1)
由
I
α
I
β
I_\alpha I_\beta
IαIβ 通过克拉克逆变换求得
I
a
I
b
I
c
I_a I_b I_c
IaIbIc
[
I
a
I
b
I
c
]
=
[
1
0
−
1
2
3
2
−
1
2
−
3
2
]
[
I
α
I
β
]
(2)
\begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix} \ = \ \begin{bmatrix} 1 & 0 \\ -\frac{1}{2} & \frac{\sqrt{3}}{2} \\ -\frac{1}{2} & -\frac{\sqrt{3}}{2} \end{bmatrix} \ \begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix}\tag{2}
IaIbIc
=
1−21−21023−23
[IαIβ](2)
联立 (1) (2)
[
I
a
I
b
I
c
]
=
[
s
i
n
(
θ
+
π
)
s
i
n
(
θ
+
π
2
)
s
i
n
(
θ
+
π
3
)
s
i
n
(
θ
−
π
6
)
s
i
n
(
θ
−
π
3
)
s
i
n
(
θ
−
5
π
6
)
]
[
I
Q
I
D
]
\begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix} \ = \ \begin{bmatrix} sin(\theta+\pi) & sin(\theta+\frac{\pi}{2}) \\ sin(\theta+\frac{\pi}{3}) & sin(\theta-\frac{\pi}{6}) \\ sin(\theta-\frac{\pi}{3}) & sin(\theta-\frac{5\pi}{6}) \end{bmatrix} \ \begin{bmatrix} I_Q \\ I_D \end{bmatrix}
IaIbIc
=
sin(θ+π)sin(θ+3π)sin(θ−3π)sin(θ+2π)sin(θ−6π)sin(θ−65π)
[IQID]
然而pwm只能控制电压,在开环控制中直接通过 pwm 输出
U
a
U
b
U
c
U_a U_b U_c
UaUbUc 即可
[
U
a
U
b
U
c
]
=
(
系数
R
)
[
I
a
I
b
I
c
]
\begin{bmatrix} U_a \\ U_b \\ U_c \end{bmatrix} \ = \ (系数R) \ \begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix}
UaUbUc
= (系数R)
IaIbIc
电流闭环控制需要通过电流传感器实现,这个后面再说
开环控制
指定 I Q I_Q IQ 作为力矩,不断改变 θ \theta θ 即可转动, θ \theta θ 就是电角度。
电角度就涉及到"极对",前面讨论的都是单极对的电机,对于多极对的电机,比如2极对,当 θ \theta θ 转过 360度之后,电机仅转了180度,所以就有了电角度和机械角度的概念。
电角度 = 机械角度 * 极对数
闭环控制中,电角度 θ \theta θ 由编码器测出机械角度后计算得出,但是需要偏移 π 2 \frac{\pi}{2} 2π , 因为偏移90度产生的力矩最大,如果不偏移产生的力矩是为零的,DengFOC源码中没有偏移是因为在初始化归零编码器时把角度偏移90度了,所以运行时编码器读出来的角度天然偏移90度
位置闭环
PID 控制器输入位置角度误差,输出到 I Q I_Q IQ
也可以与速度环结合起来,位置环输出目标速度到速度环,速度环再输出 I Q I_Q IQ
速度闭环
PID 控制器输入目标速度与实际速度的误差,输出到 I Q I_Q IQ
编码器读出来的速度最好经过低通滤波才不会有滋滋声
电流闭环
利用电流传感器的反馈,把之前的这个东西:
[
U
a
U
b
U
c
]
=
(
系数
R
)
[
I
a
I
b
I
c
]
\begin{bmatrix} U_a \\ U_b \\ U_c \end{bmatrix} \ = \ (系数R) \ \begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix}
UaUbUc
= (系数R)
IaIbIc
用 PID 真正地控制电流即可