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实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.