stm32 FOC从学习开发(四)svpwm算法(1)

2024-01-26 00:30

本文主要是介绍stm32 FOC从学习开发(四)svpwm算法(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

`
一、stm32 FOC从零学习开发(一)FOC概念
二、stm32 FOC从学习开发(二)Clark变换与MATLAB仿真
三、stm32 FOC从学习开发(三)park变换与MATLAB仿真
四、stm32 FOC从学习开发(四)svpwm算法(1)
五、stm32 FOC从学习开发(五)svpwm算法(2)
六、stm32 FOC从学习开发(六)基于均值零序分量注入的载波SVPWM算法
七、stm32 FOC从学习开发(七)svpwm算法MATLAB仿真
八、stm32 FOC从学习开发(八)PID基础MATLAB仿真
九、stm32 FOC从学习开发(九)FOC MATLAB仿真


文章目录

  • 系列文章目录
  • 一、spwm与svpwm
    • spwm简介
    • svpwm简介
  • 二、SVPWM的空间矢量表示
  • 三、SVPWM算法的合成


一、spwm与svpwm

spwm简介

SPWM的全称是(Sinusoidal Pulse Width Modulation),即正弦波脉冲宽度调制,是一种比较成熟的目前广泛使用的一种PWM方法,其原理就是采用控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值。

svpwm简介

SVPWM的全称是(Space Vector Pulse Width Modulation),即空间矢量脉冲宽度调节,其主要思想是以三相对称正弦波电压供电时三相对称电动机定子理想磁链圆为参考标准,以三相逆变器不同开关模式作适当的切换,从而形成PWM波,以所形成的实际磁链矢量来追踪其准确磁链圆。传统的SPWM方法从电源的角度出发,以生成一个可调频调压的正弦波电源,而SVPWM方法将逆变系统和异步电机看作一个整体来考虑,模型比较简单,也便于微处理器的实时控制。SVPWM技术与SPWM相比较,绕组电流波形的谐波成分小,使得电机转矩脉动降低,旋转磁场更逼近圆形,而且使直流母线电压的利用率有了很大提高,且更易于实现数字化。
SVPWM算法实际上是对应于交流电机中的三相电压源逆变器功率器件的一种特殊的开关触发顺序和脉宽大小的组合,这种开关触发顺序和组合将在定子线圈中产生三相互差 120°电角度、失真较小的正弦波电流波形。实践和理论证明,与直接的SPWM技术相比,SVPWM算法的优点主要有:
1、SVPWM优化谐波程度比较高,消除谐波效果要比SPWM好实现容易并且可以提高电压利用率;
2、SVPWM算法提高了电压源逆变器的直流电压利用率和电机的动态响应速度,同时减小了电机的转矩脉动等缺点;
3、SVPWM比较适合于数字化控制系统。

二、SVPWM的空间矢量表示

可以知道电机可以简化为电压或者电流的三相变量,若是可以将三相变量合成一个合成量,并且保持信息的完整性,那么三相问题就可以变成单相问题。
在这里插入图片描述请添加图片描述
假设三个标量为xa、xb、xc,而且电流矢量和为零,那么可以引入:
在这里插入图片描述
其中:在这里插入图片描述
根据欧拉公式变换表示在复平面上的向量可得:
在这里插入图片描述

三个标量到空间矢量的变换
上图为三个标量到空间矢量的变换
根据电流和为零可得:
在这里插入图片描述
如果复数矢量Xout已知,则可以唯一解出xa、xb、xc,即:
在这里插入图片描述
这样就将三个标量用一个复数矢量Xout表示。
假设三相对称正弦相电压的瞬时值表示为:
在这里插入图片描述
ω为相电压的角频率,那么:
在这里插入图片描述
可以求出电压矢量Uout的实部和虚部:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
因此,三相对称正弦电压对应的空间电压矢量轨迹如上图所示,电压空间矢量Uout顶点的运行轨迹实际为一个圆,并且以角速度ω的速度逆时针旋转,则原三相电压趋近于三相对称正弦波。
在这里插入图片描述
另外,根据电机驱动的电路图,可以简化为上图所示,根据电路图可以知道的一个基本原则就是上下桥臂不能同时打开,因为如果上下同时打开就会造成正极和负极之间直接导通,导致短路。
那么我们假设a相的上桥臂打开为1,那么此时下桥臂必须关闭,假设上桥臂关闭为0,此时下桥臂必然是打开,有人说不能上下都关闭吗,当上下都关闭的时候是没有物理意义的,而且其他桥臂打开的时候需要电流从下桥臂留出,都关闭的情况反而会把问题复杂化。
那么a、b、c每相有两种状态,三路总共就有8种开关状态,对于不同的开光状态组合,可以得到8个基本的电压空间矢量,这样逆变器的8种开关模式就对应8个电压空间矢量,各矢量为:
在这里插入图片描述
相电压与开关函数之间的关系为:

在这里插入图片描述
将8种开关组合方式即0或1带入上式,可以得到开关组合与电压的关系:
在这里插入图片描述在这里插入图片描述
从表中可以看出,总共有6个非零矢量,因为000和111均为零矢量,将8种组合映射到复平面中,既可以得到该图所示的电压空间矢量图,它们将复平面分成了6个扇区:
在这里插入图片描述

三、SVPWM算法的合成

SVPWM算法的理论基础就是平均值等效原理,即在一个开关周期内通过对基本电压矢量加以组合,使得其平均值和给定电压矢量相等,如上图所示,在某个时刻,电压空间矢量Uout旋转到某个区域中,可以由组成该区域的两个相邻的非零矢量和零矢量在时间上的不同组合得到。
以扇区一为例,空间矢量合成示意图为:
在这里插入图片描述
根据平衡等效原则可以得到:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由正弦定理:
在这里插入图片描述
将U1、U2和Uout=Um带入可得:
在这里插入图片描述

这篇关于stm32 FOC从学习开发(四)svpwm算法(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/645111

相关文章

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件