小猫爪:PMSM之FOC控制07-有传感器的速度环
1 前言
前面已经实现了电流闭环,这篇文章趁热打铁,直接给它加上速度环让这个系统称为经典的双闭环,让电机呼呼呼的转起来,加入速度环也是非常的简单。
2 加入速度环
加入速度环后,仿真就变成了这样:
因为拿到了真实的角度和速度,所以Park变换中的
θ
\theta
θ就是真实的电机转子位置了。
还可以看到速度环放在foc_control的外面,为啥不跟之前的foc_control放一起呢?这里就存在一个算法执行频率的问题,前面提到SVPWM的调制周期一般在10K~20K之间,所以ADC的采样频率也应该在10K ~20K,等于SVPWM的调制周期,这样可以让调制更加平滑,因为电流是会跟着SVPWM的占空比变化而急剧变化的,但是电机的转速就不一样了,电机的转速响应速度相比较电流那可慢太多了,还有一点就是在实际应用过程中,转速的采样频率也很慢,所以不需要速度环的PID执行频率那么频繁,一般100Hz ~1K就够用的很了,这主要取决于电机的额定转速。所以在这里我给它剔除出来,作为两个部分,方便后面移植。
速度环的框图如下:
在这里就有人要问了,那速度环的PI参数怎么整定啊,有没有啥公式啊?速度环公式如下:
K
p
=
β
J
1.5
P
ψ
f
,
K
i
=
β
K
p
K_p=\frac{\beta J}{1.5P\psi_f} ,K_i=\beta K_p
Kp=1.5PψfβJ,Ki=βKp其中
β
\beta
β为转动带宽,
J
J
J为转动惯量,
P
P
P为极对数。
至于它的推导在这里我就不多嘴了,因为我都是靠猜的,我个人是不太相信这个公式的,但是肯定是有参考意义的,大家感兴趣的请参考这篇文章:https://www.renrendoc.com/paper/111324721.html。
关于PID参数整定,我只能送大家一首我从网上抄来的PD顺口溜,我只能帮到这里了。
下面来看看速度环的效果,速度环响应:
Id和Iq:
波形看着是那么的完美,双闭环系统成功。
3 传感器获取转子位置的思路
算法已经实现完毕,接下来就是将算法移植到硬件中试试水了,这里就牵扯到一个非常重要的问题,电机的转速以及转子位置怎么通过传感器得到呢?这是一个非常重要的问题。关于常用的速度传感器无外乎有两种,编码器和霍尔传感器。
3.1 编码器
编码器的原理非常简单,分为A,B,Z相信号,这个实现就非常简单了,通过A,B相的相位差判断正反转,通过A,B其中一相信号的累加得到位置,位置对时间微分就可以得到速度,可以通过Z相信号作为绝对位置的校准信号。简直不要太简单。
编码器的原理细节可以参考这篇文章:《编码器》。
3.2 霍尔位置传感器
众所周知,霍尔位置传感器的6个状态将电机位置分成了6个位置扇区,每两个状态的切换的时刻那就代表了0°,60°,120°,180°,240°,300°,这六个位置点我们可以精确得到,那其他的点怎么确定呢?跟简单,那就是猜啊。怎么猜?可以根据两个状态间的切换时间估算出当前电机的速度,然后用当前扇区初始位置值加上估算的速度乘上运行时间。两个状态间的切换时间以及运行时间可以由速度采样的周期得到。等到下一个状态切换的时候再次校准位置和估算速度值。简直不要简单。
霍尔位置传感器的原理细节可以参考这篇文章:《霍尔传感器在无刷直流电机中的应用》。
4 移植
因为有感双闭环太简单了啊,这里就不移植了,等后面说无感的时候再移植吧。
注:还有一点非常重要,不管是编码器还是霍尔位置传感器得到的位置都是其传感器的值,此时并不是电机转子的实际值,所以从传感器那里得到位置值需要再加上一个偏置,让这个值无限接近转子位置值?聪明的人就要问了,那这个偏置到底多大呀? 那我也不知道呀,还是那句话,不知道的就得猜。开玩笑的,这个真的不能猜,嘿嘿嘿。但是可以试出来,就是首先让电机无速度环转起来,给定一个Iq, 但是位置信号还是来源于传感器,一次次的改变偏置,看电机的转速,当在同等Iq条件下,电机速度达到最大值的时候,这个时候的偏置就是最佳值。
附上文中所用仿真:FOC_Control_doubleLoop.7z