您好,用贵公司的LAUNCHXL-28069M开发板加上BOOSTXL-DRV8305做永磁同步电机的控制,在D轴和Q轴电压检测方面遇到了一些问题,描述如下:
1 BOOSTXL-DRV8305带有三相电压检测电路,我在每个控制周期内采集三相电压,通过坐标变换得到D轴和Q轴电压,代码如下
AD_VA = AdcResult.ADCRESULT3;
AD_VB = AdcResult.ADCRESULT4;
AD_VC = AdcResult.ADCRESULT5;
VA = (AD_VA -AD_VA_BIAS)* ADC_VOL_RATIO;
VB = (AD_VB -AD_VB_BIAS)* ADC_VOL_RATIO;
VC = (AD_VC -AD_VC_BIAS)* ADC_VOL_RATIO;
VN = (VA+VB+VC)/3.0;
VAN = VA -VN;
VBN = VB -VN;
VCN = VC -VN;
V_Alpha = VAN ;
V_Beta = (VAN + 2 * VBN) * 0.57735; // 1 / sqrt(3) = 0.57735
SinElec = sin(eTheta); // eTheta为转子电角度
CosElec = cos(eTheta);
VdReal = V_Alpha *CosElec + V_Beta * SinElec;
VqReal = V_Beta *CosElec – V_Alpha * SinElec ;
(上电后给电机A相绕组通电,将转子吸引到一个角度,通过EQEP单元读取该角度值作为偏移值,每次电流环控制周期读取转子位置,减去偏移值得到转子机械角度,再乘以极对数得到eTheta)
通过上位机检测发现D轴电压似乎不太正确。
图1 转速响应和D轴电压给定
采用ID=0的控制方式,电流环使用PI控制器,实际检测D轴电流确实为0。图1蓝色曲线是电机2000rpm转速响应曲线,绿色曲线是电流PI控制器计算出来的D轴电压给定,可以看出,D轴电压给定跟模型是能对上的,在稳态Ud = Rs*Id -w*Lq*Iq,转速越高理应Ud负越多。可是按照上述代码检测到的实际D轴电压不是这样,见图2。
图2 转速响应和D轴电压检测
图2中蓝色曲线是电机转速响应,绿色曲线是变换得到的D轴实际电压反馈(忽略纵坐标具体值,看变化趋势),跟给定对不上,跟公式也对不上。
图3 电机转速和Q轴电压给定
图4 电机转速和Q轴电压反馈
从图3和图4中可以看出Q轴电压检测好像没问题,至少大体趋势是对的,转速越高,反电动势越高,Q轴电压理应越高。
PWM采用的SPWM法,代码如下:
V_AlphaCtrl = VdCtrl * CosElec – VqCtrl * SinElec;
V_BetaCtrl = VqCtrl * CosElec + VdCtrl * SinElec;
Va = V_AlphaCtrl ;
Vb = -0.5 * V_AlphaCtrl + 0.866 * V_BetaCtrl ; // 0.8660254 = sqrt(3)/2
Vc = -0.5 * V_AlphaCtrl – 0.866 * V_BetaCtrl ; // 0.8660254 = sqrt(3)/2
if ( Va>1 )
{
Va = 1;
}
else if( Va<-1)
{
Va = -1;
}
if ( Vb>1 )
{
Vb = 1;
}
else if( Vb<-1)
{
Vb = -1;
}
if ( Vc>1 )
{
Vc = 1;
}
else if( Vc<-1)
{
Vc = -1;
}
Ta = -0.5*Va + 0.5;
Tb = -0.5*Vb + 0.5;
Tc = -0.5*Vc + 0.5;
PWM_CMP_A= PWM_TBPRD * Ta ;
PWM_CMP_B= PWM_TBPRD * Tb ;
PWM_CMP_C= PWM_TBPRD * Tc ;
EPwm1Regs.CMPA.half.CMPA = PWM_CMP_A;
EPwm2Regs.CMPA.half.CMPA = PWM_CMP_B;
EPwm3Regs.CMPA.half.CMPA = PWM_CMP_C;
可能是什么问题造成上述原因呢?或者是我方法有问题,在这套实验平台上如何检测D轴和Q轴电压呢?有无例程可以参考?已经困扰很久了,望不吝指点,非常感谢!!
WEI CHEN19:
回复 Igor An:
谢谢您指明了方向,我再仔细查查,谢谢。
关于电压反馈减去VN,是参考的TI 的DMC库的说明文件Phase Voltage Reconstruction