LC_BandpassFilter

3427 days ago by takepwave

LCバンドパス・フィルターの周波数特性

伝達関数

LTSpiceを使って以下のバンドパス・フィルターの回路を作成しました。

今回は、伝達関数を連立方程式を使って求めます。 Vo点での電流は、以下の関係を持ちます。 $$ i_R = i_C + i_L $$ また、Voでの電圧は、コンデンサーもコイルも同じなので、以下の関係式が成り立ちます。 $$ L \frac{di_C}{dt} = \frac{1}{C} \int_{-\infty}^t i_L(\tau) d\tau $$ 入力電圧Viは、抵抗に流れた電流$i_R$とコイルに流れた電流$ i_L $を使って以下の様に表されます。 $$ R i_R + L \frac{i_L}{dt} = v_i(t) $$ これらの式を組み合わせると以下の連立方程式が成り立ちます。 $$ \left\{ \begin{eqnarray} i_R & = &i_C + i_L \\ L \frac{di_C}{dt} & = & \frac{1}{C} \int_{-\infty}^t i_L(\tau) d\tau \\ v_i(t) & = & R i_R + L \frac{i_L}{dt} \end{eqnarray} \right. $$ これをラプラス変換表を使って書き替えると以下の様になります。 $$ \left\{ \begin{eqnarray} I_R & = & I_C + I_L \\ LsI_L & = & \frac{1}{Cs} I_C \\ V_i & = & R I_R + Ls I_L \end{eqnarray} \right. $$ 1番目の式を使って2番目と3番目の式を書き替えると以下の様になります。 $$ \left\{ \begin{eqnarray} I_C & = & C L s^2 I_L \\ V_i & = & I_L \{ R(1 + C L s^2) + Ls \} \end{eqnarray} \right. $$

これから、伝達関数$H(s)$は以下の様に求まります。 ここで、$V_o = V_L$を使っています。 $$ H(s) = \frac{V_O(s)}{V_i(s)} = \frac{Ls }{ RCLs^2 + Ls + R} $$

# 伝達関数から周波数特性を求める (s, f,R,C,L) = var('s f R C L') H = (L*s)/(R*C*L*s^2 + L*s + R) 
       
show(H) 
       
# s = jω, ω= 2πfを代入すると H(f) = H.subs_expr(s == 2*i*pi*f) 
       
# 電気ではデジベルで表示するため、toDb関数を定義する def toDb(v): return 20*log(abs(v), 10) 
       
# 直接表示すると'unable to simplify to float approximation'のエラーがでるので、lambda式で回避した。 plot(lambda f: toDb(H(f, R=10*10^3, C=0.022*10^-6, L=4.7*10^-3)).n(), [f, 5*10^3, 100*10^3], scale="semilogx", figsize=(5, 3), plot_points=500) 
       
# 位相は以下の様になる Phi(f) = arctan(imaginary(H(f))/real(H(f))) 
       
def toDeg(v): return v*180/pi 
       
# プロットに結構時間がかかります(5分くらい)。 plot(lambda f: toDeg(Phi(f, R=10*10^3, C=0.022*10^-6, L=4.7*10^-3)).n(), [f, 5*10^3, 100*10^3], scale="semilogx", figsize=(5, 3), plot_points=300)