SVPWM三次谐波方法
三次谐波注入方法产生是svpwm简单好用,再也不用算xyz,N,t1 t2了.#define UVW 1
#define VUW 2
#define UWV 3
#define VWU 4
#define WUV 5
#define WVU 6
doublemaxmidmin;
double mid;
void compare( doubleu double v double w )
{
if( u>= w)
{
if( v>= w)
{
if( u>= v)
{
maxmidmin= UVW; // u >= v >= w
}
else
{
maxmidmin= VUW; // v >u >= w
}
}
else
{
maxmidmin= UWV; // u >= w >v
}
}
else
{
if( v>= w)
{
maxmidmin= VWU; // v >= w >u
}
else
{
if( u>= v)
{
maxmidmin= WUV; // w >u >=v
}
else
{
maxmidmin= WVU; // w >v > u
}
}
}
}
compare( u, v, w );//输入的uvw为 Ualpha 和 Ubeta 经过 clarke 后的 uvw
//正弦的波形
switch( maxmidmin){
case UVW:
mid =((u + w) >> 1);
break;
case UWV:
mid =((u + v) >> 1);
break;
case VWU:
mid =((v + u) >> 1);
break;
case VUW:
mid =((v + w) >> 1);
break;
case WUV:
mid =((w + v) >> 1);
break;
case WVU:
mid = ((w + u) >> 1);
break;
default:
mid = 0;
break;
}
///////////ta//tb//tc
u += mid;
v += mid;
w += mid;///马鞍型了
你这个三次谐波注入是在spwm的基础是注入吗?注入应该注入cos(3x)才对,请问这种的原理是? xiaoxiao201005 发表于 2016-4-21 09:25
你这个三次谐波注入是在spwm的基础是注入吗?注入应该注入cos(3x)才对,请问这种的原理是?
自己做下仿真对比就知道了 这样比cos3x在单片机中跟快速更容易实现 嗯,这个方法已经get。
我还试过discontinuous PWM,不过不知道为什么低速跑还可以,不过有噪音,高速跑一会就过流了。 你的Ta Tb Tc怎么求? illusion2012 发表于 2016-4-21 10:08
嗯,这个方法已经get。
我还试过discontinuous PWM,不过不知道为什么低速跑还可以,不过有噪音,高速跑一 ...
你是跑仿真还是实际测试呢 xiaoxiao201005 发表于 2016-4-21 10:35
你的Ta Tb Tc怎么求?
最后写马鞍型的那里就是 songwanjie 发表于 2016-4-21 10:40
你是跑仿真还是实际测试呢
实际的测试啊{:1_561:} illusion2012 发表于 2016-4-21 10:58
实际的测试啊
电流环带宽太大了吧,特别是d轴的,
discontinuous PWM是啥玩意 songwanjie 发表于 2016-4-21 10:42
最后写马鞍型的那里就是
没明白你的意思,你用uvw加上mid得出新的uvw,然后用新的uvw求ta tb tc? songwanjie 发表于 2016-4-21 11:01
电流环带宽太大了吧,特别是d轴的,
discontinuous PWM是啥玩意
减少PWM开关次数的,可以百度一下,我们这边没法上传图片或者附件,网络限制 现在很多svpwm的计算都是采用楼主说的这种方式,也即参考电压加上电压中间值的一半,理论上这和七段式SVPWM是等效的,具体可以看各种文献。
不过楼主贴的代码bug实在太多,根本不适合用于嵌入式代码。
// f32Ua,f32Ub,f32Uc 为输入的正弦电压
// f32UaCmp, f32UbCmp, f32UcCmp为输出的调制波(马鞍波)
// iSQRT3=1/sqrt(3)
void SVPWM(void)
{
FLOAT32 f32Umid = 0.0f;
if((f32Ua - f32Ub) * (f32Ub - f32Uc) > 0)
{
f32Umid = f32Ub;
}
else if((f32Ub - f32Ua) * (f32Ua - f32Uc) >0)
{
f32Umid = f32Ua;
}
else
{
f32Umid = f32Uc;
}
f32Umid = f32Umid * 0.5f;
f32UaCmp = 0.5f + (f32Ua + f32Umid) * iSQRT3;
f32UbCmp = 0.5f + (f32Ub + f32Umid) * iSQRT3;
f32UcCmp = 0.5f + (f32Uc + f32Umid) * iSQRT3;
}
陈四川 发表于 2016-4-25 14:44
现在很多svpwm的计算都是采用楼主说的这种方式,也即参考电压加上电压中间值的一半,理论上这和七段式SVPWM ...
你的Ua Ub Uc是要经过判断扇区计算出来的吧? xiaoxiao201005 发表于 2016-4-26 12:36
你的Ua Ub Uc是要经过判断扇区计算出来的吧?
不用啊,就是dq变换到静止坐标的值 陈四川 发表于 2016-4-26 13:32
不用啊,就是dq变换到静止坐标的值
如果不是,你这个方法就不用判断扇区了吧?不用扇区直接得到三相的占空比? 已入电机控制坑,学习了。 该方法的相关文献能推荐下吗?找了很久没有找到。 {:1_492:}战略mark一下。学习了,能否提供一个相关文献呢,文献解释的比较浅显,适合我这种基础比较差的。 一直不断学习中…………
页:
[1]
2