● 実験テーマ75

デジタル・フィルタの実験」 (dsPIC30Fトレーニング基板+自作簡易自動周波数特性測定装置にて実験をしてみました。)

■ 2016.3.15
  ・ターゲットの、dsPIC30Fトレーニング基板は、約10年前に、キットで組立てたものですが、
   オリジナルは、トラ技2007年8月号に付属されてる「dsPIC30F2012(28pin)基板」
   (ブートロダー+タクトSW等を搭載)を、マルツ製トレーニング基板の、40pinソケットに実装して
   使うようになっていたものを、  40pinの、dsPIC30F4013+PICkit2で開発出来るように、
   インターポーザ基板による改造を施したものです。
   この詳細については、実験テーマ3の記事を参照してください。

  ・トラ技2007年9月号に、DSPライブラリによる、各種デジタルフィルタの実験記事が載っていたので、
   既にそれにのっとり、PWM+LPF出力での実験は一通り済んではいました。
   ただ、この時の測定には、記事でも紹介されている、「SoftOscillo2」の、Fスイープ機能と、FFT解析機能
   を使ってのものでした。
   Fスイープに使っているWAVファイルの、Fポイントは、50Hz〜 20KHzの間で全11ポイントしかないため、
   詳細なグラフが  描けず、折れ線グラフのようになってしまいます。
   今回、これを、最近ソフト更新した「簡易自動F特測定装置」で、測定してみたくなりました。
   これなら、Fスイープポイントは、10Hz〜 100kHzの間で全181ポイントあるので、詳細なグラフ描画が可能です。
   デジタルフィルタはどれも、減衰が急峻なので、0dBを基準にして測定すると、下の方が、-40dBでスケールアウト
   してしまうので、オフセットトリマを回し、+10dBを基準にして測定してみました。

   尚、描画されたカーブは、ソフトで作られたDSP演算による特性と、PWM(又はDAC)出力後の、アクティブLPF
   (カットオフ≒ 5kHz)の特性の合成されたものとなります。
   なので、HPFなどは、高域が強制的に、5kHzからダウンし始めるので、一見、BPFのように見えるので 注意が必要です。
   またテストプログラムは、雑誌に付属のCD-ROMに収録されている各サンプル・プログラムをブートローダーでなく、
   dsPIC30F4013+PICkit2で開発出来るよう手直ししました。(テスト内容は特に変えていません。)


■ 2016.3.16
  ・まずは、移動平均フィルタから試してみました。
   プログラムの流れの概要は以下の通りです。(トラ技記事よりまとめて抜粋)
   T3割込み関数に10タップ移動平均フィルタを組み込む。
   T3周期で、ADCから入力信号のAD変換データが読込まれ、T2の周期で動作する、PWM処理へデータが渡される。
   移動平均フィルタの処理は、ADCと、PWM処理の間で行う。

   以下にその結果を示しました。1kHzから急峻に減衰し始め、2.8kHzで、-33.50dB(読値+10dB)ダウン、
   そして約5kHzにて-20dBにアップ、その後は、幾つかのバタツキを経て減衰して行くのがよく判ります。


■ 2016.3.17
  ・次に、127タップの、各種FIRフィルタを試しました。(トラ技では、第6章)
   電源投入時に、2つのタクトSWの状態を読込み、その状態によって
   4種類のフィルタ→ LPF, HPF, BPF, BRF(ノッチ)の、係数(127個)を、どのテーブルから読込むか判断し、
   各処理に分岐します。
   その係数の取得は、「DSPLinks」というソフトによって行っています。
   以下にトラ技から抜粋した、本実験のブロック図を示しました。

   以下にその結果を示します。


■ 2016.3.21
  このトレーニング基板は、オプションで、Microchip社の、DAC:MCP4822 が実装できるようになっていて
   ヘッダピンにて、PWM出力と、DAC出力を選べるようになっている。
   DACの方が、S/Nは良くなりそうなので(トラ技の記事では、-20dBほど良くなると書いてあった。)
   DAC+LPF出力でも、試してみた。

   F特で見る限りは、見た目、そんなに変わりはないが、良く見ると、低レベル領域の、スペクトルの様子
   などが若干詳細になったような気がする。
   まあこの辺は、FFT解析で見ないと判らないか・・・

   以下にDAC+LPF出力での、F特実測例を示した。


<最終ソース>
 ・こちらから、どうぞ→ MovingAverage_4013.c (移動平均フィルタの、テストプログラム)
                   StaticAdaptive_4013.c (4種の、FIRフィルタの、テストプログラム(PWM出力の場合))
                   ExternalDac_4013.c (4種の、FIRフィルタの、テストプログラム(DAC出力の場合))


← 実験テーマ1に戻る   TOP PAGEに戻る   実験テーマ76へ →