高通滤波
1.硬件高通滤波
RC高通滤波器的原理图:
增益表达式:
截止频率:
写成时域上的表达式:
离散化后得到:
根据设定的截止频率,假如目标频率是50Hz,截止频率可以整定为0.5Hz,过滤低频分量,而不影响目标信号的采集。
2.软件高通滤波
- 实现方法1
void filter_rc_fpf(float *Vi, float *Vi_p, float *Vo, float *Vo_p, float sampleFrq )
{
float CutFrq, RC, Coff;
//high pass filter @cutoff frequency = 0.5 Hz
CutFrq = 0.5;
RC = (float)1.0/2.0/PI/CutFrq;
Coff = RC/(RC + 1/sampleFrq);
*Vo = ((*Vi) - (*Vi_p) +(*Vo_p) )*Coff ;
//update
*Vo_p = *Vo;
*Vi_p = *Vi;
}
- 实现方法2
#define PI 3.1415
//*********** Structure Definition ********//
typedef struct {
float Vi;
float Vi_prev;
float Vo_prev;
float Vo;
float Fcutoff;
float Fs;
} HPF_RC_T;
//*********** Structure Init Function ****//
void filter_rc_fpf_init(HPF_RC_T*v)
{
v->Vi=0;
v->Vi_prev=0;
v->Vo_prev=0;
v->Vo=0;
//high pass filter @cutoff frequency = 0.05 Hz
v->Fcutoff=0.05;
// execute 1000 every second
v->Fs=1000;
}
//*********** Function Definition ********//
float filter_rc_fpf(HPF_RC_T*v)
{
float RC, Coff;
RC = (float)1.0/2.0/PI/v->Fcutoff;
Coff = RC/(RC + 1/v->Fs);
v->Vo = (v->Vi - v->Vi_prev + v->Vo_prev ) * Coff;
//update
v->Vo_prev = v->Vo;
v->Vi_prev = v->Vi;
return v->Vo;
}