一阶RC低通滤波器(转)

【滤波器学习笔记】一阶RC低通滤波

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27334499/article/details/52186336

一阶RC低通滤波

从模拟到数字
本文整理自网络、《匠人手记》等书籍文章

  • 模拟电路低通滤波时域、频域
  • 软件低通滤波

典型电路

这里写图片描述
图1 典型RC电路
直流、交流、脉冲信号都可以用它

时域

电容电流:

Ic=dqdt=d(CUo)dt=CdUodtIc=dqdt=d(C•Uo)dt=CdUodt

假设电容初始电压值为0
R=1000Ω
C=4.7uF
Ui=1V
t=0.0001~0.1s
τ=RC
Vc(τ)=0.632
这里写图片描述
图2 一阶 RC系统的阶跃响应曲线

频域

u1=Ui;u2=Uo;
以电容电压作为输出,电路的网络函数为:

H(jω)=U2U1=1jωCR+1jωC=11+jωRCH(jω)=U2U1=1jωCR+1jωC=11+jωRC

ωc即为截止频率;

幅值和相角函数:

|H(jω)|=11+(ωωc)2|H(jω)|=11+(ωωc)2

θ(ω)=arctanωωcθ(ω)=−arctanωωc

各变量取值:
R=1000Ω
C=4.7uF

j=1j=−1

θ(fc)=-45

f=0.001、1、…….100000

幅频和相频特性图:
这里写图片描述
图3
这里写图片描述
图4
幅频特性图的对数表示:
这里写图片描述
图5

-当ω<ωc时,幅值是平行于坐标的直线,基本无衰减; 

-当ω>>ωc时,是斜率与-20dB/十倍频成比例的一条直线; 

-当ω=ωc时,增益衰减至0.707,即-3dB,相位滞后45度,对应低通滤波器,该频率通常被称为截止频率。

缺点:
采用这种模拟滤波器抑制低频干扰时,要求滤波器有较大的时间常数和高精度的RC网络,增大时间常数要求增大R值,其漏电流也随之增大,从而降低了滤波效果;

软件上的一阶低通滤波

优点:

-采用数字滤波算法来实现动态的RC滤波,则能很好的克服模拟滤波器的缺点;
-在模拟常数要求较大的场合这种算法显得更为实用;
-其对于周期干扰有良好的抑制作用,
-比较节省RAM空间

缺点

-不足之处是带来了相位滞后,导致灵敏度低
-同时它不能滤除频率高于采样频率的二分之一(称为奈奎斯特频率)的干扰(例如采样频率为100Hz,则它不能滤除50Hz以上的干扰信号)对于高于奈奎斯特频率的干扰信号,应该采用模拟滤波器。
-对没有乘、除法运算指令的单片机来说,程序运算工作量较大

基本滤波算法:

算法由来:
频率分析中一阶RC低通滤波在S域的传递函数:

VoutVin=1RCs+1,(s=jω)VoutVin=1RCs+1,(s=jω)

带入S域传递函数中:

Y(z)X(z)=1RC1z(1)T+1=TRC(1z(1))+TY(z)X(z)=1RC1−z∧(−1)T+1=TRC(1−z∧(−1))+T

通过Z变换把S域的传递函数转化成时域的差分方程,分析可得到

一阶RC数字滤波的基本算法

X为输入,Y为滤波后得输出值,则:

Y(n)=aX(n)+(1a)Y(n1)Y(n)=a∗X(n)+(1−a)∗Y(n−1)

a为与RC值有关的一个参数,称为滤波系数,其值决定新采样值在本次滤波结果中所占的权重,其值通常远小于1,当采样间隔t足够小的时候,

a=tRCa=tRC

-滤波系数越小,滤波结果越平稳,但是灵敏度越低;
-滤波系数越大,灵敏度越高,但是滤波结果越不稳定

-本次输出值主要取决于上次滤波输出值,当前采样值对本次输出贡献比较小,起到修正作用;

-截止频率:

fl=a2πtfl=a2πt

例如:t=0.5s (f=2Hz), a=1/32
则fl=(1/32)/(2*3.14*0.5)=0.01Hz;

基本程序:

按照一阶滤波的基本原理与公式写程序,如下:

/*程序中整数运算比小数运算快,为加快程序的处理速度,为计算方便,a取一整数,1-a用256-a来代替,a则取0~255,代表新采样值在滤波结果中的权重(也可将1-a的基数改为100-a,计算结果做相应处理,这里不做说明)*/

#define a 128 

char value; //上次滤波值
char filter()
{
    char new_value;
    new_value=get_ad();//本次采样值
    return(256-a)*value/256+a*new_value/256;
}
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

程序初步优化

减少乘、除的运算次数以提高运算速度。
具体优化办法:
先将新采样值与上次滤波结果进行比较,然后根据比较采用不同的公式计算,这样程序的运算效率提高了一倍;
化解基本公式可得:

Xn<Y(n1)Yn=Y(n1)(Y(n1)Xn)×a÷256;当Xn

流程图:
这里写图片描述

程序:

/*入口:NEW_DATA 新采样值
       OLD_DATA 上次滤波结果
       k        滤波系数(0~255)(代表在滤波结果中的权重)
  出口:         本次滤波结果
 */
 char filter_1(char NEW_DATA,char OLD_DATA,char k)
{
    int result;
    if(NEW_DATA
								
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27334499/article/details/52186336

一阶RC低通滤波

从模拟到数字
本文整理自网络、《匠人手记》等书籍文章

  • 模拟电路低通滤波时域、频域
  • 软件低通滤波

典型电路

这里写图片描述
图1 典型RC电路
直流、交流、脉冲信号都可以用它

时域

电容电流:

Ic=dqdt=d(CUo)dt=CdUodt

基尔霍夫电压定律得:
Ui=RCdUodt+Uo

Ui的单位是伏特,RC的单位为秒,τ=RC;
解得:
Uo(t)=Ui(1e(t/RC))

假设电容初始电压值为0
R=1000Ω
C=4.7uF
Ui=1V
t=0.0001~0.1s
τ=RC
Vc(τ)=0.632
这里写图片描述
图2 一阶RC系统的阶跃响应曲线

频域

u1=Ui;u2=Uo;
以电容电压作为输出,电路的网络函数为:

H(jω)=U2U1=1jωCR+1jωC=11+jωRC

令ωc=
1RC=1τ

ωc即为截止频率;

幅值和相角函数:

|H(jω)|=11+(ωωc)2

θ(ω)=arctanωωc

各变量取值:
R=1000Ω
C=4.7uF

j=1

ω=1RC

fc=12πRC

A(f)=1j2πfRC+1

|A(fc)|=0.707
θ(f)=180arg(A(f))π

θ(fc)=-45

f=0.001、1、…….100000

幅频和相频特性图:
这里写图片描述
图3
这里写图片描述
图4
幅频特性图的对数表示:
这里写图片描述
图5

-当ω<ωc时,幅值是平行于坐标的直线,基本无衰减; 

-当ω>>ωc时,是斜率与-20dB/十倍频成比例的一条直线; 

-当ω=ωc时,增益衰减至0.707,即-3dB,相位滞后45度,对应低通滤波器,该频率通常被称为截止频率。

缺点:
采用这种模拟滤波器抑制低频干扰时,要求滤波器有较大的时间常数和高精度的RC网络,增大时间常数要求增大R值,其漏电流也随之增大,从而降低了滤波效果;

软件上的一阶低通滤波

优点:

-采用数字滤波算法来实现动态的RC滤波,则能很好的克服模拟滤波器的缺点;
-在模拟常数要求较大的场合这种算法显得更为实用;
-其对于周期干扰有良好的抑制作用,
-比较节省RAM空间

缺点

-不足之处是带来了相位滞后,导致灵敏度低
-同时它不能滤除频率高于采样频率的二分之一(称为奈奎斯特频率)的干扰(例如采样频率为100Hz,则它不能滤除50Hz以上的干扰信号)对于高于奈奎斯特频率的干扰信号,应该采用模拟滤波器。
-对没有乘、除法运算指令的单片机来说,程序运算工作量较大

基本滤波算法:

算法由来:
频率分析中一阶RC低通滤波在S域的传递函数:

VoutVin=1RCs+1,(s=jω)

通过z变换(方法很多,如一阶前向差分、双线性变换等这里用一阶后向差分法)
s=1z(1)T,T

带入S域传递函数中: