This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

基于DSP28377D的三相Vienna的有个这个函数calibrateOffset()不是很理解



offsetCalCounter=0;
    *iL1MeasOffset=0;
    *iL2MeasOffset=0;
    *iL3MeasOffset=0;

    *v1MeasOffset=0;
    *v2MeasOffset=0;
    *v3MeasOffset=0;

    while(offsetCalCounter<25000)
    {
        if(EPwm1Regs.ETFLG.bit.INT==1)
        {
            if(offsetCalCounter>1000)
            {
                // offset of the inductor current sense
                *iL1MeasOffset = k1*(*iL1MeasOffset) + k2*(IL1_ADC_READ1+IL1_ADC_READ2+IL1_ADC_READ3+IL1_ADC_READ4)*0.25*ADC_PU_SCALE_FACTOR;
                *iL2MeasOffset = k1*(*iL2MeasOffset) + k2*(IL2_ADC_READ1+IL2_ADC_READ2+IL2_ADC_READ3+IL2_ADC_READ4)*0.25*ADC_PU_SCALE_FACTOR;
                *iL3MeasOffset = k1*(*iL3MeasOffset) + k2*(IL3_ADC_READ1+IL3_ADC_READ2+IL3_ADC_READ3+IL3_ADC_READ4)*0.25*ADC_PU_SCALE_FACTOR;

                // offset of the inductor current sense
                *v1MeasOffset = k1*(*v1MeasOffset) + k2*(V1_ADC_READ1+V1_ADC_READ2+V1_ADC_READ3+V1_ADC_READ4)*0.25*ADC_PU_SCALE_FACTOR;
                *v2MeasOffset = k1*(*v2MeasOffset) + k2*(V2_ADC_READ1+V2_ADC_READ2+V2_ADC_READ3+V2_ADC_READ4)*0.25*ADC_PU_SCALE_FACTOR;
                *v3MeasOffset = k1*(*v3MeasOffset) + k2*(V3_ADC_READ1+V3_ADC_READ2+V3_ADC_READ3+V3_ADC_READ4)*0.25*ADC_PU_SCALE_FACTOR;
            }
            EPwm1Regs.ETCLR.bit.INT=1;
            offsetCalCounter++;
        }
    }

第一个问题:K1,K2这个偏置滤波系数怎么来的依据是什么?Ti官方给的是 k1 = 0.998; K1: 0.05/(T+0.05);

第二个问题:*iL1MeasOffset = k1*(*iL1MeasOffset) + k2*(IL1_ADC_READ1+IL1_ADC_READ2+IL1_ADC_READ3+IL1_ADC_READ4)*0.25*ADC_PU_SCALE_FACTOR;该表达式第一项一直为零,放在这里有何意义。

第三个问题:为什么在1000-25000才开始计算?