最近在看电机控制程序,下面几行滤波程序看了一天多,没有头绪,希望得到大家的帮助,我的问题如下:
1.这三个程序前两个是一阶低通滤波吗,如果是为何与我网上看到程序不太一样,第三个呢
void lpf_calc(LPF *v)
{
v->y += _IQmpy(v->Tc,_IQmpy(v->wc,(v->x – v->y_old)));//y=y+Tc*(wc*(x-y_old))
v->y_old = v->y;
{
v->y += _IQmpy(v->Tc,_IQmpy(v->wc,(v->x – v->y_old)));//y=y+Tc*(wc*(x-y_old))
v->y_old = v->y;
}
void lpf11_calc(LPF11 *v)
{ _iq temp_k1;
temp_k1 = _IQmpy(v->wc,(v->x – v->y));//temp_k1=wc*(x-y)
v->y = v->y + _IQmpy(temp_k1,v->Tc);//y=y+temp_k1*Tc
{ _iq temp_k1;
temp_k1 = _IQmpy(v->wc,(v->x – v->y));//temp_k1=wc*(x-y)
v->y = v->y + _IQmpy(temp_k1,v->Tc);//y=y+temp_k1*Tc
}
void lpf12_calc(LPF12 *v)
{ _iq temp_k1, temp_k2;
temp_k1 = _IQmpy(v->wc,(v->x – v->y));//temp_k1=wc*(x-y)
temp_k2 = _IQmpy(temp_k1,_IQ(1.0) – _IQmpy(v->wc,v->Tc));//temp_k2=temp_k1*(1-wc*Tc)
v->y = v->y + _IQmpy(_IQmpy(v->Tc,temp_k1 + temp_k2),_IQ(0.5));//y=y+0.5*(Tc*(temp_k1 + temp_k2))
{ _iq temp_k1, temp_k2;
temp_k1 = _IQmpy(v->wc,(v->x – v->y));//temp_k1=wc*(x-y)
temp_k2 = _IQmpy(temp_k1,_IQ(1.0) – _IQmpy(v->wc,v->Tc));//temp_k2=temp_k1*(1-wc*Tc)
v->y = v->y + _IQmpy(_IQmpy(v->Tc,temp_k1 + temp_k2),_IQ(0.5));//y=y+0.5*(Tc*(temp_k1 + temp_k2))
}
Terry Deng:
前两个是比较标准的一阶滤波,第三个也是滤波但算法比较复杂。
你是在哪里看见这个算法
最近在看电机控制程序,下面几行滤波程序看了一天多,没有头绪,希望得到大家的帮助,我的问题如下:
1.这三个程序前两个是一阶低通滤波吗,如果是为何与我网上看到程序不太一样,第三个呢
void lpf_calc(LPF *v)
{
v->y += _IQmpy(v->Tc,_IQmpy(v->wc,(v->x – v->y_old)));//y=y+Tc*(wc*(x-y_old))
v->y_old = v->y;
{
v->y += _IQmpy(v->Tc,_IQmpy(v->wc,(v->x – v->y_old)));//y=y+Tc*(wc*(x-y_old))
v->y_old = v->y;
}
void lpf11_calc(LPF11 *v)
{ _iq temp_k1;
temp_k1 = _IQmpy(v->wc,(v->x – v->y));//temp_k1=wc*(x-y)
v->y = v->y + _IQmpy(temp_k1,v->Tc);//y=y+temp_k1*Tc
{ _iq temp_k1;
temp_k1 = _IQmpy(v->wc,(v->x – v->y));//temp_k1=wc*(x-y)
v->y = v->y + _IQmpy(temp_k1,v->Tc);//y=y+temp_k1*Tc
}
void lpf12_calc(LPF12 *v)
{ _iq temp_k1, temp_k2;
temp_k1 = _IQmpy(v->wc,(v->x – v->y));//temp_k1=wc*(x-y)
temp_k2 = _IQmpy(temp_k1,_IQ(1.0) – _IQmpy(v->wc,v->Tc));//temp_k2=temp_k1*(1-wc*Tc)
v->y = v->y + _IQmpy(_IQmpy(v->Tc,temp_k1 + temp_k2),_IQ(0.5));//y=y+0.5*(Tc*(temp_k1 + temp_k2))
{ _iq temp_k1, temp_k2;
temp_k1 = _IQmpy(v->wc,(v->x – v->y));//temp_k1=wc*(x-y)
temp_k2 = _IQmpy(temp_k1,_IQ(1.0) – _IQmpy(v->wc,v->Tc));//temp_k2=temp_k1*(1-wc*Tc)
v->y = v->y + _IQmpy(_IQmpy(v->Tc,temp_k1 + temp_k2),_IQ(0.5));//y=y+0.5*(Tc*(temp_k1 + temp_k2))
}
jinsheng LU:
回复 Terry Deng:
这三个都是我看得别人的程序,用于过电压保护的,程序大部分和ti程序差不多,不知道这部分是不是后来加上的