kendol 发表于 2015-1-25 22:27

请教死区补偿问题

本帖最后由 kendol 于 2015-1-25 22:27 编辑

小菜鸟又要来求助一下坛子里的大侠了,想要请教一下死区补偿。

现在我采用的死区补偿方案是通过检测电流极性,然后推算由于死区效应导致多出来的电压矢量,根据当前电压扇区内两个有效矢量与多余电压矢量的关系进行PWM脉宽修正。
比如我当前电流极性是 Ia>0,Ib<0,Ic<0 ,需要补偿的矢量为100,当前电压扇区为第二扇区,写的代码如下:

else if (Sector==1)
{
   t1 = Vc-(v->Td_div_Ts);
   t2 = Vb+(v->Td_div_Ts);
   
   if((t1 + t2)>=_IQ(1))// over modulation(检测合成矢量是否超出内切圆)
                {
                        t1 = _IQmpy(t1,(_IQdiv(_IQ(1),(t1+t2))));
                        t2 = _IQmpy(t2,(_IQdiv(_IQ(1),(t1+t2))));
                v->Tb = _IQmpy((_IQ(1)-t1-t2),_IQ(0.5))+_IQmpy(_IQ(v->Td_div_Ts),_IQ(0.5));//CMPR1+Td/2
                          v->Ta = v->Tb+t1;
                v->Tc = v->Ta+t2+_IQmpy(_IQ(v->Td_div_Ts),_IQ(0.5));                         //CMPR3+Td/2
                        }
                        else
                        {
                          v->Tb = _IQmpy((_IQ(1)-t1-t2),_IQ(0.5))+_IQmpy(_IQ(v->Td_div_Ts),_IQ(0.5));
                          v->Ta = v->Tb+t1;
                          v->Tc = v->Ta+t2+_IQmpy(_IQ(v->Td_div_Ts),_IQ(0.5));
                        }
                }

现在我总觉得t1,t2给的时间不太对,这样补偿的话好像有点问题,零矢量作用时间也不对称,是不是 t1 = Vc-(v->Td_div_Ts);t2 = Vb+(v->Td_div_Ts/2);希望大侠们能为我解惑一下,看看哪里的问题{:soso_e100:} ,谢谢

kendol 发表于 2015-1-27 20:01

没有大侠解答一下吗{:soso_e153:}{:soso_e154:}

Mdriver 发表于 2016-3-8 13:20

这种相对有些技术含量的公司核心技术,很少人拿出来的.
页: [1]
查看完整版本: 请教死区补偿问题