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

速度滤波问题(SPEED_FR_MACRO(v) )

我使用的是TMDSHVMTRPFCKIT开发板,在测算速度比时候用了低通滤波,如下:

/* Low-pass filter*/            \
/* Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21*/        \
    v.Tmp = _IQmpy(v.K2,_IQtoIQ21(v.Speed))+_IQmpy(v.K3,v.Tmp); 

没看懂这个滤波器的理论依据是什么(我试了巴特沃斯变换,不对),求解释

完整代码如下:

 

#define BASE_FREQ       100            // Base electrical frequency (Hz)

float32 T = 0.001/ISR_FREQUENCY;    // Samping period (sec), see parameter.h

// Initialize the Speed module for QEP based speed calculation
    speed1.K1 = _IQ21(1/(BASE_FREQ*T));
    speed1.K2 = _IQ(1/(1+T*2*PI*5));  // Low-pass cut-off frequency
    speed1.K3 = _IQ(1)-speed1.K2;
    speed1.BaseRpm = 120*(BASE_FREQ/POLES);

#define SPEED_FR_MACRO(v)           \
/* Differentiator*/             \
/* Synchronous speed computation   */        \
   if ((v.ElecTheta < _IQ(0.9))&(v.ElecTheta > _IQ(0.1)))   \
/* Q21 = Q21*(GLOBAL_Q-GLOBAL_Q)*/         \
  v.Tmp = _IQmpy(v.K1,(v.ElecTheta – v.OldElecTheta));  \
   else v.Tmp = _IQtoIQ21(v.Speed);         \
/* Low-pass filter*/            \
/* Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21*/        \
    v.Tmp = _IQmpy(v.K2,_IQtoIQ21(v.Speed))+_IQmpy(v.K3,v.Tmp);  \
/* Saturate the output */           \
 v.Tmp=_IQsat(v.Tmp,_IQ21(1),_IQ21(-1));       \
 v.Speed = _IQ21toIQ(v.Tmp);          \
/* Update the electrical angle */         \
    v.OldElecTheta = v.ElecTheta;         \
/* Change motor speed from pu value to rpm value (GLOBAL_Q -> Q0)*/ \
/* Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q*/     \
    v.SpeedRpm = _IQmpy(v.BaseRpm,v.Speed);

#endif // __SPEED_FR_H__

 

 

ya song:

压根就看不懂这个滤波器怎么来的,如果可以的话,请告诉我用到的知识点(比如通过什么方式计算出来的滤波器)

user4254532:

请问速度滤波是变换的

Fred zhu:

为了减小纯微分运算所造成的放大噪声,进行一阶低通滤波, v.Tmp = _IQmpy(v.K2,_IQtoIQ21(v.Speed))+_IQmpy(v.K3,v.Tmp); 这个就是低通滤波器的离散表达形式,具体推导书上有也可百度之

xu zhang11:

回复 Fred zhu:

您好,请问speed1.K1 = _IQ21(1/(BASE_FREQ*T))是什么意思,Temp1 = _IQmpy(v.K1,(v.EstimatedTheta – v.OldEstimatedTheta)); 这样得到的是角速度还是机械转速,非常感谢!!!

dingzhiyong:

大哥们,给个解释啊,给个知识点也行,小弟困惑死了。

wentao zhang:

回复 dingzhiyong:

blog.sina.com.cn/…/1219574564,上面有解释

user5229665:

回复 xu zhang11:

v.EstimatedTheta – v.OldEstimatedTheta:电角度的增量 2*(v.EstimatedTheta – v.OldEstimatedTheta)/P: 机械角度的增量 (p为极数) 2*(v.EstimatedTheta – v.OldEstimatedTheta)/PT:机械角速度 (T为采样周期),单位r/s 120*(v.EstimatedTheta – v.OldEstimatedTheta)/PT: 机械角速度 ,单位RPM 速度基准:120*BaseFreq/p 单位RPM {120*(v.EstimatedTheta – v.OldEstimatedTheta)/PT}/(120*BaseFreq/p)=(v.EstimatedTheta – v.OldEstimatedTheta)/(BaseFreq*T) =IQmpy(v.K1,(v.EstimatedTheta – v.OldEstimatedTheta)) 理解了上面,不难看出,得到的是机械转速的标幺值,当然之后还要进行数字滤波

赞(0)
未经允许不得转载:TI中文支持网 » 速度滤波问题(SPEED_FR_MACRO(v) )
分享到: 更多 (0)