2014/11/30からのアクセス回数 7646
特定の周波数成分を除去するフィルターをノッチフィルターを呼びます。
今回は、R(抵抗), L(コイル), C(コンデンサー)を使ったLCノッチフィルタをAnalogDiscovery、 LTSpice、Sageを使って試してみましょう。
LTSpiceを使って以下の様なLCノッチ・フィルターの回路を作成します。
モデルは、以下のファイルを使用しました。
Runコマンド(回路図で右クリックしてRunを選択)を実行すると、以下の様な周波数特性が表示されます。
LCノッチ・フィルターの回路を以下の様にブレッドボードに組み、AnalogDiscoveryと接続します。
接続は、以下の通りです。
AnalogDiscovery | ブレッドボード |
Orange: Scope Ch1+ | Vi |
Orange/White: Scope Ch1- | GND |
Blue: Scope Ch2+ | Vo |
Blue/White: Scope ch2- | GND |
Yellow: Wave Gen 1 | Vi |
最初に中心周波数15.7kHzの方形波を入力したときの出力波形を見てみます。
ちょうど、方形波から正弦波を引いたような形をしています。
ネットワーク・アナライザを使って周波数特性を実測します。 LTSpiceのシミュレーションと同じ形の周波数特性が測定できました。
Sageを使ってVoでの周波数特性を計算してみましょう。
ここで紹介するSageのノートは、以下のURLで公開しています。
LCノッチ・フィルターを解析的に求めるために、Wikipediaから直列RLC回路の電源の図を引用します。
入力電圧Vを時間の関数\( v_i(t) \)とすると、以下の関係式が成り立ちます。
$$ R i(t) + L\frac{di}{dt} + \frac{1}{C} \int_{-\infty}^t i(\tau) d\tau = v_i(t) $$
この式をラプラス変換すると、以下の関係式が求まります。
$$ V_i(s) = I(s)\left( R + Ls + \frac{1}{Cs}\right) $$
AnalogDiscoveryを試す/01-CR積分回路の場合には、伝達関数の振幅特性と位相特性を計算してからプロットしましたが、 今回は伝達関数から直接振幅特性と位相特性をプロットしてみます。
上記の式から伝達関数を以下の様に定義します。
$$ H(s) = \frac{V_O(s)}{V_i(s)} = \frac{Ls + \frac{1}{Cs}}{ R + Ls + \frac{1}{Cs}} $$
以下の方法は、伝達関数Hの形が異なるだけで、他はAnalogDiscoveryを試す/02-CR微分回路と同じです。
Sageへの入力:
# 伝達関数から周波数特性を求める (s, f,R,C,L) = var('s f R C L') H = (L*s + 1/(C*s))/(R + L*s +1/(C*s))
表示すると、 Sageへの入力:
show(H)
ラプラス変数sをjω、ω=2πfを代入すると、 Sageへの入力:
# s = jω, ω= 2πfを代入すると H(f) = H.subs_expr(s == 2*i*pi*f)
db単位で表示するために、toDb関数を以下の様に定義します。
# 電気ではデジベルで表示するため、toDb関数を定義する def toDb(v): return 20*log(abs(v), 10)
振幅特性をプロットします。 Sageへの入力:
# 直接表示すると'unable to simplify to float approximation'のエラーがでるので、lambda式で回避した。 plot(lambda f: toDb(H(f, R=470, 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)))
位相を度で表示するために、toDeg関数を以下の様に定義します。
def toDeg(v): return v*180/pi
位相特性をプロットすると以下の様になります。
Sageへの入力:
# プロットに少し時間がかかります。 plot(lambda f: toDeg(Phi(f, R=470, 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)
皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。
スパム防止に画像の文字列も入力してください。