前回は、Weaver変調器による周波数シフタの全体コード(三上先生のコードそのまま)をビルドして実際に周波数シフトが起こっていることを実機上で確認いたしました。今回は、要素部品のうち初段の帯域通過フィルタの特性を実機で確認してみます。処理対象の100Hzから4.5kHzまでの周波数のみを通すもの。
※「手習ひデジタル信号処理」投稿順 Indexはこちら
※勝手に手習ひさせていただいております教科書へのリンクを掲げます。
三上直樹先生著、工学社『「Armマイコン」プログラムで学ぶデジタル信号処理』
上記教科書の6.4「Weaver変換器」による「周波数シフタ」を手習ひさせていただいております。
※実習はST Microelectoronics社製 Nucleo-F446REボード(STM32F446RE、Arm Cortex-M4F搭載)がターゲットボードです。ビルドは Arm社のWeb開発環境 Mbed Webコンパイラ(OS2)を使わせていただいております。なお、三上先生のソースは、Mbed Webコンパイラ環境(要無料登録)で誰でも参照可能です。
帯域通過フィルタ
この初段の帯域通過フィルタは、処理対象となる周波数より低い周波数と高い周波数を抑止して、処理対象の周波数だけを処理するためのフィルタです。大分前の回で手習ひさせていただいたIIRフィルタクラスを使って構成されています。フィルタの係数は三上先生お手製のツールで設計できるものです。同一条件で設計してみたところが以下に。
実機を動作させて上のような振幅特性が得られれば、予定どおりと(得られなかったら困ってしまうけれど。。。)
信号処理プログラムのソースはMbedで公開されていますが、上記ツール(ソースはC#)は御本を購入してダウンロードファイルのパスワードを取得しないと得られません。ただし、Matlab等のツールを使用できれば、同等な設計をできるんじゃないかと思います(理工系の学生さんはMath Works社から優遇されているので多分無償で使用できる権利を学校から貰える筈。購入する場合も学生ライセンスは激安?)
Arm Mbed環境から、該当のソース部分を引用させていただいたものが以下に。
帯域通過フィルタのみ観察のためのソースの変更
実験のために ソースの割り込みハンドラ部分を「勝手」変更させていただいたものが以下に。本来あるべき後段処理を全部コメントアウトして、BPF部分のみを残したもの。
実機動作結果
冒頭のアイキャッチ画像のような実機回路に、変更したソースをビルドしたオブジェクトを書き込み、50Hzから5kHz(サンプリング周波数が10kHzなので)の範囲について振幅特性を測定したものが以下に。
赤色のカーソルは、だいたい振幅が -3dB 落ちたところに置いてあります。
外付けの回路の影響もあるし、BPFだけの計算値と完全に一致するわけないのですが、かなり近い特性がでているんでないかい。ホントか?
絶対自力じゃ連立チェビシェフのBPFフィルタなど設計できるとも思えませなんだが、こうしてツールがあればできそうな気がしてきます(気の迷いだよん、自分。)