LCフィルタ設計プログラム(MATLAB/GNU Octave)を作ってみました

LCフィルタ設計プログラム(MATLAB/GNU Octave)を作ってみました

著者:石井 聡

アクティブ・フィルタを設計するならアナログ・デバイセズのFilter Wizardが使えます。Filter Wizardはこちら

https://tools.analog.com/jp/filterwizard/

しかし、パッシブLCフィルタではどうする?という問題があります。今回、MATLAB/GNU Octaveで動作するプログラム(mファイル)を作成しましたので、公開したいと思います。

なおMATALB/GNU Octaveはオンラインで無料で使えるバージョンがあり、ログインすればインストールなどすることなく、すぐに・簡単につかえます。またGNU OctaveなどのMATLABクローンは無償でWeb上でプログラムが提供されており、簡単に使い始めることができます。

昔そして最近までは

昔そして最近までは、LCフィルタの設計には、正規化プロトタイプ・フィルタの素子定数が表として示されている書籍などが用いられていました。アクティブ・フィルタの理論的設計は、依然としてそれも難しいものですが、伝達関数を2次伝達関数ごとに因数分解するだけでよいので、LCフィルタの設計と比較するとまだ簡単なものです。

LCフィルタの設計では、信号源抵抗と負荷抵抗があり、これらがLCの特性に影響を与えるため、理論的アプローチは非常に難しいのです。

がんばってLCフィルタ設計プログラムを作ってみた

私も長い間、このLCフィルタ設計の理論を攻略したいと思っていましたが、とても長い間それは叶いませんでした。Web上のとある記事で「反射係数を利用してLCフィルタを設計する」という記述をみつけ、それ以降も試行錯誤を続けながら、添付のzipファイルでご提供するLCフィルタ設計プログラムが完成しました。

このLCフィルタ設計プログラムは、以下の設計ができます。

  • バタワース(Butterworth)特性、チェビシェフ(Chebyshev)特性、ベッセル(Bessel)特性、楕円(Elliptic)特性のLPF
  • 信号源終端インピーダンスと負荷終端インピーダンスが異なるLPFも設計可能
  • チェビシェフ特性、楕円特性については奇数次フィルタに限定
  • 2次から9次までのLPFフィルタ設計が可能
  • 「信号源インピーダンスがゼロで、負荷インピーダンスがある値をもつLPF」と「信号源インピーダンスがある値をもち、負荷インピーダンスが無限大なLPF」が設計できる別プログラムも用意

 出力は1rad/sec、RS = 1Ωに正規化されたプロトタイプ・フィルタ定数が得られますので、以降に説明するようにこれを周波数・インピーダンスでスケーリングすれば任意のフィルタが可能です。

またHPFやBPFを構築したい場合も、以降の説明する変換式でそれぞれ変換させることができます。

LCフィルタ設計プログラムの使い方

MATLAB/GNU Octave環境をPC上に用意するか、Web上にあるオンライン・ツールを利用します。ここでは一例として、Web上のOctave Onlineを使用した例を示します。インストールする手間もなくとても簡単です。

https://octave-online.net/

① まずログインします(図1)

zipされている、lcfilter.m, zi_lcfilter.m, obtainZYvalue.m, removehead.mの4つのmファイルをアップロードします(図2)

③-1 lcfilter.mを選択してRUNします

③-2 信号源抵抗がゼロで負荷抵抗がある場合、または信号源抵抗があり負荷がオープンの場合は、zi_lcfilter.mを選択してRUNします

Filter Type (Butterworth, Chebyshev, Bessel, Elliptic)を入力します(信号源抵抗がゼロで負荷抵抗がある場合、信号源抵抗があり負荷がオープンの場合は、Elliptic(楕円)は対応していません)

⑤ 次数を入力します(Chebyshev, Ellipticでは奇数しか入力できません)

Chebyshev, Ellipticでは帯域内リプル、Ellipticではストップバンド阻止量をdBで入力します

⑦ 負荷抵抗を1Ωで正規化して入力します(たとえば信号源・負荷が50Ω同士で終端されている場合は、1を入力します)

図1 Octave Online(右からログインを選択)

図2 4つのmファイルをアップロード

図3に5次Chebyshev、0.5dBリプル、RL = 0.5Ωでの計算結果を示します(ω0 = 1 rad/secでの結果)。この信号源と負荷の終端インピーダンスが異なる場合は、構成が限定されるのでそのNoteが表示されています。

π型構成ではRS = 1ΩからRL = 2Ωのステップアップしか実現できません。ステップダウンのRL = 0.5Ωを実現するには、T型構成を用いる必要があります。RL = 0.5Ωと入力しても内部では反射係数で計算しますので、同じ反射係数(の絶対値)となるRL = 2Ωも一緒に計算されます。そうでなくてもこのように構成が制限されています。なお楕円特性ではこの関係が逆になっています(計算結果とシミュレーションで確認しました)。

この結果を用いて、以降で説明するようにスケーリングしたり、HPFやBPFに変換すればよいのです。

図3 計算結果(5次Chebyshev、0.5dBリプル、RL = 0.5Ω)

計算結果をシミュレーションしてみる

LTspiceを用いて、計算結果をシミュレーションしてみます。図4はこの結果で、0.5dBリプルの条件で設計していますが、それに合った結果が得られていることがわかります。なお、ここでのプロットは負荷に加わる電力を示しており、電力を√して、20logでdBに変換する手順をとることで、正しいプロットが得られるようにしています。ステップアップ、ステップダウンそれぞれで負荷インピーダンスは異なりますが、負荷で得られる電力はどちらも同じになっていることがわかります。

図4 図3の計算結果をLTspiceでシミュレーションしてみた

目的の周波数・インピーダンスにスケーリングする

LCフィルタ設計プログラムで得られた結果は、1rad/sec、RS = 1Ωに正規化されたプロトタイプ・フィルタ定数です。これを目的の周波数・インピーダンスにスケーリングする必要がありますが、以下の式で簡単に変換できます。

・インダクタ

・コンデンサ

ここでL, Cは求める目的の素子定数、Z0は信号源インピーダンス(RS)、LP, CPはプログラムで得られたプロトタイプ・フィルタ定数、fCはカットオフ周波数です。

なお、このプログラムや書籍の数表では、バタワース特性では-3dBの角周波数が1rad/sec = 1/2π Hzになるよう表記されており、チェビシェフ特性や楕円特性では帯域内リプル(たとえば0.5dB)の変動を超える角周波数が記載されています。そのため-3dB周波数はそれより高くなります。

ベッセル特性は次数により特性が異なり、-3dB角周波数はこのカットオフ周波数より高くなります。

これらからバタワース特性以外では、自分が目的とする周波数に変換するには、LTspiceで-3dBポイントを得てから変換するのがよいでしょう。

HPFやBPFに変換する

このプログラムで得られるプロトタイプ・フィルタはLPFです。これをHPFに変換するには、LをCに、CをLに置き換えて設計すれば実現できます。

BPFの場合はちょっとやっかいです。図5の3次バタワース特性のプロトタイプ・フィルタを基として例を示してみましょう。

これを図6のように目的とするBPFの-3dB帯域幅(下限~上限)fCを用いてフィルタを変換します(この例は1MHz)。以下に図5から図6への計算式を示します。式中にZ0がありますので、この式で目的のインピーダンスにスケーリングしています。

 

つづいて目的とするBPFの中心周波数f0を用いてフィルタをBPFに変換します(この例は10MHz)。

 

これにより図7のBPFが得られます。

図5 3次バタワース特性のプロトタイプ・フィルタ(LPF)

図6 -3dB帯域幅(下限~上限)を用いてフィルタを変換する

図7 得られた1MHz帯域幅、中心周波数10MHz、終端インピーダンス50ΩのBPF

BPFに変換されたフィルタをシミュレーションしてみる

図7をシミュレーションした結果を図8に示します。ただしく目的の特性が得られていることがわかります。

ところでフィルタが高次、中心周波数が高い場合は、LCの素子誤差が周波数特性に大きく影響を与えます。またµHオーダのインダクタはESRが大きく、これもフィルタ特性を低下させる原因です。そこで図7、図8の回路の定数において抵抗の誤差を±1%、インダクタ、コンデンサの誤差を±2%でシミュレーションしてみた結果を図9に示します。このシミュレーションはワーストケース解析で、ここまで悪くなることは少ないものですが、このように非常に誤差に敏感であることがわかります。なお品質管理的視点では、ワーストケース解析ではなく、ガウス分布モデルによる誤差解析を行います。ちなみにモンテカルロ解析はガウス分布ではなく、一様分布になっているので注意してください。

図8 図7のシミュレーション結果。ただしく目的の特性(-3dB帯域幅±500kHz)が得られている

図9 図7の回路を抵抗誤差±1%、インダクタ、コンデンサ誤差±2%でシミュレーションしてみた(左-40dBまで、右-12dBまで)

参考文献

上二つはワーストケース解析、一番下はモンテカルロ解析とガウス分布解析についてです

LTspice:シミュレーションの実行回数を最小限に抑え、最も厳しい条件で回路を解析する方法

https://www.analog.com/jp/resources/technical-articles/ltspice-worst-case-circuit-analysis-with-minimal-simulations-runs.html

複数の部品の誤差を考慮したシミュレーションによる評価(三共社 渋谷様記事)

https://www.sankyosha.co.jp/engineer_doc/pdf/2003-3_FUNC_Min-Max_Tolerant.pdf

LTspiceを使用し、複雑な回路を対象とする統計的な公差解析用のモデルを構築する

https://www.analog.com/jp/resources/technical-articles/how-to-model-statistical-tolerance-analysis.html