首页 > 编程知识 正文

foc正弦波教程(Foc电调入门)

时间:2023-05-03 17:18:48 阅读:76889 作者:2693

深入浅出FOC(Field Oriented Control)前言:为什么要学习FOC? 1 .电机控制是自动控制领域的重要环节。

2 .目前直流无刷电机的应用越来越广泛。 例如无人机、机械臂、云台、仿生机器人等。

3 .电机控制工程师工资高。

需要什么样的基础? 1.C语言、指针、结构、编程规范。

2 .用于2.STM32外围设备。

3 .阅读原理图。

4 .阅读芯片手册。

5 .顺序坐标系知识

为什么要出这个教程? 1 .直流无刷电机的应用越来越广泛,网上资料比较零散,希望提供系统的教程。 自始至终深入挖掘,让初学者快速入门直流无刷电机的控制。

V1.0.0版

联系人QQ群: 585424959

作者老家母猪兴趣小组

备注转发请注明出处

教程正在持续更新

第一章直流无刷电机简介基本物理知识准备左手定律百度百科

知道电流方向和感应线方向,判断通电导体在磁场中受力的方向,例如电机。 伸出左手,将磁感应线穿过手掌(手掌对准n极,手背对准s极),如果4个手指指向电流方向,拇指方向就是导体受力的方向。

右手法则百度百科

右手握住通电螺线管,使四根手指指向电流方向时,拇指指向的一端为通电螺线管的n极

直流电刷电动机的概要直流电刷电动机通过换向器改变电流的方向,改变施加在绕组上的力的方向。 这是机械转向,因此带来摩擦大、发热大、效率低等一系列缺点

直流无刷电机介绍

直流无刷电机通过使用电子部件代替机械换向,解决了直流无刷电机的缺点。 为了便于分析,将直流无刷电机抽象为上图图案,定子由三个线圈构成,转子由一对磁极构成。 通过改变ABC三者的电流方向来改变定子产生的磁场的方向,使磁铁旋转。

第二章六级换向控制方式直流无刷电机六级换向

如上图所示,通过控制ABC三相电流的方向,可以控制直流无刷电机的旋转。 具体步骤如下。

从步进a相电压b相电压c相电压转子目标角度1 -翻转1502-2103翻转-2704-翻转3305-翻转306翻转- 90可以看出,我们只要像步进电机那样重复这六个旋转方向转换就可以了答案是: 在这里,必须认识到转子位于特定位置时会触发换向操作。 换向是被动换向,提高转速必须提高电流,使定子产生的磁场更强,转子更快到达目标点后才能触发换向。 具体如下表所示。

正转:转子实际角度执行步进转子目标角度90-1501150150-2102210210-2703270-3304330330-3053030-90690反转转子执行角度执行步进转子目标角度150-9069090 -。有以下三种方式。

1 .安装编码器计算当前角度。

2 .安装霍尔元件计算当前角度。

3 .通过检测电流计算当前角度

编码器方式获取电机当前角度的编码器方式有增量编码器和绝对编码器两种。

增量编码器:

每次启动都需要进行校准,并且为了不因单片机的性能问题而丢失脉冲,需要每转对编码器进行校准一次。 因此,经常使用ABZ三轴编码器,AB输出正交信号,z轴输出中断。

绝对式编码器:

出厂前只需进行一次校准,然后不分解机器就不需要校准。 通信方式一般为SPI和IIC,需要考虑通信时间对系统的影响。

为什么要校准编码器?

这是因为无法保证编码器的0正好与电机绕组的0对应地安装

霍尔元件获取电机当前角度霍尔元件介绍百度百科

霍尔元件有相互相差120的安装方法和相差60的安装方法两种,因此在使用前请判断电机是否为该安装方法。

在霍尔元件具有n级指向性的情况下,霍尔元件的输出电平为1

霍尔水平与转子角度的对应关系如下表所示

转子实际角度(n级指向)霍尔元件a级霍尔元件b级霍尔元件c级90-150010150-210011210-270001270-330101320-3010030-90110

霍尔水平与转子角度的对应关系如下表所示

转子实际角度(面向n阶)霍尔元件a电平霍尔元件b电平霍尔元件c电平90-150010150-210000210-270001270-330101330-301130-90110检测电流电动机的当前角度为电动机的角度

根据收集到的电流可以判断电机的当前角度在哪个范围内。

具体分析用FOC控制方法说明。

程序编制抽屉的问题看到这里,我想大家有几个疑问。 也就是说,6级换向方式只控制电机的正反旋转,然后可以通过控制相电压来调节转速。 那么,怎么控制电机的位置?

且这种方式有一部分电流是让电机旋转,有一部分是让电机发热,那么如何做到效率最高呢。通过观察电流发现,电机三相电流并不是正弦波,为了解决以上问题便出现了FOC矢量控制。

第三章 FOC矢量控制 FOC控制框架图

相信很多人在网上都看到过这个控制框图,咋一看还挺复杂,充斥着各种变换和检测,很多资料直接对着这个框图进行讲解,而本教程到这里只是让大家对这个框图有基本印象,接下来我们逐步分析各个模块来源,让大家都能自己画出来这个控制框图。

第四章 FOC开环控制 控制框图简化

看着FOC详细控制框图我们发现无从下手,不知道从哪坐起,我们回想一下直流有刷电机的学习过程,首先是让电机转起来,然后进行速度控制,再进一步进行位置控制,同样我们在FOC学习过程中依然可以这样做,我们首先将位置环和速度环去掉,然后就剩下SVPWM,和电流检测部分,既然只是让电机转起来那么电流检测也不需要了,我们就直接给一个目标速度,开环运行,这时候控制框架就能简化成下图所示。
备注:(这时候可能会有人有疑问,我们不是用六步换向的方式已经让电机转动起来了吗,为什么这里又要学习如何让电机转动?是因为六步换向方式存在一些缺点,而这里使用另一种控制方式(FOC)让电机转动更加平滑,效率更高。)

接下来我们对这部分做详细讲解

IQ与ID介绍

仔细观察我们可以发现,当三相绕组产生的磁场方向始终与转子磁铁相切的时候最为理想,这样相同电流下产生的旋转力量最大(图中IQ),当我们三相绕组产生的磁场方向与转子磁场方向反向平行时,这时候电机会被吸在原地不动(图中ID),电流都用来产生热量。因此我们以转子磁铁为参考,建立DQ坐标系,DQ坐标系随转子转动。(备注:为了便于理解我对磁铁进行了放大)

如图当我们让ID为0, IQ为1则转子就会逆时针旋转,且转速随着IQ的变大而变大。
如图当我们让ID为1, IQ为0则转子就会定在原地,且发热量随着ID的变大而变大。
因此可以总结一下,要想让转子平稳的转动下去就需要让三相绕组产生的磁场方向一直和转子磁铁的磁场方向垂直,即图中的IQ, 同时使ID尽可能为0以减小发热。那么怎么让绕组产生的磁场方向等效为IQ ID呢由此变引入Park反变换和Clark反变换。

Park反变换

我们知道DQ坐标系是旋转坐标系,但我们的三相绕组是静止的,因此首要任务是将旋转坐标系变换为静止坐标系,即找到一个静止坐标系使其产生的磁场等同于DQ坐标其,我们将这个坐标系命名为αβ坐标系,其中由DQ坐标系向αβ坐标系这一变换过程称为反Park变换。

其中阿尔法轴与a相绕组对齐。
Uα = Udcosθ - Uqsinθ
Uβ = Uqcosθ + Udsinθ
经过Park反变换我们将旋转坐标系变成了静止坐标系,接下来便是让静止的两相坐标系向3相绕组坐标系进行变换。

Clark反变换

Clark反变换的目的是把两个垂直的坐标系转变为三相绕组坐标系。经过Clark反变换后就可以通过三相绕组去产生ID和IQ了。(备注FOC控制框图中没有Clark变换的原因是通过后边公式的化简发现只需要Iα和Iβ即可)

但是我们最终能控制到的硬件是三相全桥即六个MOS管的导通,因此我们最终要的是MOS管的导通时间,即定时器输出的高电平时间,即PWM的占空比,因此我们接下来要通过Ua Ub Uc求出Mos导通时间。

8个矢量介绍

我们已知我们的输入是控制Ua Ub Uc导通状态导通时间和转子角度,我们的目标(输出)是ID IQ,我们要解决的问题是如何通过输入产生输出,在解决问题之前我们要先看一看我们的输入是什么,有什么物理含义。
由于同一桥臂上下两个MOS不能同时导通(短路),因此6个MOS总共由8种状态,由于每种状态都会产生一个固定方向的磁场,我们将8种状态称为8种矢量。

矢量a桥臂状态b桥臂状态c桥臂状态00004100611020103011100151017111

(注:0代表下桥臂打开 1代表上桥臂打开)

假设我们的电机处于0°位置,那么要想让电机转动起来我们只需要产生一个90°的矢量,那么只需要在一个周期内矢量2和矢量6作用的时间各占一半即可产生一个90°的矢量,总结来说就是我们通过控制相邻矢量导通时间比例可以控制矢量的方向,通过插入0矢量可以改变矢量的大小,因此我们在一个控制周期内通过8个矢量的配比来产生任意方向和任意大小的矢量。(只要我们能够产生任意方向的矢量我们就可以先读取当前转子角度,然后产生一个超前90度的矢量,这个矢量即是IQ)。

我们知道矢量方向的范围是0-360度那么矢量的大小是什么呢?由于三相绕组阻值基本一样,因此每个矢量的最大值为Udc2/3,其中Udc为母线电压(电源电压),但我们发现各个方向上矢量最大值并不一样,为了让电机平滑转动,我们的目标矢量的最大值应为上图中六边形的内切圆的半径,即Udc2/3*sqrt(3)/2 = Udc/sqrt(3).具体参考下图。

SVPWM生成

接下来先看一个例子,例如我们想要产生0-60°的任意一个方向的矢量。

通过计算我们可以得出其他几个扇区的矢量作用时长
由于所有结果格式基本相同因此我们假设:
K = sqrt(3) * Ts / Udc
U1 = Uβ
U2 = -sqrt(3) / 2 * Uα - Uβ/2
U3 = sqrt(3) / 2 * Uα - Uβ/2
则可以总结出下表:

扇区T0T1T2T3T4T5T6T71(Ts-T4-T6)/2000K*U30K*U1(Ts-T4-T6)/22(Ts-T2-T6)/20-K*U3000-K*U2(Ts-T2-T6)/23(Ts-T2-T3)/20K*U1K*U2000(Ts-T2-T3)/24(Ts-T1-T3)/2-K*U10-K*U3000(Ts-T1-T3)/25(Ts-T1-T5)/2K*U2000K*U30(Ts-T1-T5)/26(Ts-T4-T5)/2000-K*U2-K*U10(Ts-T4-T5)/2

得出上表之后我们就可以通过8个矢量来产生任意大小和任意方向的矢量了。通过表格发现不同扇区用到的矢量不一样,因此我们需要做一下扇区判断,之前讲过扇区判断有3种方式,其中电流检测在这里讲解。

利用电流做扇区判断

观察反Clark变换公式和我们之前U1,U2,U3可以发现,这两个公式极其相像。

由图可以看出我们能够使用U1 U2 U3的正负来判断当前所处扇区
设 U1>0 时 A=1, 否则 A=0;
设 U2>0 时 B=1, 否则 B=0;
设 U3>0 时 C=1, 否则 C=0;
设 N=4C+2B+A。

扇区U1>0 (A)U 2>0 (B)U3>0 ©N1(0°-60°)10152(60°-120°)10043(120°-180°)11064(180°-240°)01045(240°-300°)01136(300°-0°)0011

既然我们已经拿到了每个矢量的作用时长,我们便可以求出每个Mos的导通时间,接下来便是把这些导通时间兑换成PWM形式。

七段式SVPWM

我们已知任意一个方向和大小的矢量需要的8个矢量的作用市场,那么如何控制硬件电路实现呢,我们熟悉的硬件电路控制是PWM模式,那么有办法把矢量作用时长换成Mos的导通时间吗,当然可以,首先我们看一下每个矢量对应的MOS导通时间,然后通过组合把这些时间组成PWM模式。

接下来我们要做的是把这些矢量信号排列组合成PWM信号例如在第一个扇区我们用到了矢量T0 T4 T6 T7

按照同样方法便可分析出所有扇区对应的PWM信号


这样的波形不就是我们熟悉的中央对其方式的PWM波吗。到此我们已经完成了FOC开环运行。

程序编写 第五章 FOC电流闭环

其实到这里我想大家应该已经明白Clark变换和Park变换的作用了,我们拉开视角再看我们刚刚开环做了什么。
1.给出目标电流
2.通过定时器控制三相全桥电路输出这个目标电流。
(不用纠结电压电流,因为它们之间只是个系数问题)
那么我们要闭环岂不是只需要检测出实际电流然后做个PID闭环即可。那么为什么要用到Clark变换和Park变换呢,因为我们如果不用这些变换那么我们的目标电流和实际电流都是正弦波,这对我们PID控制很不利,因为我们熟悉的PID是目标值不变,让实际值去跟随目标值。而且我们拿到的三相电流Ia Ib Ic不直观,Iα和Iβ也不直观,而Iq和Id就直观的多,Id用于发热,Iq用于旋转。对Iq和Id进行闭环控制通俗易懂还能配合速度环,因为想要转的快就增加Iq呗。

Clark变换

Clark变换的目的在于三相变两相。

Park变换

Park变换的目的在于静止变旋转。

电流采样

经过变换之后我们就要面临电流采样问题了。通过上一章对7段式SVPWM的分析我们发现在一个周期内,不同时刻Mos的导通是不一样的,一般采样电阻都是接在下桥臂,因此只能在相关桥壁的下MOS管打开时刻进行该相的电流采样。


由电路图可知
1.必须在三相全桥的下桥臂打开的时候才能进行该相电流采样。
2.Mos的开关瞬间会对相电流产生干扰,因此采样时间避开Mos导通状态切换的时刻。
3.3电阻可以在任意时刻进行电流采样
4.根据SVPWM波形发现每个扇区都有两相电流变化较小,一相电流变化较大,因此三电阻采样时要采集电流变化较小的两相。
5.由于当目标电流较大时,可能会存在一相的占空比接近100%,则导致该相电流无法采样,因此双电阻采样要对最大输出电流做限制,流出电流采样时间。
6.单电阻要在一个周期内采样两次电流。

我们可以在t5和t6时刻采样到-ic和ia电流完成电流采样

程序编写 第六章 速度闭环

相信大家到这里已经较为清楚了,速度环,目标是给定速度,反馈是实际速度,输出是Id Iq,其中Id为0,Iq越大转的越快。

程序编写 第七章 位置闭环

位置环同理,目标是给定位置,反馈是实际位置,输出是目标速度。

程序编写 程序编写 第六章 速度闭环

相信大家到这里已经较为清楚了,速度环,目标是给定速度,反馈是实际速度,输出是Id Iq,其中Id为0,Iq越大转的越快。

程序编写 第七章 位置闭环

位置环同理,目标是给定位置,反馈是实际位置,输出是目标速度。

程序编写 备注

转发请注明出处

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。