我是靠谱客的博主 搞怪御姐,这篇文章主要介绍低通滤波低通滤波,现在分享给大家,希望可以做个参考。

低通滤波

1.硬件低通滤波

公式推导
一阶RC滤波器的硬件电路如图:
在这里插入图片描述

图中输入电压是Vi,电阻R,电容C,输出电压为Vo。

假设电路的输出阻抗很大(即不带任何负载),输入阻抗很小(理想情况)。可以得到以下公式:

在这里插入图片描述

电容的阻抗是:
在这里插入图片描述

在这里插入图片描述

那么截止频率为:
在这里插入图片描述

此频率下的信号,通过这个电路,输出电压和输入电压的关系式是
在这里插入图片描述

或者时域上的表达式:

在这里插入图片描述

上式离散后,可以得到:

在这里插入图片描述

假如要过滤掉10KHz以上的频率,可以选择fcut = 1K,并计算RC的值,代入上式。

2.软件低通滤波

  • 软件实现1
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/** * @brief implement 1 order RC low pass filter * raw data filtered by a simple RC low pass filter@cufoff=5Hz * @param Vi : Vi(k) * @param Vi_p : Vi(k-1) * @param Vo : Vo(k) * @param Vo_p : Vo(k-1) * @note This example shows a simple way to report end of conversion * and get conversion result. You can add your own implementation. * @retval None */ void Filter_RC_LPF(float *Vi, float *Vo, float *Vo_p, float sampleFrq ) { float CutFrq, RC, Cof1, Cof2; //low pass filter @cutoff frequency = 5 Hz CutFrq = 5; RC = (float)1.0/2.0/PI/CutFrq; Cof1 = 1/(1+RC*sampleFrq); Cof2 = RC*sampleFrq/(1+RC*sampleFrq); *Vo = Cof1 * (*Vi) + Cof2 * (*Vo_p); //update *Vo_p = *Vo; }
  • 软件实现2
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//*********** Structure Definition ********// typedef struct { float Vi; float Vo_prev; float Vo; float Fcutoff; float Fs; } LPF_RC_T; //*********** Structure Init Function ****// void filter_RC_LPF_init(LPF_RC_T*v) { v->Vi=0; v->Vo_prev=0; v->Vo=0; //low pass filter @cutoff frequency = 5 Hz v->Fcutoff=5; // execute 1000 every second v->Fs=1000; } //*********** Function Definition ********// float filter_RC_LPF(LPF_RC_T*v) { float RC, Cof1, Cof2; RC = (float)1.0/2.0/PI/v->Fcutoff; Cof1 = 1/(1+RC*v->Fs); Cof2 = RC*v->Fs/(1+RC*v->Fs); v->Vo = Cof1 * v->Vi + Cof2 * v->Vo_prev; v->Vo_prev = v->Vo; return v->Vo; }

最后

以上就是搞怪御姐最近收集整理的关于低通滤波低通滤波的全部内容,更多相关低通滤波低通滤波内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部