FOC 算法基础之欧拉公式
FOC中电压矢量合成的推导,对于欧拉公式的几何意义做了一个全面的回顾。
欧拉公式
欧拉是一个天才,欧拉公式甚至被誉为上帝创造的公式,然后在FOC算法中也可以看到欧拉公式的影子,不过因为是最基础的知识,所以基本上的换算都是一笔带过,但是如果这里没有掌握就很难搞清楚实数平面如何换算到复数平面,以至于在SVPWM的求解中存在的都是向量运算,所以这里有必要理解欧拉公式的物理意义,这样可以加深FOC算法的理解。
欧拉公式如下所示;
{eix=cosx+isinx⋯①eπi+1=0⋯②\begin{cases}
e^{ix} = cosx + isinx \cdots ①\\
e^{\pi i} + 1 = 0 \cdots ②
\end{cases}
{eix=cosx+isinx⋯①eπi+1=0⋯②
这两个公式都被称之为欧拉公式;
eee 是自然对数的底,iii 是虚数(i=−1i=\sqrt{-1}i=−1)。
根据式 ① 可以推导出以下另外两个变式;
推导过程如下;
令x=−xx = -xx=−x,可以得到④式,如下;
{eix=cosx+isinx⋯③e−ix=cosx−isinx⋯④\begin{cases}
e^{ix} = cosx + isinx \cdots ③\\
e^{-ix} = cosx - isinx \cdots ④\\
\end{cases}
{eix=cosx+isinx⋯③e−ix=cosx−isinx⋯④
所以 ③ 等式左右两端与 ④ 式 相加得到;
cosx=eix+e−ix2⋯⑤
cosx = \cfrac{e^{ix}+e^{-ix}}{2}\cdots ⑤
cosx=2eix+e−ix⋯⑤
所以 ③ 等式左右两端与 ④ 式 相减得到;
sinx=eix−e−ix2i⋯⑥
sinx = \cfrac{e^{ix}-e^{-ix}}{2i}\cdots ⑥
sinx=2ieix−e−ix⋯⑥
几何意义
reiθre^{i\theta}reiθ则表示模长为rrr的向量旋转了角度θ\thetaθ,下面会进一步介绍。
复数平面
复数平面坐标xxx轴作为实数轴,yyy轴作为虚数轴。这里可以通过欧拉公式,将实数平面换到复数平面,如下图所示;

已知这是一个半径为rrr,圆心为OOO的圆,则存在;
reiθ=r(cosθ+isinθ)
re^{i\theta} = r(cos\theta + isin\theta)
reiθ=r(cosθ+isinθ)
上式表示向量 OP→\overrightarrow{OP}OP 逆时针旋转了角度 θ\thetaθ , ∣OP→∣=r| \overrightarrow{OP}| = r∣OP∣=r;
动态过程
假设向量OC→\overrightarrow{OC}OC逆时针旋转,与xxx轴夹角为θ\thetaθ,半径r=10r = 10r=10,即 ∣OC→∣=r=10| \overrightarrow{OC}| = r =10∣OC∣=r=10,具体如下图所示;

这里分析一下图中的几个关键点;
- 红色点的坐标为:(θ,10sinθ)(\theta, 10sin\theta)(θ,10sinθ),红色的正弦曲线为红色点的运动轨迹;
- 绿色点的坐标为;(10cosθ,θ)(10cos\theta, \theta)(10cosθ,θ),绿色的正弦曲线为绿色点的运动轨迹;
- CGCGCG为向量OC→\overrightarrow{OC}OC在xxx轴上的投影,∣CG∣=10cosθ|CG| = 10cos\theta∣CG∣=10cosθ;
- CHCHCH为向量OC→\overrightarrow{OC}OC在yyy轴上的投影,∣CH∣=10sinθ|CH| = 10sin\theta∣CH∣=10sinθ;
可以发现,向量在复平面做圆周运动,其实数域相当于是在做正弦运动。后面再FOC中的三相正弦波形的合成可以做一下分析。
加法
欧拉公式里的相加则比较简单,相当于两个向量的相加;
AE→=AC→+AD→\overrightarrow{AE} = \overrightarrow{AC} + \overrightarrow{AD}AE=AC+AD
如下图所示;

所以存在特殊情况当 θ=0\theta = 0θ=0时则有;
AE→=∣AE→∣(ej(θ+2π3)+ej(θ−2π3))\overrightarrow{AE} = |\overrightarrow{AE}|(e^{j(\theta+\cfrac{2\pi}{3})} + e^{j(\theta-\cfrac{2\pi}{3})} )AE=∣AE∣(ej(θ+32π)+ej(θ−32π))
直接进行符合向量相加;
AE→=∣AE→∣ej(θ+π)\overrightarrow{AE} = |\overrightarrow{AE}|e^{j(\theta+\pi)}AE=∣AE∣ej(θ+π)
具体如下所示;

FOC电压矢量的推导
三相永磁同步电机的驱动电路如下图所示;

详细的坐标变换可以参考《FOC中的Clarke变换和Park变换详解》,根据图示电路可以发现在三相永磁同步电机的驱动电路中,三相逆变输出的三相电压为UAU_{A}UA,UBU_{B}UB,UCU_{C}UC将作用于电机,那么在三相平面静止坐标系ABC中,电压方程满足以下公式:
{UA=UmcosθeUB=Umcos(θe−2π3)UC=Umcos(θe+2π3) \begin{cases}
U_{A} = U_{m}cos\theta_{e} \\
U_{B} = U_{m}cos(\theta_{e} - \cfrac{2\pi}{3}) \\
U_{C} = U_{m}cos(\theta_{e} + \cfrac{2\pi}{3})
\end{cases}⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧UA=UmcosθeUB=Umcos(θe−32π)UC=Umcos(θe+32π)
UmU_mUm为相电压基波峰值;
因此根据前面式⑤cosx=eix+e−ix2⋯⑤
cosx = \cfrac{e^{ix}+e^{-ix}}{2}\cdots ⑤
cosx=2eix+e−ix⋯⑤
可以将该方程组转换到复平面可以得到,下式统一使用θ\thetaθ 表示θe\theta_{e}θe;
{UA=Umcosθe=Um2(eiθ+e−iθ)UB=Umcos(θe+2π3)=Um2(e(iθ−2π3)+e−(iθ−2π3))UC=Umcos(θe−2π3)=Um2(e(iθ+2π3)+e−(iθ+2π3)) \begin{cases}
U_{A}= U_{m}cos\theta_{e} = \cfrac{ U_{m}}{2}(e^{i\theta} + e^{-i\theta})\\
U_{B}= U_{m}cos(\theta_{e} + \cfrac{2\pi}{3}) = \cfrac{ U_{m}}{2}(e^{(i\theta-\cfrac{2\pi}{3})} + e^{-(i\theta-\cfrac{2\pi}{3})})\\
U_{C} = U_{m}cos(\theta_{e} - \cfrac{2\pi}{3}) = \cfrac{ U_{m}}{2}(e^{(i\theta+\cfrac{2\pi}{3})} + e^{-(i\theta+\cfrac{2\pi}{3})})
\end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧UA=Umcosθe=2Um(eiθ+e−iθ)UB=Umcos(θe+32π)=2Um(e(iθ−32π)+e−(iθ−32π))UC=Umcos(θe−32π)=2Um(e(iθ+32π)+e−(iθ+32π))
因为需要将三相电压合成矢量 U→=UA→+UB→+UC→\overrightarrow{U} = \overrightarrow{U_A} + \overrightarrow{U_B} + \overrightarrow{U_C}U=UA+UB+UC;下面增加向量的相位差;
{UA→=UA∗ej0UB→=UB∗e−(j2π3)UC→=UC∗e(j2π3) \begin{cases}
\overrightarrow{U_A} = U_A *e^{j0}\\
\overrightarrow{U_B} = U_B *e^{-(j\cfrac{2\pi}{3})} \\
\overrightarrow{U_C} = U_C *e^{(j\cfrac{2\pi}{3})}\\
\end{cases}⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧UA=UA∗ej0UB=UB∗e−(j32π)UC=UC∗e(j32π)
中间推导过程暂略,最终推导得到;
U→=32Umejθ=32Umejωt\overrightarrow{U} = \cfrac{3}{2}U_me^{j\theta} = \cfrac{3}{2}U_me^{j\omega t} U=23Umejθ=23Umejωt
总结
磕磕绊绊写了最后,基础学科的掌握还不够,很多知识回过头来看,总会有新的收获,但是由于笔者能力有限,文中难免出行错误和纰漏,望您能不吝赐教。
参考
https://www.matongxue.com/madocs/8.html
FOC 算法基础之欧拉公式的更多相关文章
- BLDC有感FOC算法理论及其STM32软硬件实现
位置传感器:旋转编码器 MCU:STM32F405RGT6 功率MOS驱动芯片:DRV8301 全文均假设在无弱磁控制的情况下 FOC算法理论 首先,我们要知道FO ...
- Levenberg-Marquardt算法基础知识
Levenberg-Marquardt算法基础知识 (2013-01-07 16:56:17) 转载▼ 什么是最优化?Levenberg-Marquardt算法是最优化算法中的一种.最优化是寻找使 ...
- 解读Raft(一 算法基础)
最近工作中讨论到了Raft协议相关的一些问题,正好之前读过多次Raft协议的那paper,所以趁着讨论做一次总结整理. 我会将Raft协议拆成四个部分去总结: 算法基础 选举和日志复制 安全性 节点变 ...
- 腾讯2017年暑期实习生编程题【算法基础-字符移位】(C++,Python)
算法基础-字符移位 时间限制:1秒 空间限制:32768K 题目: 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间. 你能帮帮小Q吗? ...
- 算法基础_递归_求杨辉三角第m行第n个数字
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...
- 毕业设计预习:SM3密码杂凑算法基础学习
SM3密码杂凑算法基础学习 术语与定义 1 比特串bit string 由0和1组成的二进制数字序列. 2 大端big-endian 数据在内存中的一种表示格式,规定左边为高有效位,右边为低有效位.数 ...
- Python之算法基础
1>递归相关: 递归:递归算法是一种直接或间接地调用自身算法的过程,在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且 易于 ...
- Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
- 算法基础:BFS和DFS的直观解释
算法基础:BFS和DFS的直观解释 https://cuijiahua.com/blog/2018/01/alogrithm_10.html 一.前言 我们首次接触 BFS 和 DFS 时,应该是在数 ...
随机推荐
- 复习python的__call__ __str__ __repr__ __getattr__函数 整理
class Www: def __init__(self,name): self.name=name def __str__(self): return '名称 %s'%self.name #__re ...
- Python程序设计实验报告二:顺序结构程序设计(验证性实验)
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩 日期 2020.3.22 指导老师 修宇 [实验 ...
- D - Complete Tripartite
三分图染色 链接:https://codeforces.com/contest/1228/problem/D 三分图染色步骤:First 首先找一个点1作为集合A中的点,再找到与1相连的一个点设为2, ...
- CodeForces - 855B ring 前缀和
邓布利多教授正在帮助哈利摧毁魂器.当他怀疑一个魂器出现在那里时,他去了冈特沙克.他看到Marvolo Gaunt的戒指,并将其确定为魂器.虽然他摧毁了它,但仍然受到诅咒的影响.斯内普教授正在帮助邓布利 ...
- 包、mode模式、if-else语句、switch语句
目录 包 mode模式 if-else语句 循环 switch语句 包 //1 在同一个包下(文件夹下),包名必须一致 //2 以后,包名就是文件夹的名字 //3 同一个包下,同名函数只能有一个(in ...
- Cucumber(2)——目录结构以及基本语法
目录 回顾 HelloWorld 扩展 回顾 在上一节中,我大致的介绍了一下cucumber的特点,以及基于ruby和JavaScript下关于cucumber环境的配置,如果你还没有进行相关的了解或 ...
- Upload-Labs 实验操作记录
0x01 安装 下载:https://github.com/c0ny1/upload-labs 环境:简单搭建phpstudy环境即可,记得在upload-labs根目录下创建该文件夹 0x02 文件 ...
- [PHP]$_SERVER参数详情
来源:PHP中$_SERVER的详细参数与说明 $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关.$_SERVER['argv'] #传递给该脚 ...
- 支持向量机SVM知识梳理和在sklearn库中的应用
SVM发展史 线性SVM=线性分类器+最大间隔 间隔(margin):边界的活动范围.The margin of a linear classifier is defined as the width ...
- C1FlexGrid双grid滚动条联动
利用AfterScroll事件,来实现双grid联动. private void Grid_AfterScroll(object sender, RangeEventArgs e) { try { i ...