【stm32无感FOC理论与实践:滑模观测器】【02 PLL】

目录

继续阅读前需要具备该文章基础:永磁同步电机无感FOC思路建立

上节推导得到了 α β \alpha\beta αβ轴反电动势,滑模观测器的任务实际上已经到此结束。本节的内容为如何从反电动势计算得到估计转子角度。

理解反电动势

反电动势是电机相线完全从电路中断开后,让电机被动拖动转起来,拿个万用表之类的仪器,测量得到两个电机线之间的电压。在同一个电机中,反电动势是完全与电路无关的,只和转子有关的量 ,得到反电动势就可以放心计算转子角度,我们上节推导得到的就是反电动势的估计值。体现在 α β \alpha\beta αβ轴坐标系的数学模型上,反电动势 [ e α e β ] = ω ψ f [ − sin ⁡ θ cos ⁡ θ ] \begin{bmatrix} e_\alpha \\ e_\beta \end{bmatrix} = \omega \psi_f \begin{bmatrix} -\sin\theta \\ \cos\theta \end{bmatrix} [eαeβ]=ωψf[−sinθcosθ]。体现在 d q dq dq轴坐标系的数学模型上, [ e d e q ] = [ 0 ω ψ f ] \begin{bmatrix} e_d \\ e_q \end{bmatrix} = \begin{bmatrix} 0 \\ \omega \psi_f \end{bmatrix} [edeq]=[0ωψf]。

arctan

从 α β \alpha\beta αβ轴反电动势表达式可以看到,上节推导得到的反电动势真是太好用了,直接 α β \alpha\beta αβ轴做除法:
e α e β = − ω ψ f sin ⁡ θ ω ψ f cos ⁡ θ = − tan ⁡ θ \frac{e_\alpha}{e_\beta}=\frac{- \omega \psi_f\sin\theta}{ \omega \psi_f\cos\theta}=-\tan\theta eβeα=ωψfcosθ−ωψfsinθ=−tanθ

然后再做个arctan,转子角度 θ \theta θ就得到了。但是呢,这个方法本质属于开环方法, tan ⁡ θ \tan\theta tanθ非常容易受到分母 e β e_\beta eβ的噪声影响, 特别是 e β e_\beta eβ比较小的时候。实际代码工程实践中,其实不使用arctan方法。

PLL

在 d q dq dq轴坐标系的数学模型上, [ e d e q ] = [ 0 ω ψ f ] \begin{bmatrix} e_d \\ e_q \end{bmatrix} = \begin{bmatrix} 0 \\ \omega \psi_f \end{bmatrix} [edeq]=[0ωψf],可以看到理想情况下,d轴反电动势应当是0,d轴反电动势不为0就说明估计转子角度不对,要提高或降低估计转速,让估计转子角度跟上或者慢一些。由此可以设计一个闭环控制环路,把 e d e_d ed作为环路误差输入,经过pid控制器(实际是pi控制器),把转速 ω \omega ω作为环路输出。

为啥环路不直接输出转子角度? 你可能会这样想:d轴反电动势不为0就说明估计转子角度不对,那直接增减估计转子角度不就可以了?这个想法不是错的,而是输出转速再进行积分得到转子角度是更好的方法。因为1:直接增减估计转子角度会慢半拍,可以认为增减转速积分得到的转子角度自带转速带来的惯性。2:直接输出速度,避免了角度求导带来的噪声问题。3:转子角度是0~360度,如果处理输出转子角度,要考虑周期性,而转速是线性值,更适合pid输出。

可以将 α β \alpha\beta αβ轴反电动势进行park变换得到 d q dq dq轴反电动势,此时使用估计转子角度进行park变换:

e d \^ e q \^ \] = \[ cos ⁡ θ \^ sin ⁡ θ \^ − sin ⁡ θ \^ cos ⁡ θ \^ \] \[ e α \^ e β \^ \] \\begin{bmatrix} \\hat{e_d} \\\\ \\hat{e_q} \\end{bmatrix}=\\begin{bmatrix} \\cos\\hat{\\theta} \& \\sin\\hat{\\theta} \\\\ -\\sin\\hat{\\theta} \& \\cos\\hat{\\theta} \\end{bmatrix}\\begin{bmatrix} \\hat{e_\\alpha} \\\\ \\hat{e_\\beta} \\end{bmatrix} \[ed\^eq\^\]=\[cosθ\^−sinθ\^sinθ\^cosθ\^\]\[eα\^eβ\^

上式右侧都是计算过程中得到估计值了,环路误差输入 e d ^ \hat{e_d} ed^已经得到,环路的输出 ω ^ \hat{\omega} ω^,以及积分后估计转子角度 θ ^ \hat{\theta} θ^也就得到了。

不过此处还有一个点可以关注一下,如果说右侧的估计值 e α ^ , e β ^ \hat{e_\alpha},\hat{e_\beta} eα^,eβ^已经很接近真实的 e α , e β e_\alpha,e_\beta eα,eβ了,我们代入真实 e α , e β e_\alpha,e_\beta eα,eβ展开看下:

e d \^ e q \^ \] = \[ cos ⁡ θ \^ sin ⁡ θ \^ − sin ⁡ θ \^ cos ⁡ θ \^ \] \[ e α e β \] = \[ cos ⁡ θ \^ sin ⁡ θ \^ − sin ⁡ θ \^ cos ⁡ θ \^ \] ∗ ω ψ f \[ − sin ⁡ θ cos ⁡ θ \] \\begin{bmatrix} \\hat{e_d} \\\\ \\hat{e_q} \\end{bmatrix}=\\begin{bmatrix} \\cos\\hat{\\theta} \& \\sin\\hat{\\theta} \\\\ -\\sin\\hat{\\theta} \& \\cos\\hat{\\theta} \\end{bmatrix}\\begin{bmatrix} e_\\alpha \\\\ e_\\beta \\end{bmatrix}=\\begin{bmatrix} \\cos\\hat{\\theta} \& \\sin\\hat{\\theta} \\\\ -\\sin\\hat{\\theta} \& \\cos\\hat{\\theta} \\end{bmatrix}\*\\omega \\psi_f \\begin{bmatrix} -\\sin\\theta \\\\ \\cos\\theta \\end{bmatrix} \[ed\^eq\^\]=\[cosθ\^−sinθ\^sinθ\^cosθ\^\]\[eαeβ\]=\[cosθ\^−sinθ\^sinθ\^cosθ\^\]∗ωψf\[−sinθcosθ

可以得到:
e d ^ = ω ψ f ( sin ⁡ θ ^ cos ⁡ θ − cos ⁡ θ ^ sin ⁡ θ ) = ω ψ f sin ⁡ ( θ ^ − θ ) \hat{e_d} = \omega \psi_f (\sin\hat{\theta} \cos\theta - \cos\hat{\theta} \sin\theta) = \omega \psi_f \sin(\hat{\theta} - \theta) ed^=ωψf(sinθ^cosθ−cosθ^sinθ)=ωψfsin(θ^−θ)

可以从上式看到, e d ^ \hat{e_d} ed^的幅值会随着转速变化,作为环路输入,可以进行归一化保持幅值稳定(实际工程里可以不需要),即:
e r r = e d ^ ω ψ f = sin ⁡ ( θ ^ − θ ) = sin ⁡ ( θ ~ ) err=\frac{\hat{e_d}}{\omega \psi_f}=\sin(\hat{\theta} - \theta)=\sin(\tilde{\theta}) err=ωψfed^=sin(θ^−θ)=sin(θ~)

要知道当x很小时, sin ⁡ ( x ) ≈ x \sin(x)\approx x sin(x)≈x,因此 e r r err err可以看作 θ ~ \tilde{\theta} θ~,此时会发现,环路误差输入竟然变成了 θ ~ \tilde{\theta} θ~,这是非常舒服的一个现象,估计转子角度和真实转子角度的误差作为环路误差输入是非常合理的。

那么以上这些步骤,就叫做锁相环PLL (P hase L ocked L oop),目标设计一个控制环路,锁住相位( θ \theta θ),是来自通信领域的一种方法。PLL的控制框图为:


总结,PLL的作用是从上节得到的估计反电动势计算得到估计转速和估计转子角度,相对于arctan直接计算方法,是一种闭环计算的方法,能够较好地抵抗噪声。

相关推荐
念恒123061 小时前
STM32---新建工程
linux·stm32·嵌入式硬件
振南的单片机世界1 小时前
全双工vs半双工vs单工:电话、对讲机、广播
stm32·单片机·嵌入式硬件
笨笨饿2 小时前
#72_聊聊I2C以及他们的变体
linux·c语言·网络·stm32·单片机·算法·个人开发
ghie90902 小时前
4轴运动控制源代码(STM32 + GRBL 1.1移植版)
stm32·单片机·嵌入式硬件
0南城逆流03 小时前
【STM32】RTT-Studio中HAL库开发教程十一:WS2812彩色RGB模块使用
stm32·单片机·嵌入式硬件
恶魔泡泡糖3 小时前
stm32F103C8T6标准库外部中断点灯
stm32·单片机·嵌入式硬件
fengfuyao9853 小时前
STM32 ADC音频采样与FFT频谱分析实现
stm32·嵌入式硬件·音视频
项目題供诗4 小时前
STM32-对射式红外传感器计次&旋转编码器计次(九)
人工智能·stm32·嵌入式硬件
Deitymoon5 小时前
STM32——I2C协议
stm32·单片机·嵌入式硬件