- 积分
- 71
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 5
- 最后登录
- 1970-1-1
该用户从未签到
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
static void SVPWM_3ShuntCalcDutyCycles(void)
{
u8 a,b,c;
hElectrical_AngleCnt += Pwm_PutAdd_UpDT;
if(hElectrical_AngleCnt > 10922) hElectrical_AngleCnt =10922;//60度
Electrical_Angle = hElectrical_Angle - bSign*hElectrical_AngleCnt + Turn_Angle_Error +Svpwm_Angle_Error;
Pwm_AngleA1 = (signed short)(Electrical_Angle); //求出当前电角度
TIM1->CCER=0x1ddd;
if(Motor_Pwm_Aim > 2180) Motor_Pwm_Aim = 2180; // 32768/15
Vector_Components = Trig_Functions(Pwm_AngleA1);
Valpha_tmp1 =Motor_Pwm_Aim*15 * Vector_Components.hCos/32768; //
Valpha_1 = (s16)(Valpha_tmp1);
Vbeta_tmp1 =Motor_Pwm_Aim*15 * Vector_Components.hSin/32768; // Uout*Sin电角度
Vbeta_1 = (s16)(Vbeta_tmp1);
UAlpha = Valpha_1 * T_SQRT3 ; //11200*1.73205
UBeta = Vbeta_1 * T; //U百塔*4*Tpwm(扩大4倍)
X = UBeta; //(X=0)Ubeta=0,就是V1(100),V4(011)所在的这条线, (0° /180°)
Y = ( UAlpha + UBeta)/2; //(Y=0)Ualfa+Ubeta=0,就是V2(110),V5(001)所在的这条线 (60° /240°)
Z = (-UAlpha + UBeta)/2; //(Z=0)Ualfa-Ubeta=0,就是V3(010),V6(101)所在的这条线(120°/300°)
Va = UBeta; //(clarke逆变换)
Vb = ( UAlpha - UBeta)/2;
Vc = (-UAlpha - UBeta)/2;
if(Va>=0) {a=1;} else a=0;
if(Vb>=0) {b=1;} else b=0;
if(Vc>=0) {c=1;} else c=0;
Sector=a+2*b+4*c;
switch(Sector) //
{
case SECTOR_3: //扇区1
hTimePhA = (T/8) + ((( T + Z - X)/2)/131072); //32768*4
hTimePhB = hTimePhA - Z/131072;
hTimePhC = hTimePhB + X/131072;
break;
case SECTOR_1: //扇区2
hTimePhB = (T/8) + ((( T- Z - Y)/2)/131072);
hTimePhA = hTimePhB + Z/131072;
hTimePhC = hTimePhA + Y/131072;
break;
case SECTOR_5: //扇区3
hTimePhB = (T/8) + (((T - X + Y)/2)/131072);
hTimePhC = hTimePhB + X/131072;
hTimePhA = hTimePhC - Y/131072;
break;
case SECTOR_4: //扇区4
hTimePhC = (T/8) + (((T + X - Z)/2)/131072);
hTimePhB = hTimePhC - X/131072;
hTimePhA = hTimePhB + Z/131072;
break;
case SECTOR_6: //扇区5
hTimePhC = (T/8) + (((T + Y + Z)/2)/131072);
hTimePhA = hTimePhC - Y/131072;
hTimePhB = hTimePhA - Z/131072;
break;
case SECTOR_2: //扇区6
hTimePhA = (T/8) + (((T - Y + X)/2)/131072);
hTimePhC = hTimePhA + Y/131072;
hTimePhB = hTimePhC - X/131072;
break;
default:
break;
}
|
|