オペアンプひとつで 4 次のフィルタ
(注意: 以下の記事を掲載後 「7次までのフィルタの楽々設計」 の記事を書いており、
そこにあるエクセルの方が高性能です。)
右の図はオペアンプひとつで 4 次のフィルタを実現することができる回路です。ずっと前から、この回路でバタワース特性を出すための R・C 定数を探していました。 今日、このサイトのお客様で、アナログ回路収集家の方から教えて頂きましたので、早速皆様にお伝えします。 それを正規化したものがエクセルシートの中の Examples として書いてある定数です。
この定数の決定者は、ベッセルのカットオフ周波数を 「位相が半分だけ回る位置」 と定義しています。 4次ですから、最終的に 360 度回りますので、180 度の所です。 3dB 落ちよりはもう少し高い周波数になります。
(ところが、よく見ますとだいぶずれています、、、修正は後述)
エクセルシートはこれです ==>
カラムの B4 から B12 までに任意の値を入れるとカーブを計算します。 どれも 0.1 から 10 までぐらいの値を入れてください
マクロが付いていますが、それについては後述します。
この図は 1dB Chebyshev です。

定数決定には自由度がありますから、同じ特性のフィルタでも Example に掲げている以外に無数の組み合わせがあります。 Example の値は、R2 と R3 を同じにする、 全部の C を同じにする、という拘束条件で限定計算されたものです。
オペアンプの裸ゲインが下がってしまう領域では計算カーブからはずれます。 注意してください。
マクロ RKCal の説明
エクセルの中に Example 以外に、多項式から R と K を計算するマクロを組み込みました。 この基本は、教えて頂いた下の参考文献に載っていた Fortran の小さいプログラム WONGA です。 それの概念を拝借し、Excel のマクロに仕上げました。
4次のフィルターの伝達関数の分母 H(s) を s の2次式に因数分解した式、
H(s) = ( s^2 + a s + b ) ( s^2 + c s + d )

の係数、a、b、c、d が分かっていて、かつ C1-C4 にまとめて1つの値を与えたとき、R1-R4 と K の値を計算するプログラムです。 自動的にカラムの B4-B12 に値が入り、カーブを描いてくれます。 Q と ω で係数をお持ちでしたら、あらかじめ手計算で a b c d にして入れてください。
RKCal Help にあらかじめさまざまなフィルタの係数値を入れておきましたので、それを使えば代表的なフィルターの R と C と K が計算できます。 選んだフィルター形式の行をクリックすると係数がエクセルの RKCal Calculator のカラムに転送されます。 続いて Go ボタンを押すと R と K が自動計算されてグラフが書き換えられます。
右の表は Help に出ているメニューです。 Modified Cheby と書いてあるのは Modified Chebyshev の略です。 偶数次のチェビシェフは直流でのゲインが最大ゲインよりもリップル分だけ下がりますので、それを補正したものです。
Bessel -1 と Chebyshev 2dB は、Example に書いてある、参考文献著者の RCK 値を出します。 (最後の桁が異なりますが、私のプログラムの精度が高いためです)
Bessel -2 は私が Bessel の定義式から導き出した係数で、有効数字 14 桁で出してから丸めました。 それを ω=1 で 180 度になるように正規化したものが ω0 adj. です。 Bessel -1 とは異なった数字になっていますが、この方がより正確です。
私としては、例えば K を指定できる様な、もう少し自由度の高いプログラムに改造したいのですが、時間ができたときの楽しみに取っておきます。
[参考文献]
The BB electronics series "Function circuits" by Wong, Yu Jen, Kingsport Press, ISBN 0-07-071570-X
もしこの本をお読みになるのでしたら、プログラムに単純な間違いがある場所がありますので、検証しながら使ってください。
[補足]
自動計算の収束性について補足しておきます。
このマクロで使っている計算方法は2分木法と呼ばれるものですが,ニュートン・ラプソン法と並んで規定の区間で単調増加か単調減少かが分かっている式の解を求めるときに使われます。

ところが、今回は途中で極大極小が出る場合もあり、ニュートン・ラプソンでは収束しない可能性がありました。 2分木法で符号の検査を使ってうまく処理しています。
右に極大極小が出るケースのグラフをお見せします。 これは横軸に特定の素子の値を取り、縦軸にフィルタの式のひとつの係数との誤差量を取ったグラフで、誤差が0になるような解を求めようとするときの評価関数です。 微分の向きが一定方向ではありませんので、ニュートン・ラプソンだと途中で引っかかってしまうときがあります。
思い出しますが,昭和 44 年ごろ、バロースの大型コンピュータを使って似たような計算をしたとき、 収束しないまま 10 分間から回しをして怒られました。 私の給料の3ヶ月分ぐらいの請求書が来て、高くついた失敗でした。
