google-site-verification: google3bd66dd162ef54c7.html
fc2ブログ

ラズピコとArduinoでFFTアナライザーを作ってみた

◆まえがき
前の記事ではオーディオ用のスペクトラムアナライザを作りました。それをベースに、チャンネルを一つに減らすことで帯域幅を拡大し、更に周波数をレンジ切り替え機能を付けました。

これってFFTアナライザーが出来たことになると思いますが、その内容を解説します。

◆機能概要
・Raspberry Pi pico (以下パイピコ)のボードを使い、出来るだけ少ない外付け部品で作ることを目指しました。そんなことでアンチエイリアシングフィルタは無し。

・パイピコのADコンバーターを使いサンプル数256点のFFTで解析。測定レンジと特性の関係は下表の通りです。

レンジと仕様

レンジ11はパイピコのADCの値を analogRead() で読んで保存した時の最高速の状態です。DMAを使えばもっと速く動くようですが、今回はそこまでやっていません。

◆回路図
パイピコFFTの回路図
◆実装の状態
パイピコFFTアナライザー
・幅を拡げたガニ股ブレッドボードを使っています。
・OLEDに1.3インチのSH1306を使った状態です。SD1306もソフトの変更で使用可。
・ボタンの操作でレンジの上下、過大入力時はLED点灯(GP15)

◆プログラム
Arduino IDE で作ったプログラムです。
20220617_PiPicoMultiRangeFftAnalyzer.txt (BOM付きUTF-8)

注)
・ソフトでタイミングを作っているので、コンパイラのバージョンの違いなどで再調整が必要になるかも知れません。
・コンパイル時にビルドパスの固定をやらないとコンパイルの処理時間が長くなります。(それでも初回のコンパイルは5分以上かかります)

◆画面表示
表示画面

・画面の上部に波形を表示。256点ある波形データーを半分の128に間引いて表示しています。右に波形全体の時間を表示しています。解像度が粗い(16画素)ので細かい所まで判りませんが、飽和していないかくらいは判ると思います。

・スペクトルはFFT結果の0から127までの絶対値の成分で表示。0は直流成分ですが、自動オフセットキャンセル機能があるのでちょっと待てばゼロになる(はず)。

・目盛線は0dB, -20dB, -40dBの位置で、グラフの下端が -50dB。0dBは入力電圧がおよそ1Vppです。

・スペクトルのピークホールド機能付き(ピークを記録し徐々に減衰)

・一番下に周波数の値を表示。1目盛が10画素あり、その間にスペクトルのバーが10本あります。

◆動画


◆まとめ
・ミニマムな機能のFFTアナライザですが自分専用と言うのが嬉しいです。持っていれば何かの時に役に立つと思います。

・アンチエイリアシングフィルターが無いので、折り返しの影響を注意して使う必要があります。

・SN比が悪くてメインの成分の周りにスプリアスのようなものが見えます。これはRP2040のADCのリニアリティが悪いというエラッタ(RP2040 E11)が原因なのかも知れません。

・エイリアシングの問題はローパスフィルタを入れれば解決できますが、そのためにはオペアンプを入れて信号源インピーダンスの影響を受けない状態を作る必要があります。ただ、そうすると回路が大きくなってしまうのであまりやりたくはありません。オーバーサンプリングを行って折り返し周波数を上に移動させれば問題が見えにくくなるしフィルタの設計も楽になります。何か対策するならそのあたりが落としどころかでは無いかと思っています。

・DMAを使ってADCを動かせばサンプルレート500kが得られるようなのでやってみたいです。ただFFTの200kHzレンジにはサンプリングレート512kHzが必要で、500kHzではちょっと足らないのが残念。そのためにオーバークロックしても良いけど、他の副作用を全部潰すのも面倒そうです。
関連記事

コメントの投稿

管理者にだけ表示を許可する

フィルタ、悩みます

アンチエイリアシングのローパスフィルター、可変するサンプル周波数に追従させるとなると・・・面倒。
供給クロックの周波数でカットオフ周波数を変えられるスイッチトキャパシタ・フィルタあたりがアナログ的手法なんでしょうけれど。
オーバーサンプリングしてデジタルフィルタというところですか。

re:フィルタ、悩みます

周波数可変なフィルタとなると厄介ですよね。
デジタルオシロとかどうやってるんでしょうね。DSPで華麗にやっつけてるような気がしますが、ちょっと調べたけど判りませんでした。
カレンダー
11 | 2023/12 | 01
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。
記事の内容のご利用は読者の自己責任でお願いします。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード