0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BLDC电机控制算法——FOC简述

硬件攻城狮 来源:CSDN-雪中嬉戏的柴犬 2023-03-22 15:58 次阅读

最近做完了一个直流无刷电机电机调速项目,查阅了各种大神所写的博客和论文,在这里我只做一下小小的总结:(PS最近有遇到相关课题,发现以前的描述并不完整,因此又补充了一些。)

FOC(Filed Oriented Control)是采用数学方法实现三相马达的力矩与励磁的解耦控制。

主要是对电机的控制电流进行矢量分解,变成励磁电流I d IdId 和交轴电流I q IqIq ,励磁电流主要是产生励磁,控制的是磁场的强度,而交轴电流是用来控制力矩,所以在实际使用过程中,我们常令I d = 0 Id=0Id=0 。之后我将详细介绍一下这个算法的数学原理和一些自己的理解。

#FOC矢量控制总体算法简述

输入:位置信息,两相采样电流值,(3相电流、电机位置或者电机速度)

输出:三相PWM波

所需硬件:两个ADC,一个光电或磁编码器,主控,依据电压等级的不同有mosfet或者IGBT或者SiC功率模块组成的三个半桥

FOC算法在本质上就是一些线性代数中的矩阵变换,我在这里讲述的是有传感器的FOC算法,转子的位置信息是通过绝对式磁编码器反馈的,直接是数字量。

第一步:根据AD采样得到cff0a27e-c884-11ed-bfe3-dac502259ad0.png两相电流值;

通过ADC采样得到电机的cff0a27e-c884-11ed-bfe3-dac502259ad0.png两项电流信息,由于基尔霍夫电流定律,同一个节点流入电流值与流出电流相等,我们可以计算出d004314a-c884-11ed-bfe3-dac502259ad0.png。三个电流的相位差为120°。

d0166e82-c884-11ed-bfe3-dac502259ad0.png

d027b6b0-c884-11ed-bfe3-dac502259ad0.png

第二步:通过Clark变换,将三相定子坐标系(三个轴互为120°d0366b06-c884-11ed-bfe3-dac502259ad0.png )转化为两相的定子直角坐标系(d04ad370-c884-11ed-bfe3-dac502259ad0.png

这个过程有点类似于力的矢量分解,把三相映射到两相的坐标轴之上,如下图所示。

d06993f0-c884-11ed-bfe3-dac502259ad0.png

第三步:通过Park变换将两相定子坐标系变换到两相转子坐标系

因为我们主要控制的是转子的旋转,所以需要通过Park变换将两相定子坐标系变换到两相转子坐标系(d06f5204-c884-11ed-bfe3-dac502259ad0.png),本质上就是矩阵的旋转变换,在这里,我们用到的转子的位置信息。

d07ee8a4-c884-11ed-bfe3-dac502259ad0.png

d08f6184-c884-11ed-bfe3-dac502259ad0.png

该位置信息便是由磁编码器返回的绝对角度信息,(其实也可以用增量式编码器,我感觉应该只是在电机位置校准的时候需要定义零点,其他的应该一样,我暂时还没有做过,属于猜想的,当然有的还可以通过无位置的控制方式,通过三相采样电流值计算转子位置信息,还有需要注意的是得到的是角度信息,我们需要将其转化为电角度信息, 电 角 度 = 角 度 ∗ 磁 极 对 数 电角度=角度*磁极对数电角度=角度∗磁极对数),其中d09c3576-c884-11ed-bfe3-dac502259ad0.png为励磁电流分量d0a37520-c884-11ed-bfe3-dac502259ad0.png为转矩电流分量,可以建立两个PI调节器分别对两个电流分量进行调节。

当励磁电流分量为0时,磁通完全由永磁体提供。电机所有的电流全部用来产生电磁转矩,只用控制d0ac15a4-c884-11ed-bfe3-dac502259ad0.png就可以控制电机转矩,就实现了电机的静态解耦。(其实这里很好理解,根据左手定则,F=BIL,这个公式中L是电机的固有参数,B磁通由两部分组成,一是由永磁体提供,二是由电流变化产生磁场;所以如果我们要实现给定的力距,需要控制单一变量:电流,则需要让B保持恒定,也就是使d0bbead8-c884-11ed-bfe3-dac502259ad0.png

第四步:根据PI调节器输出电压d0ca424a-c884-11ed-bfe3-dac502259ad0.png

这里需要注意有一个前提调节,那就是你已经基本调通了SVPWM波,电机可以正在旋转了,FOC控制算法主要是电机的稳定性控制,而不是电机本体的驱动。d0ca424a-c884-11ed-bfe3-dac502259ad0.png本身的参考值已定,d0e842fe-c884-11ed-bfe3-dac502259ad0.png只是根据给定值与实际返回值得差值调节电机的稳定性。

在调参的时候,人为给定d0f3d9e8-c884-11ed-bfe3-dac502259ad0.png ( 参 考 电 流 值 ) ,通过与实时采样电流比较,调节电流环PID,调节的目标是启动响应速度足够快,平稳运动波动足够小,通过DAC输出实时采样电流来进行调试;

第五步通过反Park变换将d10adaee-c884-11ed-bfe3-dac502259ad0.png(两相转子坐标系)转换为d117333e-c884-11ed-bfe3-dac502259ad0.png两相定子坐标系

d124299a-c884-11ed-bfe3-dac502259ad0.png

d12b869a-c884-11ed-bfe3-dac502259ad0.png

第六步:得到d13705ce-c884-11ed-bfe3-dac502259ad0.png之后,通过SVPWM算法计算d1448d34-c884-11ed-bfe3-dac502259ad0.png

SVPWM是磁场定向控制中常用的PWM波调制技术。其全称是空间矢量脉宽调制(Space Vector Pulse Width Modulation)是由三相功率逆变器的六个功率开关原件组成的特定开关模式产生的脉宽调制波,能够使输出电流波形尽可能接近于理想的正弦波。理论基础是平均值等效原理,即在一个开关周期内通过对基本电压矢量加以组合,使其平均值与给定电压矢量相等。

假设三相电压分别为d1523786-c884-11ed-bfe3-dac502259ad0.png,且相互之间相位差为120°,假设U m 为相电压的有效值,f为电源频率,则有:

d15bae74-c884-11ed-bfe3-dac502259ad0.png

则三相电压空间矢量相加的合成空间矢量d166e640-c884-11ed-bfe3-dac502259ad0.png就可以表示为:

d170c49e-c884-11ed-bfe3-dac502259ad0.png

d166e640-c884-11ed-bfe3-dac502259ad0.png是一个旋转的空间矢量,幅值不变,为相电压的峰值,且以角频率w=2πf按逆时针方向旋转,其在三相坐标轴上的投影就是对应的三相正弦量。

其实SVPWM算法的原理我也搞得有点懵,不过应用上倒是相对简单,可以把SVPWM算法想象成一个字典,根据d190328e-c884-11ed-bfe3-dac502259ad0.png的大小关系确定输出值。完全当成一个表在查就好了。

FOC算法的优点有:

1、当负载变化时,速度响应快而且精确;

2、电机的瞬时效率高;

3、能实现位置控制;

FOC和PID调节的方式参考了

http://bbs.elecfans.com/jishu_546001_1_1.html

主要为先调试内环之后调试外环;

1、首先应该调试ADC和编码器,看是否可以得到正确的采样电流和编码器数值;

2、调试FOC算法中的SVPWM环节,认为的给定d19c5762-c884-11ed-bfe3-dac502259ad0.png两个值,看电机是否运行,确保SVPWM没问题

3、 人为给定d1a60000-c884-11ed-bfe3-dac502259ad0.png参考值,通过实时采样电流,调节电流环的PID,调节的目标是启动响应速度足够快,平衡运行波动足够小,通过DAC输出实时的采样电流来进行观测调试(这里我直接在算法中让d1adcc18-c884-11ed-bfe3-dac502259ad0.png为0,所以只给定d1adcc18-c884-11ed-bfe3-dac502259ad0.png的值)。

4、人为给定速度,调试速度环PID,输出d1adcc18-c884-11ed-bfe3-dac502259ad0.png,调节的目标是根据在足够宽的速度范围内平稳启动和运行。可以采用专家PID算法;

5、位置环调节,输出为速度,调节目标,从一个位置快速的到达另一个位置来回跑,停止静差足够小,速度增减足够快,即瞬时速度大且需要合理的根据位置路径的长度规划一个速度曲线。

注意:如果要达到较高的速度精度,可能需要针对不同的速度值设置不同的速度PID参数,且需要进一步实时的调节观测器、PLL及速度PID参数。

其他的一些知识总结:

FOC与DTC控制区别(参考知乎一位大神的):

来源:https://www.zhihu.com/question/265079828/answer/291686684

FOC(电机矢量控制)要求严格的转子磁场定向,对于BLDC电机而言转子磁场方向始终与转子位置一致,因此其控制输入需要准确的转子绝对位置信号

DTC(直接转矩控制)实际上与基于定子磁场定向,而定子磁场则是依据电压积分估算获得,在这个过程中跟转子位置没有关系,其控制过程中用到的量也都是静止坐标系下的量,因此DTC控制相比于FOC控制要简单很多,完全不需要求解三角函数、坐标变换,如果需要用DTC进行速度闭环则需要测量电机的速度,但是依然不需要准确的绝对位置。

总结下来,从硬件的角度DTC相比于FOC可以省略一个位置传感器!当然,现在有很多改进的DTC算法需要用到电机的绝对位置。

但是在电机控制中,无论是DTC控制还是FOC控制,最后倒要基于PID调节实现稳定控制。

市场上电调分类

1、FOC电调:矢量控制,效率高,转矩脉动小,电机噪音小,减速制动快

2、普通电调:六步换向控制,方波驱动

STM32有BLDC开发套件

BLDC电机控制算法:

PID控制,专家PID控制,模糊PID控制,神经PID控制,基于遗传算法整定的PID控制,鲁棒控制,滑膜控制等;

电机方面的知识:

1、根据《无刷电机控制系统》中所讲述:目前国内外对无刷直流电机的定义一般有两种:一种定义认为只有梯形波/方波无刷直流电机才可以称为无刷直流电机,而正弦波无刷电机则被称为永磁同步电机(Permanent Magnet Synchronous Motor,PMSM);另一种定义认为梯形波/方波无刷电机和正弦波无刷电机都是直流无刷电机。

2、直流电机的调速是用直流电压来控制,电压越高,转的越快,不过单片机并不能输出可调的直流电压,于是只好变通采用PWM的方式来控制电机的输入电压。PWM占空比越高,等效电压就越高,当然单片机给出的PWM波形只是控制信号,而且最高电压只有5V,其能量并不足以驱动无刷直流电机,所以必须要再接一个功率管来驱动电机,功率管可以是MOSFET(场效应管),也可以是IGBT(绝缘栅双极晶体管)。

3、一般而言,电机的绕组数量都和永磁极的数量是不一致的(比如用9绕组6极,而不是6绕组6极),这是为了防止定子的磁极与转子的磁钢相互吸引对其,产生类似于步进电机的效果,此种情况下转矩会产生很大的波动。

4、外转子无刷直流电机比内转子电机要慢,但是力矩更大,例如四旋翼等可以不通过减速器直接驱动螺旋桨旋转。

5、无刷直流电机KV值定义为:转速/V,意思是输入电压每增加1V,BLDC电机空转转速增加的转速值。同系列同外形尺寸的无刷电机,根据绕线匝数的多少,会表现出不同的KV特性。绕线匝数多的,KV低,最高输出电流小,扭力大;绕线匝数少的,KV高,最高输出电流大,扭力小;

自己的一些经验:

1、计算角度信息一定要用电角度,而不能直接计算

2、电机的最高转速与电流和编码器采样频率也有一定关系;

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电流
    +关注

    关注

    40

    文章

    5967

    浏览量

    129817
  • 电机控制
    +关注

    关注

    3463

    文章

    1695

    浏览量

    264253
  • 算法
    +关注

    关注

    23

    文章

    4448

    浏览量

    90718
  • BLDC
    +关注

    关注

    194

    文章

    727

    浏览量

    95731
  • FOC
    FOC
    +关注

    关注

    20

    文章

    303

    浏览量

    42159

原文标题:BLDC电机控制算法——FOC简述

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FOC控制算法是什么?

    FOC(Field-Oriented Control),即磁场定向控制,也称矢量变频,是目前高效控制无刷直流电机BLDC)和永磁同步
    的头像 发表于 12-02 10:53 5426次阅读
    <b class='flag-5'>FOC</b><b class='flag-5'>控制</b><b class='flag-5'>算法</b>是什么?

    BLDC电机控制算法原理是什么?

    BLDC电机控制算法原理是什么?推荐课程:张飞软硬开源,基于STM32 BLDC直流无刷电机驱动
    发表于 07-13 18:46

    请问ST公司的FOC SDK库可以控制BLDC电机吗?

    刚刚接触STM32,请问ST公司的FOC SDK库可以控制BLDC电机吗,还是只能控制PMSM电机
    发表于 12-29 09:40

    必学的BLDC电机控制算法——FOC简述

    =0Id=0 。之后我将详细介绍一下这个算法的数学原理和一些自己的理解。FOC矢量控制总体算法简述输入:位置信息,两相采样电流值,(3相电流
    发表于 10-14 10:51

    电机控制板块帖子推荐第二期,这些高大上的项目设计都离不开电机

    ——FOC简述推荐理由:对FOC矢量控制总体算法进行透彻分析,帮你从另一个角度学习电机
    发表于 10-14 17:27

    BLDC电机控制算法最牛详解,入门看这篇就够了!

    BLDC 电机控制算法无刷电机属于自换流型(自我方向转换),因此控制起来更加复杂。
    发表于 08-24 09:45

    什么是FOC?带你看看无传感器FOCBLDC电机驱动芯片及解决方案

    获得更大的竞争力。什么是 FOCFOC(Field-Oriented Control),即磁场定向控制,也称矢量变频,是目前高效控制无刷直流电机
    发表于 06-10 11:40

    基于 MSPM0 MCU 实现使用无传感器 FOC 算法BLDC/ PMSM 控制

    或 PMSM的控制方法,磁场定向控制 (FOC) 算法被用于电机需要以高效率和超小可闻噪声平稳运行的许多应用。MSPM0MCU 凭借其低价
    发表于 04-12 14:38

    笙泉BLDC MCU: 应用于FOC无感控制

    和其它日常事务控制,MOC内核用于完成电机FOC运算控制。繁琐的FOC运算控制不再由软件完成,
    发表于 05-08 12:39

    利用恩智浦LPC1500微控制器简化BLDCFOC电机控制

    利用恩智浦LPC1500微控制器简化BLDCFOC电机控制
    发表于 09-21 08:55 11次下载
    利用恩智浦LPC1500微<b class='flag-5'>控制</b>器简化<b class='flag-5'>BLDC</b>和<b class='flag-5'>FOC</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>

    介绍了解TI永磁同步BLDC电机控制FOC控制方案

    TI永磁同步BLDC电机控制FOC控制方案演示
    的头像 发表于 06-13 06:02 1.1w次阅读

    简化BLDC马达设计的FOC控制技术

    简化BLDC马达设计的FOC控制技术(开关电源技术教程pdf)-简化BLDC马达设计的FOC控制
    发表于 09-18 17:20 120次下载
    简化<b class='flag-5'>BLDC</b>马达设计的<b class='flag-5'>FOC</b><b class='flag-5'>控制</b>技术

    BLDC电机控制算法(瑞萨)

    BLDC电机控制算法(瑞萨)(电源技术在线作业一)-BLDC电机
    发表于 09-23 12:06 196次下载
    <b class='flag-5'>BLDC</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b><b class='flag-5'>算法</b>(瑞萨)

    无刷直流电机、永磁同步电机FOC控制算法简介

    无刷直流电机BLDC)、永磁同步电机电机(PMSM)电机以及FOC控制
    发表于 03-09 10:09 14次下载
    无刷直流<b class='flag-5'>电机</b>、永磁同步<b class='flag-5'>电机</b>及<b class='flag-5'>FOC</b><b class='flag-5'>控制</b><b class='flag-5'>算法</b>简介

    BLDC电机控制算法FOC简述

    最近做完了一个直流无刷电机电机调速项目,查阅了各种大神所写的博客和论文,在这里我只做一下小小的总结:(PS最近有遇到相关课题,发现以前的描述并不完整,因此又补充了一些。) FOC(Filed Oriented Contr
    的头像 发表于 05-19 16:34 1532次阅读
    <b class='flag-5'>BLDC</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b><b class='flag-5'>算法</b>之<b class='flag-5'>FOC</b><b class='flag-5'>简述</b>