FOC算法与SVPWM详解
FOC算法与SVPWM详解
磁场定向控制(FOC)是一种用于电机控制的先进技术,通过坐标变换实现对电机磁场和转矩的解耦控制。本文将详细介绍FOC算法与SVPWM(空间矢量脉宽调制)的相关内容。
一、FOC简述
FOC(Field Oriented Control)即磁场定向控制,是一种用于电机控制的先进技术。它通过坐标变换,将电机的定子电流分解为励磁电流和转矩电流,实现对电机磁场和转矩的解耦控制。FOC能使电机在不同工况下都保持良好的性能,具有高精度、高动态响应、高效率等优点,可提高电机的运行稳定性和可靠性,降低能耗。广泛应用于工业自动化、电动汽车、机器人等领域,是现代电机控制的核心技术之一。
二、FOC流程
- 对电机三相电流进行采样,获得Ia、Ib、Ic。
- 进行克拉克变换和帕克变换(需要电机电角度,在有感FOC中可由编码器获取)。克拉克变换就是将三相静止坐标系(a-b-c坐标系)下的物理量转换到两相静止坐标系(α-β坐标系),帕克变换就是将静止的坐标系变换成旋转的(跟随采集到的电流的变化旋转,使正弦电流变成直线)。
- 帕克变换之后得到Iq和Id(Id我们希望它等于0),将这两个值放到PI控制器得到Uq和Ud(电流环PI控制,当然我们也可以加入速度环和角度环)。
- 再进行帕克逆变换(进行PI控制后的量我们再让它旋转起来,因为给电机的是正弦型的电压),将结果放入SVPWM算法中(SVPWM算法输入U_alfa、U_beta,输出的就是控制三相逆变电路的Ia(A相)、Ib(B相)、Ic(C相))。
- SVPWM控制逆变器驱动电机。
三、克拉克变换
我们在采集三相电流之后,需要先进行克拉克变换。克拉克变换是将三相静止坐标系(a-b-c坐标系)下的物理量转换到两相静止坐标系(α-β坐标系)下的变换方法。在交流电机控制中,三相系统的分析和控制较为复杂,通过克拉克变换可以将三相问题简化为两相问题,降低计算复杂度。
四、帕克变换
帕克变换是将两相静止坐标系(α-β坐标系)下的物理量转换到两相旋转坐标系(d-q坐标系)下的变换方法。在d-q坐标系中,电机的控制方程可以得到进一步简化,实现对电机的磁场和转矩的解耦控制。
五、帕克逆变换
帕克逆变换是帕克变换的逆过程,它将两相旋转坐标系(d-q坐标系)下的物理量转换回两相静止坐标系(α-β坐标系)下,以便生成用于驱动电机的三相电压或电流信号。
在电机控制中,经过PI控制算法得到d-q坐标系下的控制量后,需要通过帕克逆变换将其转换回α-β坐标系,再经过SVPWM得到三相控制信号,从而实现对电机的精确控制。
我们所做的各种变换就是为了将电流值从正弦变成直线,方便进行PI控制,然后将控制输出再变回去,控制电机。
六、SVPWM
- 逆变器开关状态与电压矢量:以三相电压型逆变器为例,它有6个功率开关器件,通过控制这些开关器件的通断,可以得到8种不同的开关状态,对应着6个非零电压矢量和2个零电压矢量。例如,当A相上桥臂开关导通,B、C相下桥臂开关导通时,输出的电压矢量为V1;当所有上桥臂开关导通或所有下桥臂开关导通时,输出的是零电压矢量V0或V7。
- 扇区划分:将电压空间矢量平面划分为6个扇区,每个扇区为60°。根据当前电压空间矢量所在的扇区,可以确定需要合成该矢量的两个相邻非零电压矢量和零电压矢量。例如,若电压空间矢量位于第一扇区,则需要使用V1和V2以及零电压矢量来合成。
- 矢量合成与占空比计算:根据伏秒平衡原理,在一个采样周期内,通过合理分配相邻非零电压矢量和零电压矢量的作用时间,使得合成的电压空间矢量与参考电压矢量相等。以第一扇区为例,假设参考电压矢量Vref在该扇区,通过计算Vref在V1和V2方向上的投影,得到V1和V2的作用时间T1和T2,再根据采样周期Ts,计算出零电压矢量的作用时间T0 = Ts - T1 - T2。
- PWM信号生成:根据计算得到的各电压矢量的作用时间,生成相应的PWM信号,控制逆变器开关器件的通断。例如,在一个采样周期内,先施加T1时间的V1对应的开关状态,再施加T2时间的V2对应的开关状态,最后施加T0时间的零电压矢量对应的开关状态,从而实现对逆变器输出电压的控制,达到控制电机运行的目的。
利用下图的三相逆变电路控制A、B、C三相的开关产生不同的磁场,进而控制电机转子转动,快速连续进行就可以使电机转起来。
三相逆变电路
- 三相逆变电路上下桥不能同时导通。
- 上桥开通下桥关断定义为状态1
- 上桥关断下桥开通定义为状态0
三组半桥一共有8种组合方式,编码分别为:000、001、010、011、100、101、110、111。我们打开第一组半桥的上桥臂、第二组和第三组半桥的下桥臂(其余的关闭),那么就可以让流从电源正极流过电机的a相,流经b、c相,然后回到电源负极。
七段式时间分配
在扇区1时,合成目标矢量的是v1(100)和v2(110)以及0矢量(000),(111)。因为0矢量要平均分配,所以t0/2(000是低电平,111是高电平,高电平占一半),而v1和v2在A相都是1,所以Ta=t1+t2+t0/2。而v1在B相为0,所以时间不计(计算的时间是作用时间,即上桥臂打开的时间)。所以Tb=t2+t0/2。而v1,v2在C相都是0,所以Tc=t0/2。Ta,Tb,Tc就是三路PWM波的高电平时间,即对应A,B,C三相逆变电路的上桥臂开通时间。
注意:不同扇区下,t1,t2对应的开关状态是不同的。
设置互补输出和死区时间
- 选择合适的定时器:通常,高级定时器(如TIM1、TIM8)支持互补输出和死区时间设置,适合用于驱动三相逆变器。在STM32CubeMX的“Pinout & Configuration”选项卡中,选择一个高级定时器,例如TIM1。
- 配置定时器的基本参数:时钟源、预分频器、自动重载值等。
- 配置PWM输出通道:通道模式、PWM模式、占空比等。
- 启用互补输出:在定时器的配置选项中,找到“Output Compare Mode”部分,对于每个通道,启用互补输出(Complementary Output)。
- 设置死区时间:在定时器的配置选项中,找到“Dead Time and Break Inputs”部分,设置死区时间的值。
- 使能刹车功能(可选):如果需要刹车功能,可以在“Dead Time and Break Inputs”部分启用刹车输入(Break Input),并设置相应的参数。
七、FOC的优势
- 低转速下控制:由于控制原理的区别,无刷电调只能控制电机工作在高转速下,低速下很难控制;而FOC控制器则完全没有这个限制,不论在什么转速下都可以实现精确控制。
- 电机换向:同上面的理由,由于无感电调无法反馈转子位置,因此很难实现电机正反转的换向;而FOC驱动器的换向性能极其优秀,最高转速下正反转切换可以非常顺畅;此外FOC还可以以能量回收的形式进行刹车控制。
- 力矩控制:普通电调都只能控制电机转速,而FOC可以进行电流(力矩)、速度、位置三个闭环控制。
- 噪音:FOC驱动器的噪音会比电调小很多,原因是普通电调采用方波驱动,而FOC是正弦波。
本文原文来自CSDN