1、foc控制技术
现在无刷电机越来越多的进入人们的视野,因为他的控制精度更高,相对直流电机而言可以更稳定的工作等特点,被越来越多的应用于机器人行业,而无刷电机的控制离不开FOC控制。
FOC(field-oriented control)
为磁场导向控制,又称为矢量控制(vector control)
,是一种利用变频器(VFD)控制三相电机的技术,利用调整变频器的输出频率、输出电压的大小及角度,来控制电机的输出。由于处理时会将三相输出电流及电压以矢量来表示,因此称为矢量控制。
下面简单罗列一下一些我获取的资料:
- simplefoc官网
- 灯哥foc
淘宝店:灯哥foc淘宝店
灯哥foc文档:http://dengfoc.com/#/
灯哥foc v3 plus的使用指南:http://dengfoc.com/#/dengfoc/DengFOCV3P硬件文档/2使用指南
- csdn博主专栏
https://blog.csdn.net/loop222?type=blog
这个博主讲了很多关于foc的使用示例,整体来说很丰富。
- 轮腿机器人研究
轮腿机器人现在也很火,这里有一篇文章总结的很不错,这里记录一下:
三款经典的轮式/轮足机器人讲解,以及学习EG2133产生A/B/C驱动电机。个人机器人学习和开发路线(推荐)
另外,在开源社区最常用的FOC项目有:simpleFOC
,ODrive
,VESC
这三种。其中simpleFOC
因其简单易用,支持多种硬件平台,很适合新手入门。因此这里我首选simple foc作为入门记录一下。
- foc原理说明
这个我觉得灯哥的视频讲的还行,后期专门补一篇文章把他的视频文字化一下
灯哥手把手教你写FOC算法 系列课程
2、foc原理
FOC的本质是输入需求的电机力矩,之后吧需求的电机力矩转换为三相线的电力输出。
1、无刷电机工作原理
这里主要参考上面说的那个视频,首先最基础的一个原理就是电机的转动,我们知道,电机的转动是因为磁场的变化产生的,在这一点上有刷电机和无刷电机是一样的,有刷电机主要是靠磁场产生力之后利用惯性让电机转到位置之后通过换向片改变磁场方向实现的。而无刷电机也基本相同,目前见得比较多的无刷电机都是外转子的,无刷电机有三根线,可以根据这三根线来改变磁场方向,具体如下:
2、克拉克变换和克拉克逆变换
先总的例举一张foc的算法流程图,foc在计算过程中主要有下面几个流程,这节先说一下卡拉克变换是什么
根据上面的推倒,电机的转动需要三相输出相位差为120°的正弦波,我们把这三相称为ABC三相,但是如果我们直接去控制mos管生成这样一个正弦波不太方便,因为mos管一打开,至少开两个,就是说他们之间是耦合的,因此需要使用其他策略来实现。
克拉克变化就是把这个多变量的耦合降维到单一变量的控制上去,下面是一个降维流程图,先把三个波形降维到三个矢量(波形的变化就变成这三个矢量长短的变化),之后转到一个二维坐标系上去(就是这三个矢量往xy轴上做投影)。
将ia,ib,ic转到α和β坐标系上:
之后得出一个几个变量之间的关系:
转到矩阵表示:
另外,克拉克变换实际上还有个等幅值的形式:
这个等幅值形式可以用下面一个例子来验证,做下面一个电流的假设
这样计算出α和β
这样尽管两个轴重合,但是数值确不一样,这样就是做了一下化简
另外根据基尔霍夫定律,可以省去一个变量,最后得到这样一个表达式:
之后根据上面的式子做一下逆变换
3、帕克变化
经过上面的变化,我们已经把控制ia,ib,ic转到了控制α和β这两个变量上来了,而帕克变换就是将电机旋转的物理状态转化到α和β的一种变换。
帕克变换首先在定子线圈上加上了一个αβ坐标系,之后再αβ上叠加了一个转子,这样αβ坐标系会跟着转子一起转动。如下图所示:
帕克变换又在原来的坐标系上加了一个QD坐标系,让这个坐标系跟着电机一起转动,他和电机的转子固连
这样得到一些新概念,首先是电角度,电角度是这两个坐标系因为转动产生的差角,这样的话如果我们已知电角度的值,就可以在这两个坐标系之间互相转换。(这个值可以由编码器测出来)
转换推导如下:
帕克逆变换,这式子中,电角度由编码器测出,这样,在已知iq和id的情况下,就可以知道α和β,进而获取到abc三相的参数。
而iq和id是固定值,通常一般只控制iq的大小,id设置为0,因为iq是垂直于磁场方向,这个时候是最省力,最能发挥出来控制效果的。
3、foc硬件说明
1、外观
这里我用的是灯哥foc的硬件,大概是下图所示,他是由两个模块组成,这样虽然板子看起来不太好看,但是我觉得这样可以以后换其他芯片驱动(比如stm32来驱动),这样就能更多的了解simplefoc。
2、硬件设计
foc驱动部分,使用了eg2133+mos管的方案
使用ina240做电流检测
dc-dc这里用的是tps54331来稳压到5v,之后给单片机供电用的ams117-3.3芯片
4、基本程序示例
4、1程序来源说明
主要参考灯哥例程和官网说明来看,例程如下:
提一下官方文档的位置:https://docs.simplefoc.com/example_from_scratch
看的话从这里开始看: