[[AnalogDiscoveryを試す/03-LCノッチ・フィルタ]] [[AnalogDiscoveryを試す]] #contents 2014/11/30からのアクセス回数 &counter; 完成しました! ** LCバンドパス・フィルタ回路 [#y1ea78d3] 特定の周波数成分を通すフィルターをバンドパス・フィルターを呼びます。 今回は、R(抵抗), L(コイル), C(コンデンサー)を使ったLCバンドパス・フィルタをAnalogDiscovery、 LTSpice、Sageを使って試してみましょう。 ** LTSpiceを使った周波数解析 [#g8bce5a2] LTSpiceを使って以下の様なLCバンドパス・フィルターの回路を作成します。 ((抵抗の値がノッチフィルターと異なり10KΩになっているで注意してください。)) モデルは、以下のファイルを使用しました。 - &ref(LC_BPF.asc); &ref(LC_BPF_cir.png); *** AC解析を実行する [#mc6d2613] Runコマンド(回路図で右クリックしてRunを選択)を実行すると、以下の様な周波数特性が表示されます。 約15kHz当たりに中心周波数があります。 &ref(LC_BPF_Network.png); ** AnalogDiscoveryで測定してみる。 [#e1ba71c3] LCバンドパス・フィルターの回路を以下の様にブレッドボードに組み、AnalogDiscoveryと接続します。 &ref(LC_BPF_setting.png); 接続は、以下の通りです。 | AnalogDiscovery | ブレッドボード |h | Orange: Scope Ch1+ | Vi | | Orange/White: Scope Ch1- | GND | | Blue: Scope Ch2+ | Vo | | Blue/White: Scope ch2- | GND | | Yellow: Wave Gen 1 | Vi | *** 波形を測る [#u141bfaa] 最初に中心周波数15.7kHzの方形波を入力したときの出力波形を見てみます。 少しずれていますが、方形波と同じ周波数の正弦波が出力されています。 &ref(th_LC_BPF_15.7KHz.jpg); *** 周波数特性を測る [#k268b462] ネットワーク・アナライザを使って周波数特性を実測します。 LTSpiceのシミュレーションと同じ形の周波数特性が測定できました。 &ref(th_LC_BPF_network.jpg); ** Sageを使ってグラフを表示 [#n9d8f841] Sageを使ってVoでの周波数特性を計算してみましょう。 ここで紹介するSageのノートは、以下のURLで公開しています。 - http://www15191ue.sakura.ne.jp:8000/home/pub/51/ 今回は、伝達関数を連立方程式を使って求めます。 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. $$ これをラプラス変換表を使って書き替えると以下の様になります。 (( ラプラス変換表は、[[AnalogDiscoveryを試す/01-CR積分回路]]を参照して下さい。)) $$ \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は以下の様に求まります。 ((ここで、\(V_o = V_L\)を使っています。)) $$ H = \frac{V_o}{V_i} = \frac{Ls}{RCLs^2 + Ls + R} $$ *** Sageで伝達関数をプロットする [#vcde31be] 上記の式から伝達関数を以下の様に定義します。 $$ H = \frac{V_o}{V_i} = \frac{Ls}{RCLs^2 + Ls + R} $$ 以下の方法は、伝達関数Hの形が異なるだけで、他は[[AnalogDiscoveryを試す/02-CR微分回路]]と同じです。 Sageへの入力: #pre{{ # 伝達関数から周波数特性を求める (s, f,R,C,L) = var('s f R C L') H = (L*s)/(R*C*L*s^2 + L*s + R) }} 表示すると、 Sageへの入力: #pre{{ show(H) }} &ref(eq7.png); ラプラス変数sをjω、ω=2πfを代入すると、 Sageへの入力: #pre{{ # s = jω, ω= 2πfを代入すると H(f) = H.subs_expr(s == 2*i*pi*f) }} db単位で表示するために、toDb関数を以下の様に定義します。 #pre{{ # 電気ではデジベルで表示するため、toDb関数を定義する def toDb(v): return 20*log(abs(v), 10) }} 振幅特性をプロットします。 Sageへの入力: #pre{{ # 直接表示すると'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) }} &ref(gain_BPF.png); 位相特性は、定義から以下の様になります。 #pre{{ # 位相は以下の様になる Phi(f) = arctan(imaginary(H(f))/real(H(f))) }} 位相を度で表示するために、toDeg関数を以下の様に定義します。 #pre{{ def toDeg(v): return v*180/pi }} 位相特性をプロットすると以下の様になります。 Sageへの入力: #pre{{ # プロットに結構時間がかかります(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) }} &ref(phase_BPF.png); ** コメント [#z09654b7] #vote(おもしろかった,そうでもない,わかりずらい) 皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。 スパム防止に画像の文字列も入力してください。 #comment_kcaptcha