FOC 简介
FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制(VC,Vector Control),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。
FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。
简单来说,FOC是一种对无刷电机的磁场定向控制以此来驱动转子的控制方法
FOC 流程框架
1.速度环+电流环
2.位置环+速度环+电流环
3.位置环+电流环
低速时,速度反馈误差大;去掉了速度环,这里的位置环使用完整的PID控制,即把微分项加上
4.FOC 最小系统
矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度反馈和计算以及电流环和速度环等。
满足最小条件的矢量控制运行,可以不加速度环,只实现电流环,当电流环调试成功之后,再加速度环,以及后期的位置环。
最小的FOC系统的功能模块
- ADC电流采样
- 坐标变换与SVPWM
- 位置估计——霍尔、编码器或者状态观测器
- 电流环PI控制
ADC 采样
ADC 模块用于电流的采样,因为要根据合成矢量所在扇区,灵活的配置采样通道与采样点,所以ADC 通常配置为注入通道模式,它可以打断规则通道的采样,优先采集注入通道。
以常用芯片意法半导体的 STM32 为例,ADC 的触发模式常常设置为 PWM 定时器的 CH4 触发,再根据桥臂的打开状态,配合电流的上升和稳定时间,准确的计算采样点的时刻,进行有效的采样
坐标变换——基变换
坐标变换就是坐标系之间的转换,即基变换
Clarke变换
将固定坐标系\(abc\)转换为固定直角坐标 \(\alpha\beta\)
\[\begin{bmatrix} I_\alpha \\I_\beta \end{bmatrix}=\begin{bmatrix} 1 & -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2}\end{bmatrix}\begin{bmatrix}I_a \\I_b \\I_c\end{bmatrix} \]Park变换
将固定直角坐标 \(\alpha\beta\) 绕原点逆时针旋转 \(\theta\)得到运动直角坐标系\(dq\)
\[\begin{bmatrix} I_d \\I_q \end{bmatrix}=\begin{bmatrix} cos\theta & sin\theta \\ -sin\theta & cos\theta \end{bmatrix}\begin{bmatrix} I_\alpha \\I_\beta \end{bmatrix} \]\(\theta\)表示转子旋转的机械角度,\(I_q\)和\(I_d\)是虚拟的电流量,这是一个解耦过程,电机转矩与\(I_q\)成正比,\(I_d\)会削弱磁场,一般设置\(I_d\)为常数0;若控制过程中\(I_d\)为变量,这种控制方法为弱磁控制
转换可以采用全浮点实现,也可以采用标幺化(归一化)处理
SVPWM
空间矢量脉冲,\(V_\alpha,V_\beta\)经过Clarke逆变换获得三个固定的\(V_a,V_b,V_c\),旋转60°后,可以很方便得到6个基矢量,这6个基矢量用来描述任意一个空间矢量电压显然需要一定策略
该策略就是扇区判断,这样仅仅需要最近的2个基矢量来表达
配合占空比,即零矢量,通过三个PWM信号可以调制出(功率范围内)任意长度的矢量
要完成一个周期的旋转,使得MOS开关次数最少以及减少谐波噪声,就要设计好切换顺序
SVPWM 的实现一般涉及到硬件 PWM 模块的配置,矢量合成扇区的判以及作用时间的计算等,常采用 STM32 的两个高级定时器 TIM1 和 TIM8 实现。
电流环PI控制
FOC控制中主要用到三个PID环,从内环到外环依次是:电流环、速度环、位置环
通过电流反馈来控制电机电流(扭矩) -> 然后通过控制扭矩来控制电机的转速 -> 再通过控制电机的转速控制电机位置。
内环不需要用到微分参数,PI控制器
调试过程
完成以上模块基本上可以实现一个 FOC 的最小控制系统,当然为了调试方便,可以配置 DAC 功能、USART 功能、CAN 功能等等。
由简到繁、由内到外、循序渐进的过程。以有感霍尔传感器为例:
-
根据板子的晶振合理配置系统时钟,确保嘀嗒定时器按约定频率运行;
-
按原理图设置配置对应的电流采样ADC通道,在规则通道的基础上加入三个注入通道,并考虑初始电流偏置的影响!合理配置ADC中断函数,测试ADC中断的响应频率是否符合预期;
-
配置高级定时器,输出互补对称的方波,加入死区,改变占空比,示波器查看输出是否合理。测量H桥驱动芯片的输出级是否能快速响应输入级的变化,且波形是否符合预期;配合H桥驱动,给定几个固定占空比,比如25%、50%、75%等,万用表测量H桥输出是否是电源电压的1/4、1/2、3/4;
-
配置霍尔传感器接口定时器,手动拨动电机一圈,在有效停止的位置上看程序是否有中断响应,测试程序响应到的霍尔状态是否按正序或逆序排列;
-
配置DAC功能,主要用于调试电角度和采样电流;
-
编写FOC核心算法,包括Clarke变换、park变换、SVPWM算法等;比较关键的环节是SVPWM,可以先打开ADC的中断,在中断中执行FOC的核心算法,此时,可以先给定一个\(V_q\),角度先手动累加,如果电机能稳定的旋转起来,那么SVPWM算法应该是正确的;
-
电机旋转起来之后,可以开始测试霍尔电角度的积分算法是否正确;这个时候可以使用DAC输出电角度,用示波器观察电角度曲线是否是一条平滑上升或下降的直线,如果台阶明显,那么很可能是同步电角度没有测量正确,或者是积分计算错误;
-
电角度正确之后,可以将电流采样送到DAC输出,测试ADC采样电流是否是正弦函数,这一步间接验证了ADC采样点的配置是否正常;之后测试电流环响应是否够快,是否震荡等;
-
加上速度环,测试速度响应曲线;速度的计算一般放到嘀嗒定时器中,速度计算的频率一定要高于速度环的频率,否则调速会不正常;
-
如果有位置环,在确保以上功能正常后再测试位置环。
完成以上步骤基本上已经写出了一套属于自己的FOC矢量控制算法,也算是真正的迈进了矢量控制的大门
标签:采样,控制,矢量,ADC,bmatrix,FOC,电流 From: https://www.cnblogs.com/invo/p/18230252