1、一阶RC高通滤波器
1.1 电路图
(1)微分公式:
V
O
=
R
C
(
d
V
i
d
t
−
d
V
O
d
t
)
V_O=RC(\frac{dV_i}{dt}-\frac{dV_O}{dt})
VO=RC(dtdVi−dtdVO)
(2)微分公式离散化
V
o
(
n
)
=
R
C
/
T
[
V
i
(
n
)
−
V
i
(
n
−
1
)
]
−
[
V
o
(
n
)
−
V
o
(
n
−
1
)
]
V_o (n)=RC/T {[V_i (n)-V_i (n-1)]-[V_o (n)-V_o (n-1)]}
Vo(n)=RC/T[Vi(n)−Vi(n−1)]−[Vo(n)−Vo(n−1)]
V
O
(
n
)
=
R
C
/
(
T
+
R
C
)
[
V
i
(
n
)
−
V
i
(
n
−
1
)
]
+
R
C
/
(
T
+
R
C
)
V
O
(
n
−
1
)
V_O (n)=RC/(T+RC) [V_i (n)-V_i (n-1)]+RC/(T+RC) V_O (n-1)
VO(n)=RC/(T+RC)[Vi(n)−Vi(n−1)]+RC/(T+RC)VO(n−1)
(3)传递函数
V
i
(
s
)
(
V
O
(
s
)
=
s
s
+
1
/
R
C
=
R
C
s
1
+
R
C
s
\frac{V_i (s)}{(V_O (s)}=\frac{s}{s+1/RC}=\frac{RCs}{1+RCs}
(VO(s)Vi(s)=s+1/RCs=1+RCsRCs
1.2 算法实现
def highPassFilter_RC_1order(self,Vi):
#R = 0.5
#C = 0.001
RC = 1.0/(2.0*math.pi*self.CutFrq)
#RC = R*C
T = 1/self.sampleFrq
Vo = RC/(T+RC)*(Vi-self.Vi_last+self.Vo_last)
self.Vi_last = Vi
self.Vo_last = Vo
(1)算法仿真结果
(2)FFT分析
2、二阶RC高通滤波器
2.1 电路图
(1)微分公式:
u
0
=
R
2
C
2
(
d
2
u
I
)
/
(
d
2
t
)
−
R
2
C
2
(
d
2
u
o
)
/
(
d
2
t
)
−
2
R
C
(
d
u
o
)
/
d
t
u_0=R^2 C^2 (d^2 u_I)/(d^2 t)-R^2 C^2 (d^2 u_o)/(d^2 t)-2RC (du_o)/dt
u0=R2C2(d2uI)/(d2t)−R2C2(d2uo)/(d2t)−2RC(duo)/dt
(2)微分公式离散化:
u
0
(
n
)
=
R
2
C
2
T
2
[
u
i
(
n
)
−
2
u
i
(
n
−
1
)
+
u
i
(
n
−
2
)
]
−
R
2
C
2
T
2
[
u
o
(
n
)
−
2
u
o
(
n
−
1
)
+
u
o
(
n
−
2
)
]
−
2
R
C
T
(
u
o
(
n
)
−
u
o
(
n
−
1
)
)
u_0 (n)=\frac{R^2 C^2}{T^2} [u_i (n)-2u_i (n-1)+u_i (n-2)]-\frac{R^2 C^2}{T^2 } [u_o (n)-2u_o (n-1)+u_o (n-2)]-\frac{2RC}{T} (u_o (n)-u_o (n-1))
u0(n)=T2R2C2[ui(n)−2ui(n−1)+ui(n−2)]−T2R2C2[uo(n)−2uo(n−1)+uo(n−2)]−T2RC(uo(n)−uo(n−1))
u
0
(
n
)
=
R
2
C
2
T
2
+
R
2
C
2
+
2
R
C
[
u
i
(
n
)
−
2
u
i
(
n
−
1
)
−
u
o
(
n
−
2
)
]
+
2
R
2
C
2
+
2
R
C
T
T
2
+
R
2
C
2
+
2
R
C
(
u
o
(
n
−
1
)
u_0 (n) = \frac{R^2C^2}{T^2+R^2C^2+2RC}[u_i(n)-2u_i(n-1)-u_o(n-2)]+\frac{2R^2C^2+2RCT}{T^2+R^2C^2+2RC}(u_o(n-1)
u0(n)=T2+R2C2+2RCR2C2[ui(n)−2ui(n−1)−uo(n−2)]+T2+R2C2+2RC2R2C2+2RCT(uo(n−1)
(3)传递函数
V
o
(
s
)
V
i
(
s
)
=
(
R
C
s
)
2
(
R
C
s
)
2
+
2
R
C
s
+
1
\frac{V_o (s)}{V_i (s)}=\frac{(RCs)^2}{(RCs)^2+2RCs+1}
Vi(s)Vo(s)=(RCs)2+2RCs+1(RCs)2
2.2 算法实现
def highPassFilter_RC_2order(self,Vi):
#R = 0.5
#C = 0.001
RC = 1.0/(2.0*math.pi*self.CutFrq)
#RC = R*C
T = 1/self.sampleFrq
Vo = (RC*RC)/(T*T+RC*RC+2*RC)*(Vi-2*self.Vi_last+self.Vi_last_1-self.Vo_last_1)+(2*RC*RC+2*RC*T)/(T*T+RC*RC+2*RC)*self.Vo_last
self.Vi_last_1 = self.Vi_last
self.Vo_last_1 = self.Vo_last
self.Vo_last = Vo
self.Vi_last = Vi
return Vo
(1)实验结果
可见信号衰减较为严重,让输出有75分贝的增益后结果如下:
可见低频信号被明显滤去
若增益为80dB,仿真结果为: