FOC算法入门 | 您所在的位置:网站首页 › foc算法提高功率 › FOC算法入门 |
谈谈我近期学习FOC的理解
本篇文章不深,仅作为入门扫盲 注:其中有一部分图片是网上找的,一部分是自己做的,拿图请注出处,谢谢!这是我第一次在csdn上写文章,格式或文章内容有什么问题还请各位多加指正 文章目录 谈谈我近期学习FOC的理解什么是FOC1.FOC2.FOC能用来干啥,有啥好处 一、让无刷电机转起来1.理论推导2.电气实现 二、简化输入电流三、如何控制电机1.电机扇区2.电机控制1.电流控制(力矩)2.速度控制3.位置控制 四、总结 什么是FOC 1.FOC驱动BLDC或PMSM电机的算法,能够精确控制电机,并且能够让电机在极低转速下保持力矩和稳定性 2.FOC能用来干啥,有啥好处机器人关节(FOC控制下的无刷电机不像舵机关节那么僵硬,更接近于生物的关节,有弹力) 无人机(FOC调速的无人机电机比普通电调调速的无人机电机更加平滑稳定,并且能够快速对突发情况作出调整) 云台(FOC调速下的无刷电机实时响应更迅速,过度更加平滑) … 一、让无刷电机转起来 1.理论推导首先我们知道电流产生磁场,磁场与磁场之间就吸引或排斥出了力!有了力就可以让电机动起来。 那么我们做一个简单的模型: 此刻磁铁1号,2号产生的磁力之间相互平衡,使得整个系统处于稳定状态 我们现在按住1号磁铁,让2号磁铁绕电机轴心转动一个角度,这时由于我们破坏了受力平衡导致两个磁铁产生的力并不在一条直线上,而产生一个垂直于电机半径方向的力: 就是这个力使得电机转动!转动到使整个系统再次保持平衡的位置: 现在我们让2号磁铁绕轴心转动,2号磁铁和轴心之间的距离在时间轴上的投影按照弦状曲线变化: 于是我们的波形就变成了3相互差120°的弦波。 过了120°的时间第二块磁铁到达上一块磁铁所处的位置所以是互差120°的弦波 这里我拿余弦波来举例。 为什么拿余弦波来举例,你没有发现我们的教科书上x轴方向一般不都是余弦嘛 我们根据无刷电机的构造把外圈转子变成几块定磁磁铁,内圈定子变成几个能够产生磁场的通电线圈——这样当我们在定子里输入3相余弦交流电时,定子线圈生成的磁场所产生的磁力向量做匀速圆周运动,就可以让电机匀速转动了! 2.电气实现首先介绍一下PWM,SPWM,SVPWM PWM不用多说了吧,脉宽调制技术,通过占空比来控制电压的输出值: 这里我们写一下输入电机电流和电压的关系: 根据我们前面所说,把我们的余弦电流带入就变成了: 我们为了让电机转起来就已经这么麻烦的使用了3相余弦波,我们现在要控制这个电机的时候傻眼了,这三相电看着怎么都不规矩,我们能不能把它变成两相相角差90°的弦波,这还减少一个控制对象,也不用考虑120°角,更重要的是我可以直接就把变换完的模型当做一个平面直角坐标系来看!答案当让是能。 我们来一波受力分析,让一个方向的力垂直于坐标轴另外两个力分解了不就可以了嘛。 于是:
由图受力分解得: 最终得到α与β的值,至此我们成功把3个方向的力变成2个垂直方向的力,把三相电变成了两相电,相角差90°。这就是Clark变换! 于是,我们的电机模型就变成了这样: 首先我们先明确几点 上面有说电流与磁场成正相关,磁场与力成正相关,那么电流就与力成正相关,所以力矩的大小就只和电流大小有关。 而对于所有电机而言,转子受力直接影响转速这里有一个误区,就是认为无刷电机的转速是直接与三相弦波的频率有关的,但试想没有力电机怎么转动,更谈何速度。这里可能又有些同学就说了:“我们高中物理讲匀速直线运动是不需要力也可以一直保持速度的。”拜托,大哥,这里是地球,你说那种得是在宇宙中才能实现。但是的确可以认为弦波频率和电机速度是间接相关的,电流的变化频率映射为力的变化频率从而影响转速,但是频率却不能绝对影响电机的转速 最后电机的位置(角度)取决于转速,说白了我想让电机转动到的位置不就是电机的初始位置加上转速(角速度)乘时间嘛。 所以我们要控制好一个无刷电机首先要控制它的电流大小来控制力矩,其次要控制它电流的频率来映射力的变化进而控制速度,最后我们要控制它速度的持续时间来控制位置。 这其中会有很多影响因素,比如摩擦力啊,空气阻力啊,重力啊,负载啊,我们在不能明确影响因素的具体数值时,就要用到我们的控制算法通过闭环来消除这些影响因素:foc中常用的是PID算法。 当然在这一切开始之前,我们首先得解决当我们用6个MOS管来生成3相电时,我们这6个MOS的通断该如何变化。这就涉及到一个问题:电机的扇区。 1.电机扇区扇区是判断6个MOS的导通状态的并不是判断电机位置的,电机位置在有感FOC中仅由传感器提供,并且是用这个电角度值来判断扇区位置的,不要搞反了 我们把之前α和β的值带入欧拉公式: 我们这里为了方便看把整个坐标系旋转60° 最终我们看到由三相电所产生的力的向量 合成的向量在绕原点做匀速圆周运动: 我们给这个合成的向量取个名字就叫做主向量吧 在这张动图里我们能发现几个特殊的位置:
这里的详细讲解请参考michaelf这位大佬的这篇文章:【SVPWM分析、各个扇区详细计算以及Matlab仿真】上面有几张图也是出自这篇文章。 2.电机控制我们在控制电机之前意识到一个问题,由于Iα和Iβ仍为正弦变化量,但是PID算法最适合控制的是线性系统,所以我们换一个坐标系,我们把垂直于主向量的称为q轴(力矩分量);与主向量重合的称为d轴(励磁分量):
最后我们是不是又回到了我们最初建立的电机模型上来: 电流环控制的运算最少动态响应最快 我们从头开始捋,输入的量为线性量,因为为了更好的发挥PID的效果,上面说了。我们的线性量只有dq轴的分量Id,Iq。所以我们要把dq变成三相弦波ABC要先经过反Park变换得到Iα,Iβ,再经过反Clark变化成为三相电IA,IB,IC。这里把反Clark模块,扇区封装成了一个模块就叫SVPWM。而我们反馈信号是由传感器得到的电角度值,还有电机电流采样值经过Clark和Park变化得到的Id,Iq误差值组成,这里我们的电流环PID主要用到的就是Id,Iq误差值。 所以框图如下: 这里电流环只用了PI控制 电流控制主要控制的就是电机的力矩 2.速度控制速度控制主要是通过控制力矩(电流)和传感器返回值形成闭环实现的: 通过速度控制和电角度值组成闭环: 这篇文章基本没用什么专业术语并且运算没用矩阵求解,我喜欢用我自己理解的方式把东西讲出来,有什么错误请读者直接指出,我会及时更正。 |
CopyRight 2018-2019 实验室设备网 版权所有 |