首页 > 其他分享 >FOC学习笔记-基于灯哥FOC

FOC学习笔记-基于灯哥FOC

时间:2023-11-10 23:33:19浏览次数:40  
标签:电机 灯哥 FOC 笔记 无刷电机 foc 坐标系

1、foc控制技术

现在无刷电机越来越多的进入人们的视野,因为他的控制精度更高,相对直流电机而言可以更稳定的工作等特点,被越来越多的应用于机器人行业,而无刷电机的控制离不开FOC控制。

FOC(field-oriented control)为磁场导向控制,又称为矢量控制(vector control),是一种利用变频器(VFD)控制三相电机的技术,利用调整变频器的输出频率、输出电压的大小及角度,来控制电机的输出。由于处理时会将三相输出电流及电压以矢量来表示,因此称为矢量控制。

下面简单罗列一下一些我获取的资料:

  • simplefoc官网

https://simplefoc.com/

  • 灯哥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项目有:simpleFOCODriveVESC这三种。其中simpleFOC因其简单易用,支持多种硬件平台,很适合新手入门。因此这里我首选simple foc作为入门记录一下。

  • foc原理说明

这个我觉得灯哥的视频讲的还行,后期专门补一篇文章把他的视频文字化一下
灯哥手把手教你写FOC算法 系列课程

2、foc原理

FOC的本质是输入需求的电机力矩,之后吧需求的电机力矩转换为三相线的电力输出。

1、无刷电机工作原理

这里主要参考上面说的那个视频,首先最基础的一个原理就是电机的转动,我们知道,电机的转动是因为磁场的变化产生的,在这一点上有刷电机和无刷电机是一样的,有刷电机主要是靠磁场产生力之后利用惯性让电机转到位置之后通过换向片改变磁场方向实现的。而无刷电机也基本相同,目前见得比较多的无刷电机都是外转子的,无刷电机有三根线,可以根据这三根线来改变磁场方向,具体如下:
image

2、克拉克变换和克拉克逆变换

先总的例举一张foc的算法流程图,foc在计算过程中主要有下面几个流程,这节先说一下卡拉克变换是什么
image

根据上面的推倒,电机的转动需要三相输出相位差为120°的正弦波,我们把这三相称为ABC三相,但是如果我们直接去控制mos管生成这样一个正弦波不太方便,因为mos管一打开,至少开两个,就是说他们之间是耦合的,因此需要使用其他策略来实现。

克拉克变化就是把这个多变量的耦合降维到单一变量的控制上去,下面是一个降维流程图,先把三个波形降维到三个矢量(波形的变化就变成这三个矢量长短的变化),之后转到一个二维坐标系上去(就是这三个矢量往xy轴上做投影)。

image

将ia,ib,ic转到α和β坐标系上:
image

之后得出一个几个变量之间的关系:
image

转到矩阵表示:
image

另外,克拉克变换实际上还有个等幅值的形式:
image

这个等幅值形式可以用下面一个例子来验证,做下面一个电流的假设
image

这样计算出α和β
image

这样尽管两个轴重合,但是数值确不一样,这样就是做了一下化简
image

另外根据基尔霍夫定律,可以省去一个变量,最后得到这样一个表达式:
image

之后根据上面的式子做一下逆变换
image

3、帕克变化

经过上面的变化,我们已经把控制ia,ib,ic转到了控制α和β这两个变量上来了,而帕克变换就是将电机旋转的物理状态转化到α和β的一种变换。

帕克变换首先在定子线圈上加上了一个αβ坐标系,之后再αβ上叠加了一个转子,这样αβ坐标系会跟着转子一起转动。如下图所示:
image

帕克变换又在原来的坐标系上加了一个QD坐标系,让这个坐标系跟着电机一起转动,他和电机的转子固连
image

这样得到一些新概念,首先是电角度,电角度是这两个坐标系因为转动产生的差角,这样的话如果我们已知电角度的值,就可以在这两个坐标系之间互相转换。(这个值可以由编码器测出来)
image

转换推导如下:
image

帕克逆变换,这式子中,电角度由编码器测出,这样,在已知iq和id的情况下,就可以知道α和β,进而获取到abc三相的参数。
image

而iq和id是固定值,通常一般只控制iq的大小,id设置为0,因为iq是垂直于磁场方向,这个时候是最省力,最能发挥出来控制效果的。

3、foc硬件说明

1、外观

这里我用的是灯哥foc的硬件,大概是下图所示,他是由两个模块组成,这样虽然板子看起来不太好看,但是我觉得这样可以以后换其他芯片驱动(比如stm32来驱动),这样就能更多的了解simplefoc。

image

2、硬件设计

foc驱动部分,使用了eg2133+mos管的方案
image

使用ina240做电流检测
image

dc-dc这里用的是tps54331来稳压到5v,之后给单片机供电用的ams117-3.3芯片
image

4、基本程序示例

4、1程序来源说明

主要参考灯哥例程和官网说明来看,例程如下:

image

提一下官方文档的位置:https://docs.simplefoc.com/example_from_scratch

看的话从这里开始看:
image

4、2双电机开环速度控制

4、3双电机开环位置控制

标签:电机,灯哥,FOC,笔记,无刷电机,foc,坐标系
From: https://www.cnblogs.com/lx2035/p/17823161.html

相关文章

  • 学习笔记九
    学习笔记九一、任务详情自学教材第6章,提交学习笔记(10分),评分标准如下知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核......
  • 【PySide6】QChart笔记(二)—— QBarSeries的使用
    一、QBarSeries简介1.官方描述https://doc.qt.io/qtforpython-6/PySide6/QtCharts/QBarSeries.html【译注:官方文档内容过于简洁,表明完全仅继承了QAbstractBarSeries,且没有扩展任何属性、方法和信号。因此,直接参考QAbstractBarSeries的文档:】https://doc.qt.io/qtforpython-6/......
  • 【学习笔记】随机化算法
    例题P7831[COCI2009-2010#3]PATULJCI题解首先对每个颜色开一个vector<int>保存其位置,随后对于一段区间\([l,r]\)和一个颜色\(c\),可以很快速的求出\([l,r]\)内\(c\)出现的次数。然后进行随机化,每次随机一个元素并查看他的出现次数。若随机\(t\)次,那么随机不到的概率是\(\frac......
  • openGauss学习笔记-119 openGauss 数据库管理-设置数据库审计-设置文件权限安全策略
    openGauss学习笔记-119openGauss数据库管理-设置数据库审计-设置文件权限安全策略119.1背景信息数据库在安装过程中,会自动对其文件权限(包括运行过程中生成的文件,如日志文件等)进行设置。其权限规则如下:数据库程序目录的权限为0750。数据库数据文件目录的权限为0700。ope......
  • 11/10训练笔记
    P7831[CCO2021]TravellingMerchant题解考虑出度为0的点显然不行随后,进行一个类似于拓扑排序的过程即可注意到需要建反图原图也得保留注意判-1代码:#include<iostream>#include<algorithm>#include<cstring>#include<vector>#include<queue>usingnamespacestd;str......
  • 【学习笔记】初等数论-组合计数
    加法原理若完成一件事的方法有\(n\)类,其中第\(i(1\lei\len)\)类方法包括\(a_i\)种不同的方法,且这些方法互不重合,则完成这件事共有\(\sum\limits_{i=1}^{n}a_i\)种不同的方法。乘法原理若完成一件事的步骤有\(n\)个,其中第\(i(1\lei\len)\)个步骤包括\(a......
  • 《信息安全系统设计与实现》学习笔记9
    《信息安全系统设计与实现》学习笔记9第六章信号和信号处理信号和中断广义的“进程”从事日常事务的人在用户模式或内核模式下运行的Unix/Linux进程执行机器指令的CPU“中断”是发送给“进程”的事件,它将“进程”从正常活动转移到其他活动,称为“中断处理”......
  • Java笔记—Java接口
    Interface接口简介接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第九周学习笔记
     202113252023-2024-1《信息安全系统设计与实现(上)》第九周学习笔记一、任务要求自学教材第6章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知......
  • 梦断代码 读书笔记 02
    工程师和艺术家软件开发者是工程师还是艺术家。这个问题,总结了软件开发过程中无数细节问题,这些问题统统没有答案。软件开发领域的圣战比宗教中的还要多。从项目管理到软件设计,只有模糊的建议,以经验性方法为主导,估算工期的方法叫“拍”:一拍脑袋有了,一拍胸口干了,一拍大腿坏了,一拍......