« トラ技4月号 | トップページ | SSM2044 »

2006/03/12

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程度がいいところです。

で、早速、自作モジュラーシンセのスペクトラムをいろいろと観測してみました。

VCO波形(矩形波)
IMG200600312A

minimoogクローンVCFのレゾナンス
IMG200600312B

VCFを発振させ、矩形波LFOで変調(FSK?)
IMG200600312C

うーん、こんな簡単な「おもちゃ」でも結構楽しめます。
ちなみに動画ではこんな感じっす。

<おまけ>
ADuC7026_FFTスペアナ実験回路
ADuC7026_FFTスペアナROMイメージ

なお、ソースファイルは公開するつもりはありません。
なにせ寄せ集めものなので…(^_^;)

|

« トラ技4月号 | トップページ | SSM2044 »

コメント

ダイナミック・レンジを押さえつけている要因はなんでしょうか?

投稿: 酔漢 | 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

この記事へのコメントは終了しました。

« トラ技4月号 | トップページ | SSM2044 »