TI中文支持网
TI专业的中文技术问题搜集分享网站

关于PMSM电流采样问题

我是用的是2812板子,然后电流采样例程中需要进行双极性变化,对于以下程序虽然有层序文档但还是有部分疑惑,我的电流采样关系是u=2.5+0.132*I,但是我给定的ImeasureGain=IQ13(2),电机电流闭环运行良好,但反算明显不合理,希望TI老师给一些指导,以及各位大佬的帮助。程序如下:

void F281X_ileg2_dcbus_drv_read(ILEG2DCBUSMEAS *p)
{
int32 Tmp;
int16 DatQ15;
int16 dat[4]={0,0,0,0};
int16 i=0;
// Wait until ADC conversion is completed
while (AdcRegs.ADCST.bit.SEQ1_BSY == 1)
{};
dat[0] = AdcRegs.ADCRESULT1>>4;
dat[1] = AdcRegs.ADCRESULT2>>4;
dat[2] = AdcRegs.ADCRESULT5>>4;
dat[3] = AdcRegs.ADCRESULT6>>4;

DatQ15=0;
for(i=0;i<4;i++)
{
DatQ15 += dat[i];
}
DatQ15 = (int16)(DatQ15>>2);
DatQ15 = DatQ15-(2314-2048);
if(DatQ15>2408||DatQ15<1688)
{
}
DatQ15 = (int16)(DatQ15<<4)^0x8000; //将采样的12位电流数变成16位并变为双极性数据
Tmp = (int32)p->ImeasAGain*(int32)DatQ15; // Tmp = gain*dat => Q28 = Q13*Q15
p->ImeasA = (int16)(Tmp>>13); // Convert Q28 to Q15
p->ImeasA += p->ImeasAOffset; // Add offset
p->ImeasA *= 1; // Positive direction, current flows to motor
dat[0] = 0;
dat[1] = 0;
dat[2] = 0;
dat[3] = 0;
dat[0] = AdcRegs.ADCRESULT0>>4; // ADC转换结果缓冲寄存器(RESULTn)为前12位,后4位无效
dat[1] = AdcRegs.ADCRESULT3>>4; // 同时转换为12位数据相加避免了数据溢出
dat[2] = AdcRegs.ADCRESULT4>>4; dat[3] = AdcRegs.ADCRESULT7>>4;
DatQ15=0;
for(i=0;i<4;i++)
{
DatQ15 += dat[i];
}
DatQ15 = (int16)(DatQ15>>2);
DatQ15 = DatQ15 – (2309-2048);
if(DatQ15>2408||DatQ15<1688)
{
// EvbRegs.COMCONB.bit.FCOMPOE=0;
}
DatQ15 = (int16)(DatQ15<<4)^0x8000; //将采样的12位电流数变成16位并变为双极性数据
Tmp = (int32)p->ImeasBGain*(int32)DatQ15; // Tmp = gain*dat => Q28 = Q13*Q15
p->ImeasB = (int16)(Tmp>>13); // Convert Q28 to Q15
p->ImeasB += p->ImeasBOffset; // Add offset
p->ImeasB *= 1; // Positive direction, current flows to motor

/*
DatQ15 = (AdcRegs.ADCRESULT2>>1)&0x7FFF; // Convert raw result to Q15 (unipolar signal)
Tmp = (int32)p->VdcMeasGain*(int32)DatQ15; // Tmp = gain*dat => Q28 = Q13*Q15
if (Tmp > 0x0FFFFFFF) // Limit Tmp to 1.0 in Q28
Tmp = 0x0FFFFFFF;
p->VdcMeas = (int16)(Tmp>>13); // Convert Q28 to Q15
p->VdcMeas += p->VdcMeasOffset; // Add offset
*/
p->ImeasC = -(p->ImeasA + p->ImeasB); // Compute phase-c current

AdcRegs.ADCTRL2.all |= 0x4040; // Reset the sequence

这里面电流基值是在哪体现的?以及电流大小是如何求得的?求指教

赞(0)
未经允许不得转载:TI中文支持网 » 关于PMSM电流采样问题
分享到: 更多 (0)