一阶低通滤波笔记

一阶RC滤波原理推导及一行代码实现

一阶低通滤波数学模型

电路图略

电容两端电流公式(电感用电压,电容用电流)

i = C d u d t i=C\frac{du}{dt} i=Cdtdu

根据定律 U i = U R + U c U_{i}=U_{R}+U_{c} Ui=UR+Uc可得:

U i = i R + U 0 U_{i}=iR+U_{0} Ui=iR+U0

U i = C ∗ d u d t R + U 0 U_{i}=C*\frac{du}{dt}R+U_{0} Ui=CdtduR+U0 对其进行 s s s变换,可得

U o U i = 1 R C s + 1 \frac{U_{o}}{U_i}=\frac{1}{RCs+1} UiUo=RCs+11

一阶低通滤波传递函数 1 T s + 1 \frac{1}{Ts+1} Ts+11 ,其中 T = R C T=RC T=RC

详细推导过程

对于一阶惯性环节,转折频率(截至角频率) ω c = 1 T \omega_{c}=\frac{1}{T} ωc=T1 参考自控原理频域分析,并且 ω c = 2 π f c \omega_{c}=2\pi f_{c} ωc=2πfc,从而可以得到截至频率 f c = 1 2 π R C f_{c}=\frac{1}{2\pi RC} fc=2πRC1

将传递函数离散化 s = 1 − z − 1 T s=\frac{1-z^{-1}}{T} s=T1z1 ( T T T为采样时间)

H z = 1 R C 1 − z − 1 T + 1 H_{z}=\frac{1}{RC\frac{1-z^{-1}}{T} +1} Hz=RCT1z1+11 化简可得

H z = T R C ( 1 − z − 1 ) + T H_{z}=\frac{T}{RC(1-z^{-1})+T} Hz=RC(1z1)+TT H z = Y ( z ) X ( z ) H_{z}=\frac{Y(z)}{X(z)} Hz=X(z)Y(z)

T X ( z ) = [ R C ( 1 − z − 1 + T ) ] Y ( z ) TX(z)=[RC(1-z^{-1}+T)]Y(z) TX(z)=[RC(1z1+T)]Y(z)

X ( z ) = R C T Y ( z ) − R C T z − 1 Y ( z ) + Y ( z ) X(z)=\frac{RC}{T}Y(z)-\frac{RC}{T}z^{-1}Y(z)+Y(z) X(z)=TRCY(z)TRCz1Y(z)+Y(z) 使用差分方程可改写为:

X ( n ) = R C T Y ( n ) − R C T Y ( n − 1 ) + Y ( n ) X(n)=\frac{RC}{T}Y(n)-\frac{RC}{T}Y(n-1)+Y{(n)} X(n)=TRCY(n)TRCY(n1)+Y(n) 化简得:

[ 1 + R C T ] Y ( n ) = X ( n ) + R C T Y ( n − 1 ) [1+\frac{RC}T{}]Y(n)=X(n)+\frac{RC}{T}Y(n-1) [1+TRC]Y(n)=X(n)+TRCY(n1)

Y ( n ) = 1 1 + R C T X ( n ) + R C T 1 + R C T Y ( n − 1 ) Y(n)=\frac{1}{1+\frac{RC}{T}}X(n)+\frac{\frac{RC}{T}}{1+\frac{RC}{T}}Y(n-1) Y(n)=1+TRC1X(n)+1+TRCTRCY(n1)

Y ( n ) = T T + R C X ( n ) + R C T + R C Y ( n − 1 ) Y(n)=\frac{T}{T+RC}X(n)+\frac{RC}{T+RC}Y(n-1) Y(n)=T+RCTX(n)+T+RCRCY(n1)

A = T T + R C = 1 1 + R C T = 1 1 + 1 2 π f T A=\frac{T}{T+RC}=\frac{1}{1+\frac{RC}{T}}=\frac{1}{1+\frac{1}{2\pi fT}} A=T+RCT=1+TRC1=1+2πfT11

Y ( n ) = A X ( n ) + ( 1 − A ) Y ( n − 1 ) Y(n)=AX(n)+(1-A)Y(n-1) Y(n)=AX(n)+(1A)Y(n1)

P X 4 和 A P M PX4 和APM PX4APM中,一阶低通滤波代码为

thr_lpf+=(1 / (1 + 1/(2.0f * 3.14f * T )))*(height_thr - thr_lpf)  //fc=1Hz

t h r _ l p f ( l a s t ) = A ∗ h e i g h t _ t h r + ( 1 − A ) ∗ t h r _ l p f thr\_lpf(last) = A*height\_thr + (1-A)*thr\_lpf thr_lpf(last)=Aheight_thr+(1A)thr_lpf

t h r _ l p f ( l a s t ) = t h r _ l p f + A ∗ ( h e i g h t _ t h r − t h r _ l p f ) thr\_lpf(last) =thr\_lpf + A*(height\_thr-thr\_lpf) thr_lpf(last)=thr_lpf+A(height_thrthr_lpf) 一行代码搞定低通滤波

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值