原文:https://blog.csdn.net/u010632165/article/details/103656254

文章目录
基于STM32的有感FOC算法学习与实现总结
1 前言
2 FOC算法架构
3 坐标变换
3.1 Clark变换
3.2 Park变换
3.3 Park反变换
4 SVPWM
5 反馈部分
5.1 相电流
5.2 电角度和转速
6 闭环控制
6.1 电流环
6.2 速度环
6.3 位置环
写在最后
基于STM32的有感FOC算法学习与实现总结
1 前言
Field Oriented Control 磁场定向控制 (FOC),FOC是有效换向的公认方法。FOC的核心是估计转子电场的方向。一旦估计了转子的电角度,就将电动机的三相换相,以使定子磁场垂直于转子磁场。本文参考了TI,microchip的相关文档,基于STM32F103系列单片机实现了带编码器的FOC算法,实现了对通用伺服电机(表贴式PMSM)的控制。

2 FOC算法架构
FOC算法的整体架构如下图所示,采用了双闭环的控制系统,包括速度环和电流环,也叫转矩环,而传统的伺服驱动器还需要位置环,图中并未给出,这个后面另外描述,反馈部分采用双电阻采样,和增量编码器。

所以,从上图可以了解到,实现FOC算法总共需要以下几个部分;

坐标变换,由于PMSM是非线性的复杂系统,为了实现控制上的解耦,需要进行坐标变换;
Clark变换;
Park变换;
SVPWM模块;
反馈量采集部分
相电流采集
编码器信号采集
闭环控制部分可以分为三个环节;当然,根据需求,双闭环也比较常见;
位置环
速度环
电流环
下面会对每个环节的关键部分做一下介绍,具体的实现与细节由于篇幅有限会另外开篇幅做介绍。

3 坐标变换
O A B C OABCOABC三相坐标到静止坐标系α β \alpha\betaαβ坐标系可以分为恒幅值变换和恒功率变换,两者的主要区别就是变换系数不同,下文统一使用恒幅值变换。

3.1 Clark变换
三相电流ABC分别为i A i_{A}i 
A
​    
 ,i B i_{B}i 
B
​    
 ,i C i_{C}i 
C
​    
 ,根据基尔霍夫电流定律满足以下公式:
i A + i B + i C = 0 i_{A}+i_{B}+i_{C} = 0

A
​    
 +i 
B
​    
 +i 
C
​    
 =0

静止坐标系α β \alpha\betaαβ,α \alphaα轴的电流分量为i α i_{\alpha}i 
α
​    
 ,i β i_{\beta}i 
β
​    
 ,则Clark变换满足以下公式:

i α = i A i β = 1 3 ∗ i A + 2 3 ∗ i B i_{\alpha} = i_{A} \\ i_{\beta} = \cfrac{1}{\sqrt{3}}*i_{A}+\cfrac{2}{\sqrt{3}}*i_{B}

α
​    
 =i 
A
​    
 

β
​    
 = 
3
​    
 
1
​    
 ∗i 
A
​    
 + 
3
​    
 
2
​    
 ∗i 
B

3.2 Park变换
Park变换的本质是静止坐标系α β \alpha\betaαβ乘以一个旋转矩阵,从而得到d q dqdq坐标系,其中;

d dd 轴又叫直轴,方向与转子磁链方向重合;
q qq 轴又叫交轴,方向与转子磁链方向垂直;
所以,帕克变换又叫交直变换,由静止坐标系α β \alpha\betaαβ上的交流量最终变换到d q dqdq坐标系上的直流量;
Park变换满足以下公式;
i d = i α ∗ c o s θ + i β ∗ c o s θ i q = − i α ∗ s i n θ + i β ∗ c o s θ i_{d}=i_{\alpha}*cos\theta+i_{\beta}*cos\theta \\ i_{q}=-i_{\alpha}*sin\theta+i_{\beta}*cos\theta

d
​    
 =i 
α
​    
 ∗cosθ+i 
β
​    
 ∗cosθ

q
​    
 =−i 
α
​    
 ∗sinθ+i 
β
​    
 ∗cosθ

3.3 Park反变换
Park又叫直交变换,满足以下公式:
i α = i d ∗ c o s θ − i q ∗ s i n θ i β = i d ∗ s i n θ + i q ∗ c o s θ i_{\alpha}=i_{d}*cos\theta-i_{q}*sin\theta \\ i_{\beta}=i_{d}*sin\theta+i_{q}*cos\theta

α
​    
 =i 
d
​    
 ∗cosθ−i 
q
​    
 ∗sinθ

β
​    
 =i 
d
​    
 ∗sinθ+i 
q
​    
 ∗cosθ

4 SVPWM
实际的马鞍波如下图所示;

5 反馈部分
反馈部分需要采集相电流,电角度和速度,如下图所示;
红色曲线表示 i A i_{A}i 
A
​    
 ;
黄色曲线表示 i B i_{B}i 
B
​    
 ;
蓝色曲线表示电角度 θ e \theta_{e}θ 
e
​    
 ;

图中黄色箭头所指的点,可以看到满足以下条件:
θ e = 0 i A = 0 \theta_{e} = 0 \\ i_{A} = 0
θ 
e
​    
 =0

A
​    
 =0

5.1 相电流
相电流采样通常有三种方案;

单电阻采样;
双电阻采样;
三电阻采样;
5.2 电角度和转速
电角度的测量需要通过对编码器进行正交解码,STM32的TIM定时器自带编码器接口,可以很轻松实现对正交编码器的正交编码;

6 闭环控制
6.1 电流环
最终给出电流闭环的结构,如下图所示;

红色曲线表示 i α i_{\alpha}i 
α
​    
 
黄色曲线表示 i β i_{\beta}i 
β
​    
 
粉色曲线表示 i q i_{q}i 
q
​    
 
蓝色曲线表示 i d i_{d}i 
d

由于使用的表贴式PMSM,满足以下条件:
L d = L q = L s L_{d} = L_{q} = L_{s}

d
​    
 =L 
q
​    
 =L 
s

所以,d dd轴和q qq轴可以共用同一套PI参数,可以通过经验试凑法进行参数整定,或者可以通过测量电机参数,计算PI参数的大致范围,然后再进行细调。

6.2 速度环

电流环调节稳定之后,速度环需要调整速度PI控制器,这里可以参阅如何调试PI参数。

6.3 位置环
红色曲线表示给定位置;
黄色曲线表示实际位置;
粉色曲线表示给定转速;
蓝色曲线表示实际转速;

写在最后
经过一段时间的调试,终于完成了从零到一的FOC算法框架,由于能力有限,有的地方理解不到位,需要细加斟酌,如有错误的地方,希望斧正,另外由于FOC内容较多,篇幅较长,时间有限,后续会进一步进行补充,细节的部分会单独开篇进行讨论。

小麦大叔

CSDN签约作者
有梦想的咸鱼
更多干货,欢迎关注公众号:[小麦大叔]
一个热衷技术的工程师的原创分享,
涉及内容包括但不限于嵌入式、物联网、单片机、编程技术、PCB、硬件设计等等。
来交个朋友?
————————————————
版权声明:本文为CSDN博主「小麦大叔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010632165/article/details/103656254

有感FOC算法学习与实现总结(转)相关推荐

  1. 有感FOC算法学习与实现总结

    文章目录 基于STM32的有感FOC算法学习与实现总结 1 前言 2 FOC算法架构 3 坐标变换 3.1 Clark变换 3.2 Park变换 3.3 Park反变换 4 SVPWM 5 反馈部分 ...

  2. 图论算法及其matlab实现_BLDC有感FOC算法理论及其STM32软硬件实现

    用来做机器人关节伺服 详情见以下博文,建议电脑端浏览.位置速度电流三环控制,后期存在优化空间,整个项目为模仿Odrive实现. BLDC有感FOC算法理论及其STM32软硬件实现 - 我叫平沢唯 - ...

  3. STM32 电机教程 21 - 基于ST MCLIB无感FOC 与 有感FOC 代码差异分析

    前言 磁场定向控制又称矢量控制(FOC), 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩. PMSM的磁场定向控制框图如下图所示: 第19.20讲分别实现了基于N ...

  4. STM32 电机教程 22 - 基于ST MCLIB无感FOC算法变有感(HALL)FOC算法

    前言 磁场定向控制又称矢量控制(FOC), 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩. PMSM的磁场定向控制框图如下图所示: 第21讲对比分析了基于ST M ...

  5. 转稚晖军大佬 --【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术

    转稚晖军大佬 --[自制FOC驱动器]深入浅出讲解FOC算法与SVPWM技术 [自制FOC驱动器]深入浅出讲解FOC算法与SVPWM技术 0.前言 最近想做一个机器人项目,设计中需要用到高性能超小体积 ...

  6. FOC算法与SVPWM技术

    最近看到了FOC这个东西,感觉很有意思,想着以后用这个算法做个东西,目前的想法是用开源的ODrive方案,自己做一个有感单电机驱动的板子,并且加入一点自己的东西,但是这不是目前工作的重点,所以就先学习 ...

  7. 无感FOC算法中解决单电阻采样重构三相电流的难题

    大四在某公司实习,主要是做无刷电机控制算法,在学习FOC的过程中,因为公司要压低产品成本,只能允许我用单电阻采样的方式来做电流环.于是我就到处找单电阻采样的资料,跑遍了各大论坛,资料少的可怜,只能讲出 ...

  8. PMSM的有感FOC闭环控制讲解

    参考资料: [自制FOC驱动器]深入浅出讲解FOC算法与SVPWM技术 永磁同步电机(PMSM)的FOC闭环控制详解 FOC入门教程 FOC实现过程中主要公式整理 永磁电机知多少? 无刷直流电机矢量控 ...

  9. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

最新文章

  1. 报名 | 刘鹰教授:草根创新力:中国经济快速发展的秘诀
  2. 251f与ips屏显示器对比_1千多元预算,2020年PS平面设计/摄影后期显示器推荐/选购指南(2k+高色域屏)...
  3. ucl 数据压缩开源库 简介
  4. php 比较,PHP类型比较
  5. 解决使用CoreData时报duplicate symbol错误问题
  6. GameMaker Studio 中的组合技(Combo)设置
  7. SDWebImage 加载Https自签名证书时的图片问题
  8. Kubernetes的yaml文件中的command使用
  9. 图的最小生成树和最短路径算法思路总结(Prim,Kruskal,Dijkstra,Floyd)
  10. 【转】1.6异步编程:IAsyncResult异步编程模型 (APM)
  11. Acrobat如何修改PDF/A模式下的PDF文档
  12. python26章_[Python设计模式] 第26章 千人千面,内在共享——享元模式
  13. 计算机网络重点知识整理(自顶向下)
  14. 模拟退火算法(simulated annealing algorithm)求极值
  15. 新手python爬虫代码-Python爬虫实战之取电影天堂,,新手练手项目
  16. 【时光它会替我们记得】- 1024有奖征文
  17. php使用sqlserver
  18. 记一次频繁YoungGC生产问题排查思路及解决方案
  19. scrapy mysql数据库_Python3学习系列(十三):Scrapy将数据存入Mysql数据库
  20. C#实现气泡屏保(1个timer实现)

热门文章

  1. MakeCert CAB压缩 Signcode
  2. USB协议详解第12讲(USB传输-初探)
  3. 拍拍抢拍精灵 --腾讯拍拍秒杀器--截图
  4. [转]DOTween教程☀️DOTween的使用教程
  5. Mapbox、GeoServer离线部署矢量地图
  6. 什么是WebSocket?WebSocket在Vue中如何使用?
  7. 小白写了一堆if-else,大神实在看不下去了,竟然用策略模式直接摆平了
  8. 中国大学生计算机设计大赛--软件应用与开发类--经验总结
  9. 嵩天-Python语言程序设计程序题--第五周:函数和代码复用
  10. 数据结构 -串、数组和广义表