能给我个2812生成svpwm的程序么? 基本流程:开始、系统配置、初始化外设、初始化变量等 最好能都打包 谢

能给我个2812生成svpwm的程序么? 基本流程:开始、系统配置、初始化外设、初始化变量等 最好能都打包 谢,第1张

wm和spwm控制对于开关器件来讲也只是导通和关断的时间长短不一、6个管子的逻辑组合不同而已,事件管理器只是产生逻辑开关量,你让他产生什么样的逻辑他就产生什么样的逻辑,当然,要想产生你想要的逻辑得通过设置里面相关的寄存器和适当安排相应的子程序来完成。由于svpwm的逻辑组合式固定的,你只要设置使能svpwm和旋转方向就行了,而spwm需要在比较匹配中断里往比较寄存器里装数,这个数还需要按正弦变化。
第二个问题:六扇区矢量控制只能产生六个状态量,旋转磁场呈现正六边形,如果想产生圆形的旋转磁场只能借助相邻的两个矢量来合成,之所以能合成最根本的原因是电机的电磁惯性作用,如果没有惯性作用,无论怎样匹配两个矢量的作用时间,只能产生两个相差六十度的矢量,不会出现第三个方向上的矢量。你说的t1 t2 t0应该是每个矢量(6个管子的开关状态)持续的时间,也就是管子要么导通,要么截止的时间。
另外,小弟也研究了一段电机控制,如果做伺服建议用正弦矢量控制,不要用svpwm,不实用,效果差。

SVPWM是指发波方式来讲的,它是利用电压矢量,通过扇区判断去决定开关器件的导通关断比较普通的发波方式是SPWM发波,它么之间也有内在联系的,具体可参照电力电子技术这本书而矢量控制(Vector Control )是从控制策略

      如上图在扇区I,即abc=100与abc=110所夹的60度区域内,从表面上看,我们看到电压矢量转过这60度会有1个开关状态产生变化,2个开关状态保持不变(a,c保持不变,b改变)。但事实上并不是如此,实际控制中我们会在这其中插入零矢量,如000,这样在一个扇区中会存在三种状态:abc=100,abc=110与abc=000,这样一个扇区内只有一个开关管可以保持不变,那就是c管,a管和b管都要变。

    再来看II扇区,同样只有c管可以保持不变,这样在I扇区和II扇区这120度的区域内c管都能保持不变,但是到了III扇区c管就不得不改变了。所以在这360度的范围内,c管最多能在120度的范围内连续保持不变,同样a管和b管也是这样的情况。

   因此,我们可以说“每半周(即180度)有 60°开关不动作”。

   但是我们要注意一点,这是只插入000状态的零矢量的状况,零矢量还有一种状态是111,如果插入两种零矢量状态的话(一般来说也都会这样做),在一个扇区内,所有开关管最少都必须要变化一次。

根据你的表达,T0为零矢量作用时间,T2为主矢量作用时间,T1为辅矢量作用时间。c为第一个导通的开关,在c相没导通之前,系统一直处于0矢量作用状态。0矢量作用了T0/2时间后,c相开始导通,进入主矢量作用时间,主矢量作同了T2后,在T2+T0/2时刻,b相导通,此时bc共同作用,进入辅矢量作用状态,辅矢量作用T1时间后,在T1+T2+T0/2时刻,a相导通,此时在abc共同作用下,系统再次进入0矢量作用状态。这样便完成了一个扇区内的矢量合成。

需要解决SVPWM信号波形产生、死区时间控制、实时性要求等问题,建议选择速度较快的单片机(100MPS以上且有硬件的PCA功能),或用FPGA产生SVPWM信号,用单片机做一些简单控控制接口,这样会更稳定一些。
------------------------------------以下资料引用------------------------------------
SVPWM:空间矢量脉宽调制(Space Vector Pulse Width Modulation)
SVPWM的主要思想是:以三相对称正弦波电压供电时三相对称电动机定子理想磁链圆为参考标准,以三相逆变器不同开关模式作适当的切换,从而形成PWM波,以所形成的实际磁链矢量来追踪其准确磁链圆。传统的SPWM方法从电源的角度出发,以生成一个可调频调压的正弦波电源,而SVPWM方法将逆变系统和异步电机看作一个整体来考虑,模型比较简单,也便于微处理器的实时控制。
普通的三相全桥是由六个开关器件构成的三个半桥 这六个开关器件组合起来(同一个桥臂的上下半桥的信号相反)共有8种安全的开关状态 其中000、111(这里是表示三个上桥臂的开关状态)这两种开关状态在电机驱动中都不会产生有效的电流。因此称其为零矢量。另外6种开关状态分别是六个有效矢量。它们将360度的电压空间分为60度一个扇区,共六个扇区,利用这六个基本有效矢量和两个零量,可以合成360度内的任何矢量。
当要合成某一矢量时先将这一矢量分解到离它最近的两个基本矢量,而后用这两个基本矢量矢量去表示,而每个基本矢量的作用大小就利用作用时间长短去代表。
在变频电机驱动时,矢量方向是连续变化的,因此我们需要不断的计算矢量作用时间。为了计算机处理的方便,在合成时一般是定时去计算(如每01ms计算一次)。这样我们只要算出在01ms内两个基本矢量作用的时间就可以了。由于计算出的两个时间的总合可能并不是01ms(比这小),而那剩下的时间就按情况插入合适零矢量。 由于在这样的处量时,合成的驱动波形和PWM很类似。因此我们还叫它PWM,又因这种PWM是基于电压空间矢量去合成的,所以就叫它SVPWM了。
需要明白的是,SVPWM本身的产生原理与PWM没有任何关系,只是象罢了。SVPWM的合成原理是个很重要的东东,它并不只用在SVPWM,在其它一些应用中也很有用的。
SVPWM特点:
1在每个小区间虽有多次开关切换,但每次开关切换只涉及一个器件,所以开关损耗小。
2利用电压空间矢量直接生成三相PWM波,计算简单。
3逆变器输出线电压基波最大值为直流侧电压,比一般的SPWM逆变器输出电压高15%

追问: 有什么解决的方法么  求助

追答:一、建议选择速度较快的单片机(100MPS以上且有硬件的PCA功能)。
二、用FPGA产生SVPWM信号,用单片机做一些简单控控制接口。

测量转子。
1、HALL判断扇区,通过测量转子在每一个扇区的时间估算出转子速度,根据速度估算出电角度。
2、当发生扇区切换时校准转子电角度。
3、转子电角度旋转一圈为360度,hall传感器根据转子位置可以输出6种不同的编码代表6个不同的扇区。

这句话的意思是:'PCHDPI/SVPWM/Subsystem2/Subsystem/Multiport Switch'元件的中的数值不能设定为零,改正方法:要么把值改为0-6的数,要么设为“none”。
照着改 ,不难


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13277426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-06
下一篇 2023-07-06

发表评论

登录后才能评论

评论列表(0条)

保存