さまざまな周波数のうち、狙った周波数信号のみを透過させるフィルタのことをバンドパスフィルタといいます。このページでは、バンドパスフィルタの特性について、理論計算およびSimulinkを用いたシミュレーションを行い、詳細に理解していきます。
バンドパスフィルタの概要
バンドパスフィルタは、様々な周波数信号のうち狙った周波数信号のみを透過させるフィルタになります。その動作イメージを図1に示します。

狙った周波数信号だけを透過させることができる
図1では3種類の周波数の信号を入力し、中間の周波数の信号のみを取り出しています。この時、どの周波数の信号を遮断するかはバンドパスフィルタの設計で変更することができます。以下、バンドパスフィルタの詳細について考えていきます。
バンドパスフィルタの回路例
バンドパスフィルタの回路としては複数の種類がありますが、それらはローパスフィルタろハイパスフィルタの組み合わせになります。いくつか回路を見ていきましょう。
RとLとCによるバンドパスフィルタ
RLC回路素子を使用したバンドパスフィルタです。その回路図を図2に示します。

回路図から分かるとおり、ローパスフィルタとハイパスフィルタを組み合わせています。キャパシタはインピーダンスから高周波ほど透過しやすい特徴を持ちます。インダクタはインピーダンスから低周波ほど透過しやすい特徴を持ちます。そのため、中間の周波数帯のみを後段に伝達することができます。
RとCによるバンドパスフィルタ
RとCのみでバンドパスフィルタを構成することができます。その回路図を図3に示します。

このバンドパスフィルタはRCローパスフィルタとCRハイパスフィルタを組み合わせたものです。ローパスフィルタは低周波数を、ハイパスフィルタは高周波を透過させるため、最終的に通過できるのはその中間の波形のみとなります。
RとLによるバンドパスフィルタ
RとLのみでバンドパスフィルタを構成することができます。その回路図を図4に示します。

このバンドパスフィルタはLRローパスフィルタとRLハイパスフィルタを組み合わせたものです。ローパスフィルタは低周波数を、ハイパスフィルタは高周波を透過させるため、最終的に通過できるのはその中間の波形のみとなります。
これらのフィルタのうち、ここではRLCによるバンドパスフィルタを取り上げ、その特性を理解していきます。他のフィルタについても同様の考え方で特性を導出できます。
RLC素子によるバンドパスフィルタの伝達関数とボード線図
RLC素子によるバンドパスフィルタの特性を導出するために、入力信号と出力信号の比(=伝達関数)を考えます。RLC素子によるバンドパスフィルタにインピーダンスを書き込んだ回路図を図5に示します。

この回路図から伝達関数とボード線図を導出します。
RLC素子によるバンドパスフィルタの伝達関数の導出
キャパシタとインダクタが並列回路になっているので、この並列回路のインピーダンスを導出します。
$$Z_{LC} = \frac{j \omega L \times \frac{1}{j \omega C}}{j \omega L + \frac{1}{j \omega C}} = \frac{j \omega L}{1-\omega^2 CL}$$
インピーダンスの関係から、出力電圧は次のとおり計算することができます。
$$V_{out} = \frac{Z_{LC}}{R+Z_{LC}}V_{in} = \frac{\frac{j \omega L}{1-\omega^2 CL}}{R+\frac{j \omega L}{1-\omega^2 CL}} V_{in}=\frac{j \omega L}{R(1-\omega^2 LC) + j \omega L}V_{in}$$
入力電圧と出力電圧の比である伝達関数は次のとおりです。
$$ \frac{V_{out}}{V_{in}} = \frac{j \omega L}{R(1-\omega^2 LC) + j \omega L}$$
この伝達関数からボード線図を導出します。
RLC素子によるバンドパスフィルタのボード線図の導出
入力と出力の比からボード線図を書きます。ボード線図はゲインと位相の周波数依存性を記述したものなので、ゲインと位相を計算します。
ゲインと位相の計算
伝達関数の分母に虚数単位があるため、分子側に持ってくるように式変形します。
$$ \frac{V_{out}}{V_{in}} = \frac{j \omega L}{R(1-\omega^2 LC) + j \omega L} = \frac{j \omega L (R(1-\omega^2 CL) – j \omega L)}{R^2(1-\omega^2 LC)^2 + (\omega L)^2} = \frac{\omega L (\omega L + R(1-\omega^2 CL))}{R^2(1-\omega^2 LC)^2 + (\omega L)^2}$$
従って、ゲインは次のように表せます。
$$ Gain = |\frac{V_{out}}{V_{in}}| = \frac{\omega L \sqrt{(\omega L)^2+(R(1-\omega^2 CL))^2}}{R^2(1-\omega^2 LC)^2 + (\omega L)^2}$$
カットオフ周波数は、ローパスフィルタによる低周波側ととハイパスフィルタの高周波側があり、それぞれ次のとおりです。
$$\omega_{c-L} = \frac{R}{L}$$
$$\omega_{c-H} = \frac{1}{CR}$$
また、位相については次のとおりです。
$$phase = tan^{-1} \frac{R(1-\omega^2 CL)}{\omega L}$$
このゲインと位相をプロットしたものがボード線図になります。
MATLABによるボード線図のプロット
前述のGainとphaseを用いてボード線図を記述することができますが、MATLABでは伝達関数をベースにボード線図を書くことができます。
MATLABでは次のようなコードを書くことでボード線図を記述できます。https://jp.mathworks.com/help/control/ref/dynamicsystem.bode.html
H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
bode(H)
第一行目はtf関数を用いて、伝達関数をHという変数に書き込んでいます。
第二行目にてbode関数を用いて、伝達関数をプロットするようにします。
次にRLC素子によるバンドパスフィルタのボード線図例を書いてみます。R=1Ω, L=1mHで固定し、C=1uF, 10uF, 100uFの3パターンでボード線図をプロットします。プロットした結果を図6に示します。

狙った周波数信号のみのゲインを高くすることができる
いずれのプロットも中間の周波数でゲイン0(入力信号と等倍)となります。
低周波側では、低周波のカットオフ周波数より小さい領域でゲインが小さくなります。RとLのパラメータが一定なため、低周波側のカットオフ周波数はいずれも1000rad/sとなっています。
高周波側では、高周波のカットオフ周波数より大きい領域でゲインが小さくなります。高周波のカットオフ周波数は、グラフからそれぞれ10000rad/s, 100000rad/s, 1000000rad/sとなりますが、これは1/CRの理論値と一致します。
Simulink・Simscapeを用いた周波数応答測定
CRフィルタは簡単な回路なため理論値を導出することが可能でしたが、複雑な回路では解析解を取得することが困難なことがあります。このような場合は、Simulinkの周波数応答測定機能を使うとボード線図を取得することができます。
ボード線図の取得方法はこのページやMathWorksのDocumentを参考にしてください。周波数応答のオフライン推定
RLC素子を用いたバンドパスフィルタのSimscapeモデル
図7にSimscapeモデルを示します。

図2のようなRLC素子によるバンドパスフィルタに対して、Controlled Voltage Sourceブロックを追加しています。このブロックを追加することで周波数応答を測定することができます。なおフィルタのパラメータとしてはR=1Ω、L=1mH、C=100uFとしています。
このモデルに対して周波数応答推定器を活用してボード線図を取得します。
周波数応答推定の結果
各種設定をして周波数応答推定器を動作させて取得したボード線図が図8です。入力信号は100~100000Hz, 振幅は0.01に設定しています。(1Vの1%を与えています。)

中間の周波数のゲインが大きく、高周波と低周波ほどゲインが小さくなります。これは、バンドパスフィルタの特性を反映しているように見えます。この結果が解析解と一致するか確認します。
解析解との比較
周波数応答推定器を活用してボード線図を取得できたので、この結果が理論値と一致しているか確認します。理論値とSimulinkによる周波数応答推定結果をプロットしたものを図9に示します。

周波数応答推定結果(オレンジ色)は概ね理論値(青色)と一致していることが分かります。
ただし、細かいところでいくつか差異があります。
一つ目の差異は、入力した周波数範囲のため理論値ほど広範囲に取得していません。これは、周波数応答推定器の設定によるものです。周波数推定では実験的にデータを取得するため、すべての周波数に対して測定できるわけではありません。
二つ目の差異は、位相遅れです。Simulinkによる結果の方が低周波における位相遅れが大きくなっています。この原因は筆者は分かっていません。(シミュレーション起因のものかと思いますが…。)
いくつか差異があるものの、周波数応答推定器を用いることで解析解を求めなくても周波数応答を取得することができます。
まとめ
このページでは、バンドパスフィルタについて紹介しました。ポイントは次のとおりです。
- バンドパスフィルタとしてRLC素子を利用したフィルタ、RとCによるフィルタ、RとLによるフィルタなどがあります。
- RLC素子を利用したバンドパスフィルタについて、伝達関数、ゲイン、カットオフ周波数、位相を導出しました。
- MATLABで伝達関数からボード線図を取得する方法を紹介しました。
- Simulinkの周波数応答推定器を利用してSimscapeモデルの周波数応答を推定しました。その結果、概ね理論値と一致したボード線図を取得することができました。
