別件記事で、信号処理素人の老人がIIRバンドパスフィルタ(BPF)をScilabで計算。デジタルフィルタなので期待通りの動作でした。ここは一発「同等」のアナログ・フィルタを実機で実験せんと。またもや暴挙に。その裏側にあるのは、アナデバ様のWebツールを使えるハズという一点であります。まあ「同等」は直ぐに諦めたけれども。
※「やっつけな日常」投稿順 Index はこちら
別件記事は以下です。
手習ひデジタル信号処理(127) Scilab、filter関数で時間波形をBPフィルタ
上記ではScilabのIIRフィルタ設計関数を使ってバンド・パス・フィルタを設計後、設計した係数を時間波形に実際にフィルタかける関数に読み込ませて、波形に適用してみてます。まあパラメータさえ設定できれば、信号処理素人老人でも計算は出来るっと。
しかし、このままにしておくのはマズい気がします。フィルタなんたらいう大それたものを扱っているのでもそっと痛い目に合わないといけない気がします。マゾか?
そこで思い出したのがアナデバ(Analog Devices)様の以下のWebサイトです。
素人老人でもクリクリやっていけば、アナログ・アクティブ・フィルタが設計できてしまうツールです。恐れ多いな。
ウィザードでの設計
当初は、別件記事のデジタルフィルタと同等な仕様を目指そうとしたのですが、直ぐに諦めました。ウィザードが対応していないわけじゃありません。同等を目指すと自動生成される回路の段数が増えて、どんどん複雑になっていくからです。ヤバイよ。やってみるよろし。まあオペアンプ2個で済まそうとかは思ってないけど、せいぜい3個くらいにとどめておかないとブレッドボードに配線するだけで日が暮れてしまう(もう日は暮れている?)その上、受動部品の値もどんどん精緻になります。手元にはトビトビのよく使いそうな、それも精度の低い「お求めやすい」部品しか在庫がありませぬ。折角のウィザードの緻密な設計を踏みにじり「だいたい」な感じで実装する方針といたしました。
別件記事とあわせ、バンドパスフィルタを選択します。そして現れる最初のページで所望のフィルタ特性を定義します。こんな感じ。
別件記事で設計したIIRフィルタは通過域が広く、もっと急峻な特性だったですが、そこを合わせようとすると作成される回路段数はうなぎのぼりに増えていきます。やっぱ、アナログ・フィルタで特性だすのは大変なのね。。。ということで、目標を以下のように切り替え。
-
- 200Hz付近の信号が「通過」してくれたらよい
- 100Hz付近と300Hz付近の信号が20dBくらい減衰してくれたらよい
このくらいに妥協すると、オペアンプ3個でいけるみたいです。もっと妥協すれば2個も可能だけれども、今回は3個、6次バタワース・フィルタだと。
最初、違うオペアンプをレコメンドされたのですが、手元に在庫があるやつ、ということで「クラッシックな」OP07を指名してしまいました。また、受動素子の精度は無視。また、指定された値に近いものをテキトーにアテガう現物合わせです。
LTspiceでシミュレーション
ウイザードからは各種のグラフや回路図が得られるだけでなく、部品表やら即シミュレーション可能なLTspiceネットリストまでダウンロード可能です。しかし、緻密な定数でサブ回路化されていたので、今回はチマチマ手入力いたしました。勝手に受動デバイスの値を「改ざん」して「改悪」回路図にしてしまうためです。「改悪」回路図が以下に。
まあ、バンドパスっちゃバンドパスだけれども、なんやら北斎描く富士みたいな形じゃのう。。。それでも200Hz付近は通過する目論見。
現物回路で実験
いつものとおり、ブレッドボードで実験。抵抗やコンデンサを複数本つかって指定の値に近付けているので回路図よりも部品点数が多め。ブレッドボード1枚に詰め込みたかったのだけれどもダメね。。。こんな感じ。
例によって Digilent Analog Discovery2を接続し、正負電源投入、まずは200Hzの正弦波(オフセット0V、振幅1V)を与えた場合の時間波形が以下に。
黄色C1が入力波形、青色C2がフィルタを通過した波形です。200Hz付近は0dB目標にしたのに振幅が半分くらいになってますな。実機の特性落ちとるなあ。
やあ、入力信号100Hzにすると出力はストップだな。ちゃんとフィルタされているみたい。
微妙な波形が見えとるけど、これは予定通りか。
さて、この実機BPFの振幅周波数特性はというとこんな感じ。富士というより岩手山?
ピーク位置もちょっとずれとるし、高さも低いデス。でもま、アナログ・アクティブ・バンドパス・フィルタではあるみたい。やっつけ。