大家好,又见面了,前两篇博文我们知道了电机的基础知识以及FOC的基础知识,今天我们就来把理论变为实践。我们一起来看看代码中怎么写。我想这也是大家比较关心的事情了。我这里主要是以ST的芯片为例进行讲解。注意这款芯片我相信大多数人应该都比较熟悉,就算不熟悉也没关系,因为我这里面设计的算法知识将不涉及到ST芯片的知识。好了让我们开始吧。 首先我们来回顾一下上一篇文章的四种变化,Clark变化将采集的三相变两相得到iα,iβ,再经过Park变化变为Id,iq。通过电流环变为Ud,Uq,通过反Park变化变为Uα,Uβ.最后通过反Clark变化变为Ua,Ub,Uc。回顾完了我们来再来看看代码中是怎么实现的。
Clark变化:iα = ia; iβ = (ia+2ib)/√3
#define URADI3 18919 /* 2^15/(√3)=18918.61362 */
#define SHURADI3 15 /* >>15 相当于除以32767*/
这里使用了Q15格式。目的主要是方便计算
Park变化公式: id = iαcosθ + iβsinθ ,iq = -iαsinθ + iβcosθ
cosang与senang为角度值,至于怎么算出来的我们后面聊
#define SHFTSEN 14 /* amp. 2^14 */*这个在进行角度计算的时候扩大了2^14倍,所以这里>>14.
Park逆变化公式:Uα = Ud*cosθ-Uq*sinθ Uβ = Ud*sinθ+Uq*conθ
同上:cosang与senang为角度值,至于怎么算出来的我们后面聊
#define SHFTSEN 14 /* amp. 2^14 */** 这个在进行角度计算的时候扩大了2^14倍,所以这里>>14.
上面那些公式什么的都简单的很,我们只需要按照公式写代码就可以了,现在让我们上升一点点高度,来看看电流环。
重要点:Uref是Ud与Uq合成的
这点知道了后,后面的就简单很多了。来我们来一起看看代码。电流环:输入iq与id,输出uq,ud。首先我们先求出的Ud,然后我们知道了Ud,Ufmax,是不是也就相当于知道了Uq呢。为什么呀,因为Uref是Ud与Uq合成的呀。代码里面是怎么写的呢,这里面的备注我都标注的比较清楚。大家可以看一下
都写到这一步了,本来我准备把公式怎么作用到电机里面去放到下一讲的,当时兴致来了,干脆就一起写了吧。接下来我们来看看代码里面是怎么判断扇区和写桥臂作用时间的。根据前一章我们知道了判断扇区的公式。
那么代码就很好写了呀。来一起看看吧。
这里我把注释写的很全很全了。我想大家看起来也不会很困难。至于整体的代码我可能要等到我把我的视频拍完到时候再发出来。
好了,这篇文章我们就到这里,下篇文章我们来聊一聊无感估算角度的FOC观测器。