- 积分
- 118
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 10
- 最后登录
- 1970-1-1
该用户从未签到
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 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:} ,谢谢 |
评分
-
查看全部评分
|