ADuC7026でFFTその2
先日、DWM3月号のおまけ基板でFFTスペアナもどきの実験をしましたが、折角なので、もう少し遊んでみました。
今回の改修では、実用性を考えて周波数範囲を10kHzまでとし、そのかわり2倍のオーバーサンプリングをすることで、FFT処理前に簡易なアンチ・エイリアスシング・フィルタ(FIRフィルタ)をかけることにしました。
(あくまでも簡易フィルタなので、ADC入力前に十分フィルタリングする必要があります。)
またFFT演算部を16bit固定小数点に書き直したため、ADuC7026は8kBのRAM容量ですが、FFTサンプル数512をなんとか確保できました。
<仕様?>
・サンプリング周波数 40kHz(2倍オーバサンプリング)
・FFTサンプル数 512
・測定周波数範囲 ~10kHz
・周波数分解能 約40Hz
・レベル表示 0~-80dB
・窓関数 ハニング窓
なお、ADuC7026のADCは12bitなので、表示範囲が「~-80dB」となってますが、ダイナミックレンジ的には60dB程度がいいところです。
で、早速、自作モジュラーシンセのスペクトラムをいろいろと観測してみました。
うーん、こんな簡単な「おもちゃ」でも結構楽しめます。
ちなみに動画ではこんな感じっす。
<おまけ>
ADuC7026_FFTスペアナ実験回路
ADuC7026_FFTスペアナROMイメージ
なお、ソースファイルは公開するつもりはありません。
なにせ寄せ集めものなので…(^_^;)
| 固定リンク
この記事へのコメントは終了しました。


コメント
ダイナミック・レンジを押さえつけている要因はなんでしょうか?
投稿: 酔漢 | 2006/03/13 08:32
おお~、これはかなり面白そうですね。同じボードを持っていてもさっぱり活用していないのがお恥ずかしいです(笑)。今度オシロと組み合わせて試してみたいと思います。
投稿: 寿小五郎 | 2006/03/13 18:13
酔漢さん>
60dBはかなり大雑把ですが、ADCが12bitに起因する量子化ノイズと、クリップによる歪みを考えるとこの程度かな?と言うだけです。(^_^;)
寿小五郎さん>
当初は難しそうだなと思ってましたが、PICなどよりは相当パワーのあるマイコンなので、プログラム的には案外気楽なもんです(笑)
とりあえずなら、外付け回路も簡単なものでいいので、ぜひ遊んでやってくださいませ。
投稿: RJB | 2006/03/13 23:37
なるほど、わかりました。2番目の波形は、FM変調らしいスペクトラムですね。
投稿: 酔漢 | 2006/03/14 10:49
確かに見えますね…
元はVCOのパルス波(DUTY<10%)で、インパルス応答もどきを観測してみました。
投稿: RJB | 2006/03/15 00:31
>60dBはかなり大雑把..
は、どうやって計算するのかしら、1ビット当たり、6dB(2倍)tと考えて、一般には16ビットで、(16X6dB)=96dBとかんがえるのかしら。
12bitなら、72dB、ここから、ノイズ分を大雑把に12db割り引きして60dB?
投稿: takeda | 2006/03/15 01:46
まあそんな感じです。すいません適当で(^_^;)
20log(12bit)の72dBと、あと入力バッファやADCでのクリップマージンとして8~10dB(2.5Vp-p→1Vp-p)程度見込んだだけです。(クリップが発生すると、折り返し雑音がスペクトラム上にワァーっと拡がるのでノイズフロアが上がったようになります。)
投稿: RJB | 2006/03/15 23:15