当前位置:首页 > 新型工业化 >电机控制foc算法讲解(foc算法驱动bldc电机)

电机控制foc算法讲解(foc算法驱动bldc电机)

我最近完成了一个无刷直流电机的电机调速项目,并查看了各个专家撰写的博客和论文。这里我只是做一个小总结:(PS最近遇到相关话题,发现前面的描述不完整,所以补充了一些。)

FOC(Field Oriented Control)利用数学方法实现三相电机转矩和励磁的解耦控制。

电机控制foc算法讲解(foc算法驱动bldc电机)

主要是将电机的控制电流矢量分解为励磁电流I d IdId 和交轴电流I q IqIq。励磁电流主要产生励磁并控制磁场强度,而交轴电流则用于控制扭矩。因此,在实际使用中,我们常常设置I d=0 Id=0Id=0。后面我会详细介绍这个算法的数学原理以及我自己的一些理解。

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

输入:位置信息、两相采样电流值、(三相电流、电机位置或电机转速)

输出:三相PWM波

所需硬件:两个ADC、一个光电或磁编码器、主控、三个由MOSFET 或IGBT 或SiC 功率模块组成的半桥(具体取决于电压等级)

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

步骤一:基于AD采样获取两相电流值;

通过ADC采样得到电机的两条电流信息。由于基尔霍夫电流定律,同一节点的流入电流值和流出电流值相等,我们可以计算出来。三个电流的相位差为120。

步骤2:利用Clark变换将三相定子坐标系(三轴互成120****)转换为两相定子直角坐标系()

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

步骤3:通过Park变换将两相定子坐标系变换为两相转子坐标系

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

位置信息是磁编码器返回的绝对角度信息。 (其实也可以用增量编码器,我感觉应该是在校准电机位置的时候才定义零点,其他的应该也是一样的,我还没做过,不过是推测,当然,有的还可以通过无位置控制通过三相采样电流值计算出转子位置信息,还需要注意的是,获得的角度信息是角度信息,我们需要将其转化为电角度信息,电角度=角度*磁极对数电角度=角度*磁极对数量电角度=角度*磁极对数量),其中励磁电流分量是扭矩电流分量。可以建立两个PI调节器来分别控制这两个电流。调整金额。

当励磁电流分量为0时,磁通量完全由永磁体提供。电机的电流全部用于产生电磁扭矩,仅通过控制即可控制电机扭矩,从而实现电机的静态解耦。 (其实这里很容易理解,根据左手定则,F=BIL。这个式子中,L是电机的固有参数,B磁通由两部分组成,一部分由下式提供:一个是永磁体,另一个是电流变化产生的磁场;所以如果我们想要达到给定的力距,需要控制单个变量:电流,我们需要保持B不变,即令)

步骤4:根据PI调节器输出电压

这里有一个前提调整需要注意,就是你已经基本调好SVPWM波了,电机可以转动了。 FOC控制算法主要是针对电机的稳定性控制,而不是电机本身的驱动。参考值本身已经设定好,仅根据给定值与实际返回值的差异来调整电机的稳定性。

调整参数时,通过与实时采样电流比较,人为调整电流环PID(参考电流值)。调整的目标是启动响应速度足够快,平滑运动波动足够小。实时采样电流由DAC输出。执行调试;

第五步,通过Park逆变换将(两相转子坐标系)转换为两相定子坐标系。

步骤6:获得后,通过SVPWM算法进行计算

SVPWM是磁场定向控制中常用的PWM波调制技术。它的全称是空间矢量脉宽调制。它是由三相电源逆变器的六个功率开关元件组成的特定开关方式产生的脉宽调制波,可以使输出电流波形尽可能接近理想的正弦波。其理论基础是平均值等价原理,即通过将一个开关周期内的基本电压矢量组合起来,使平均值等于给定的电压矢量。

假设三相电压分别为,相位差为120,U m 为相电压有效值,f 为工频,则有:

则三相电压空间向量相加得到的空间向量可表示为:

它是一个等幅的旋转空间矢量,即相电压的峰值,以角频率w=2f逆时针旋转。它在三相坐标轴上的投影就是相应的三相正弦量。

其实我对SVPWM算法的原理有点困惑,但是应用还是比较简单的。你可以把SVPWM算法想象成一个字典,根据大小关系确定输出值。只需将其视为一个表并检查即可。

FOC算法的优点是:

1、负载变化时,速度响应快速、准确;

2、电机瞬时效率高;

3、能够实现位置控制;

FOC和PID调节方法参见

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

主要目的是先调试内循环,再调试外循环;

1、首先调试ADC和编码器,看能否得到正确的采样电流和编码器值;

2、调试FOC算法中的SVPWM环节,给定两个值,看电机是否运行,确保SVPWM没有问题。

3、人为给定参考值,通过实时采样电流来调节电流环的PID。调整的目标是启动响应速度足够快,平衡运行波动足够小。实时采样电流通过DAC输出,用于观察和调试(这里我在算法中直接设为0,所以只给定值)。

4、人为设定速度,调试速度环PID、输出,调整目标在足够宽的速度范围内平稳启动和运行。可采用专家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、根据《无刷电机控制系统》:目前国内外对无刷直流电机一般有两种定义:一种定义认为只有梯形波/方波无刷直流电机才能称为无刷直流电机。电机,而正弦波无刷电机称为永磁同步电机(PMSM);另一种定义是梯形波/方波无刷电机和正弦波无刷电机都是直流无刷电机。

2、直流电机的调速是由直流电压控制的。电压越高,旋转速度越快。然而,单片机无法输出可调的直流电压,因此我们必须使用PWM来控制电机的输入电压。 PWM 占空比越高,等效电压越高。当然,单片机给出的PWM波形只是控制信号,最大电压只有5V。它的能量不足以驱动无刷直流电机,因此必须连接另一个功率管。为了驱动电机,功率管可以是MOSFET(场效应晶体管)或IGBT(绝缘栅双极晶体管)。

3、一般来说,电机的绕组数与永磁极数不一致(例如采用9个6极绕组而不是6个6极绕组)。这是为了防止定子的磁极和转子的磁体相互吸引。它产生类似于步进电机的效果,此时扭矩会波动很大。

4、外转子无刷直流电机比内转子电机速度慢,但扭矩更大。例如,四旋翼可以直接驱动螺旋桨旋转,无需减速器。

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

我自己的一些经历:

1、计算角度信息必须使用电角,不能直接计算。

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

版权声明:本文为CSDN博主“柴犬玩雪”原创文章,遵循CC 4.0 BY-SA版权协议。转载时请附上原文出处链接及本声明。

最新资讯

推荐资讯