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.

offsetA是怎么计算的

Other Parts Discussed in Thread: MOTORWARE

28035电机套件中有offset的补偿程序

offsetA= K1*offsetA + K2*(AdcMirror.ADCRESULT1)*0.00024414;        //Phase A offset
offsetB= K1*offsetB + K2*(AdcMirror.ADCRESULT2)*0.00024414;      //Phase B offset
offsetC= K1*offsetC + K2*(AdcMirror.ADCRESULT3)*0.00024414;     //Phase C offset

运行时显示的是offsetA=0.5,我想问一下这个0.5是怎么计算得到的,为什么我把这段程序移植到别的地方,offsetA=0

  • 请您参考下面帖子的回复

    e2echina.ti.com/.../120682

    offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1)); 可以按照低通滤波来理解,K1, K2是一阶低通滤波的两个系数,这个滤波器的带宽被设计的很低,来让进入主中断前采到的通道偏置稳定。

    另外,ADC模块是一直在执行的,也就是说,不管进不进主中断,ADCRESULT寄存器的值都是在不断刷新的。

    计算电压的offset,可以参考TI motorware InstaSpin FOC 算法对电压offset的处理。

    思路是,在电机运转前,三相先发50%占空比pwm,这样,U/V/W三相输出电压约为 母线电压的一半,将这个值采进来作为电压offset,之后的电机运行中一直用这个值作为电压offset。

    在线电压offset检测,比较难高精度实现,可以考虑近似的用母线电压一半作为在线的电压offset值来用。