FOC 控制

FOC 简介

FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制(VC,Vector Control),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。

FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。

简单来说,FOC是一种对无刷电机的磁场定向控制以此来驱动转子的控制方法

FOC 流程框架

1.速度环+电流环

../all images/FOC 控制-20240329144550538.webp

2.位置环+速度环+电流环

../all images/FOC 控制-20240329153644396.webp

3.位置环+电流环

低速时,速度反馈误差大;去掉了速度环,这里的位置环使用完整的PID控制,即把微分项加上

../all images/FOC 控制-20240329154124494.webp

4.FOC 最小系统

矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度反馈和计算以及电流环和速度环等。

满足最小条件的矢量控制运行,可以不加速度环,只实现电流环,当电流环调试成功之后,再加速度环,以及后期的位置环。

最小的FOC系统的功能模块

  • ADC电流采样
  • 坐标变换与SVPWM
  • 位置估计——霍尔、编码器或者状态观测器
  • 电流环PI控制

ADC 采样

ADC 模块用于电流的采样,因为要根据合成矢量所在扇区,灵活的配置采样通道与采样点,所以ADC 通常配置为注入通道模式,它可以打断规则通道的采样,优先采集注入通道。

以常用芯片意法半导体的 STM32 为例,ADC 的触发模式常常设置为 PWM 定时器的 CH4 触发,再根据桥臂的打开状态,配合电流的上升和稳定时间,准确的计算采样点的时刻,进行有效的采样

坐标变换——基变换

坐标变换就是坐标系之间的转换,即基变换

Clarke变换

将固定坐标系abc转换为固定直角坐标 αβ

[IαIβ]=[1121203232][IaIbIc]

Park变换

将固定直角坐标 αβ 绕原点逆时针旋转 θ得到运动直角坐标系dq

[IdIq]=[cosθsinθsinθcosθ][IαIβ]

θ表示转子旋转的机械角度,IqId是虚拟的电流量,这是一个解耦过程,电机转矩与Iq成正比,Id会削弱磁场,一般设置Id为常数0;若控制过程中Id为变量,这种控制方法为弱磁控制

转换可以采用全浮点实现,也可以采用标幺化(归一化)处理

SVPWM

空间矢量脉冲,Vα,Vβ经过Clarke逆变换获得三个固定的Va,VbVc,旋转60°后,可以很方便得到6个基矢量,这6个基矢量用来描述任意一个空间矢量电压,显然这需要一定策略

该策略就是扇区判断,这样仅仅需要最近的2个基矢量来表达

../all images/FOC 控制-20240329155248929.webp

配合占空比,即零矢量,通过三个PWM信号可以调制出(功率范围内)任意长度的矢量

要完成一个周期的旋转,使得MOS开关次数最少以及减少谐波噪声,就要设计好切换顺序(五步法和七步法)

SVPWM 的实现一般涉及到硬件 PWM 模块的配置,矢量合成扇区的判以及作用时间的计算等,常采用 STM32 的两个高级定时器 TIM1 和 TIM8 实现。

电流环PI控制

FOC控制中主要用到三个PID环,从内环到外环依次是:电流环速度环位置环

通过电流反馈来控制电机电流(扭矩) -> 然后通过控制扭矩来控制电机的转速 -> 再通过控制电机的转速控制电机位置

内环不需要用到微分参数,PI控制器

调试过程

完成以上模块基本上可以实现一个 FOC 的最小控制系统,当然为了调试方便,可以配置 DAC 功能、USART 功能、CAN 功能等等。

由简到繁、由内到外、循序渐进的过程。以有感霍尔传感器为例:

  1. 根据板子的晶振合理配置系统时钟,确保嘀嗒定时器按约定频率运行;

  2. 按原理图设置配置对应的电流采样ADC通道,在规则通道的基础上加入三个注入通道,并考虑初始电流偏置的影响!合理配置ADC中断函数,测试ADC中断的响应频率是否符合预期;

  3. 配置高级定时器,输出互补对称的方波,加入死区,改变占空比,示波器查看输出是否合理。测量H桥驱动芯片的输出级是否能快速响应输入级的变化,且波形是否符合预期;配合H桥驱动,给定几个固定占空比,比如25%、50%、75%等,万用表测量H桥输出是否是电源电压的1/4、1/2、3/4;

  4. 配置霍尔传感器接口定时器,手动拨动电机一圈,在有效停止的位置上看程序是否有中断响应,测试程序响应到的霍尔状态是否按正序或逆序排列;

  5. 配置DAC功能,主要用于调试电角度和采样电流;

  6. 编写FOC核心算法,包括Clarke变换、park变换、SVPWM算法等;比较关键的环节是SVPWM,可以先打开ADC的中断,在中断中执行FOC的核心算法,此时,可以先给定一个Vq,角度先手动累加,如果电机能稳定的旋转起来,那么SVPWM算法应该是正确的;

  7. 电机旋转起来之后,可以开始测试霍尔电角度的积分算法是否正确;这个时候可以使用DAC输出电角度,用示波器观察电角度曲线是否是一条平滑上升或下降的直线,如果台阶明显,那么很可能是同步电角度没有测量正确,或者是积分计算错误;

  8. 电角度正确之后,可以将电流采样送到DAC输出,测试ADC采样电流是否是正弦函数,这一步间接验证了ADC采样点的配置是否正常;之后测试电流环响应是否够快,是否震荡等;

  9. 加上速度环,测试速度响应曲线;速度的计算一般放到嘀嗒定时器中,速度计算的频率一定要高于速度环的频率,否则调速会不正常;

  10. 如果有位置环,在确保以上功能正常后再测试位置环。

完成以上步骤基本上已经写出了一套属于自己的FOC矢量控制算法,也算是真正的迈进了矢量控制的大门

作者:invo

出处:https://www.cnblogs.com/invo/p/18230252

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Invo1  阅读(1174)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示