首页 > 其他分享 >FOC 控制

FOC 控制

时间:2024-06-04 10:12:56浏览次数:4  
标签:采样 控制 矢量 ADC bmatrix 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\)转换为固定直角坐标 \(\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个基矢量来表达

../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的核心算法,此时,可以先给定一个\(V_q\),角度先手动累加,如果电机能稳定的旋转起来,那么SVPWM算法应该是正确的;

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

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

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

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

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

标签:采样,控制,矢量,ADC,bmatrix,FOC,电流
From: https://www.cnblogs.com/invo/p/18230252

相关文章

  • 引导过程与服务控制
    引导过程排除启动类故障服务控制及切换运行级别优化启动过程Linux操作系统的引导过程系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux操作系统的引导过程将完成一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备。引导过程总览Linux......
  • 飞睿智能雷达人体感应器,智能灯光控制,比红外传感器更胜一筹
    在智能家居日益普及的今天,智能灯光控制已成为提升家居生活品质的重要一环。飞睿智能雷达人体感应器作为这一领域的新星,以其独特的静止状态人体检测能力、高灵敏度以及强抗干扰能力,为智能灯光控制带来了未有的创新。本文将深入探讨雷达人体感应器的技术原理、应用场景以及其在......
  • 引导过程与服务控制
    1Linux操作系统的引导过程    系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux操作系统的引导过程将完成一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备1.1 引导过程总览    Linux操作系统的引导过程一般包括以下几......
  • FastAdmin 后端控制器与前端页面传参
    1.菜单让链接带参 2.控制器传参数到前端JS$this->assignconfig('tab',$tab); 3.JS传参回后端index_url:'contract/contract/index/tab/'+Config.tab, ......
  • Python基础---程序的控制结构
    Python基础—程序的控制结构Python基础---程序的控制结构一、程序流程成图(一)顺序结构(二)程序的分支控制结构1:单分支结构2.二分支结构3.多分支结构4.分支嵌套(三)程序的循环结构1、while循环2.while循环扩展模式3.for循环4.for循环扩展模式二、循环控制语句(一)conti......
  • 基于单片机8155四层电梯控制系统设计
    **单片机设计介绍,基于单片机8155四层电梯控制系统设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机8155的四层电梯控制系统设计概要如下:一、系统概述本设计旨在通过单片机8155为核心控制器,构建一个四......
  • QShop商城-页面按钮权限控制(基于角色)
    QShop商城-页面按钮权限控制基于角色的权限控制在业界接受度较高的权限模型是RBAC(Role-BasedAccessControl),基本的概念是将“角色”这个概念赋予用户,在系统中用户通过分配角色从而获得相应的权限,一个用户可以有多个角色,一个角色可以有多个权限,从而实现权限的灵活配置。......
  • 如何用Python语言实现远程控制电源开关
    如何用Python语言实现远程控制电源开关呢?本文描述了使用Python语言调用HTTP接口,实现控制电源开关,通过控制电源开关,从而控制电器设备。可选用产品:可根据实际场景需求,选择对应的规格序号设备名称厂商1智能WiFi墙壁插座10A统软云物联2智能WiFi墙壁插座16A3智能WiFi插座10A4智能......
  • 《计算机网络微课堂》实验19 网际控制报文协议ICMP的应用
    下面我们来进行一个仿真实验,本仿真实验的目的在于验证PING命令和tracert命令的工作原理,这两个命令都是基于网际控制报文协议ICMP而实现的。ping命令在我们之前的仿真实验中经常会用到,我们使用它来测试主机之间的连通性,或者是主机和路由器之间的连通性,又或者是路由器和路由......
  • 控制台相关
    输入输出输出Console.WriteLine("123123");//光标空行Console.Write("123123123123");//不空行输入stringstr=Console.ReadLine();//如果在ReadKey(true)不会把输入的内容显示在控制台上charc=Console.ReadKey(true).KeyChar;Console.WriteLine(c);控制台......