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

ラズピコでFFTアナライザーを作る (V0.6)

◆まえがき
Raspberry Pi Pico(ラズピコ)で作るFFTアナライザの話の続きです。今回は、前回の記事の状態をベースに、ソフトを修正してDMAを使ってADコンバーターを読むようにします。狙いはもちろん高速化ですが、サンプリングのタイミングジッタが減るので、周波数の高いレンジで発生していたSNの悪化が防止できるはずです。

と言うことで今回のバージョン(V0.6)では、最大周波数を50kHzから180kHzに拡大。また、SNが良くなったので感度の下限をー60dBから-80dBに拡大してみます。

・Raspberry Pi Pico
ラズピコ

◆ADC_DMA
マイコンで高速にADCを行うにはDMAを使うのが定石ですが、Arduino IDE から動かす時の判り易い事例がなかなか見つからなくて苦労しました。ということで、あちこちに書かれている情報を参考にしながらプログラムを書きました。
ポイントは、Arduino IDEのpi picoの標準版(mbed版)に入っている "hardware/adc.h"と "hardware/dma.h" を使うことでした。

◆回路図
ラズピコFFTの回路図
OLEDだけ接続すれば他の部品は無くても 5kHzレンジで動きます。雰囲気を確認したい時にお勧めです。
あちこち測っているとアナログ入力ピン(GP26)を壊しそうなので、保護用にR5を追加しました。(省略してゼロΩでもOK)。

◆ブレッドボード
ブレッドボード
僅かな部品で作ることが出来ます。なお、ガニ股ブレッドボードを使っています。

◆プログラム
20220719_PiPicoFftAnalyzerV06.txt (BOM付きUTF-8)
コンパイルに7分くらいかかります。コンパイルバッファを設定することで2回目以降の処理が早くなります。

1) OLEDはSD1306とSH1106を選択で使用可能(コメントアウトで切り替え)
2) FFTの窓関数はハニングを使用。(前回まではハミング)
3) ラズピコのDMA_ADCは最大周波数 500kHzで動くのですが、レンジの値を切りの良い数字にするため最高は 460.8kHzで使用しました。この時のレンジは180kHz.です。ちなみに200kHzレンジを作るためにはサンプリング周波数512kHzが必要です。
4) 縦軸を-80dBまで表示させるため、画面の解像度を8画素/20dBに変更。従来は10画素/20dB。
上記以外は過去記事も参照

◆画面
・100Hzレンジ
100Hz
スペクトルの下限を-80dBにしました。(文字がかぶっていて見づらいです)

・180kHzレンジ
180kHz
最高速レンジです。従来はバックグラウンドが上昇していたのですがそういう現象が無くなってSNが良くなりました。
訂正:時間軸の表示が461usとなっていますが556usの間違いです。

◆参考
FFTの窓関数をハミングからハニングに変更しました。これに伴い感度が変わるという情報があったのですが、試してみると差は僅か(ハニング:68.849、ハミング:68.889)だったので補正は行っていません。私の調べ方が悪いのかも知れません。
資料:arduinoFFTのテスト - ライブラリの誤りの件

-80dBまで表示するようにしたので残留ノイズが目立ちます。基板の電源コンバーターのノイズが原因の一つのようです。ラムさんが3端子レギュレーターに交換したテストをやられていて大幅にノイズが下がっています。
資料:ラズパイpico FFT最新 ラムさんのツイート(時代遅れのアナログ爺さん)

ローパスフィルタが入っていないのでエイリアシングの影響をもろに受けるので、その点は注意して使う必要があります。

◆まとめ
180kHzの帯域幅があればオーディオ信号やメカの振動解析などに結構使えるのではないかと思います。それに、自分専用のFFTアナライザが手に入るので、波形による高調波の発生の様子やエイリアシング現象の確認などを存分に試すことが出来ます。

画面は-80dBまで表示していますが実用になるのは-60dB以上だと思います。それでも-60dBは 1mV に相当し、周波数が違えば1Vの信号に隠れた1mVのノイズが見えます。こんな芸当はオシロには出来ません。

以上述べたように、大雑把な表示しか出来ませんが、結構使い物になる気がします。ユニバーサル基板に組んでケースに入れて計測器として仕上げるのも悪くないと思います。

◆追記
この記事のツイート(動画があります)
関連記事

コメントの投稿

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

作るのが楽しみに

OLED表示器、まだ買ってません・・・ でも・・・
こりゃなんとしても作らなけりゃ。

re:作るのが楽しみに

気に入って頂いたようでありがとうございます。
OLEDはコントラストが高いのでサイズの割には見易いのですが、焼き付きやすいのが難点です。

恐縮です。教えてもらえないでしょうか

またや、教えていただきたいのです。愛車SLKのカーラジオの液晶パネルの端が黒くなりました。ネットで自分なりに調べると液晶液が漏れとあると、液などはいっているのか?液晶パネルの構造図をみると液などの記載はなく??となるばかり・・。
どうもパネル単体の不具合で、このままでもラジオ、ラジカセは聞けます。しかしできれば修理してすっきりしたいので、この原因と、修理が出来れば方法を教えてもらえないでしょうか?
https://monnobose.blogspot.com/

re:恐縮です。教えてもらえないでしょうか

リンク先拝見しました。
液晶パネルが液晶漏れしてるみたいです。
2枚のガラス板の間に液晶の液が入っているのですが、その液が漏れているようです。狭い隙間に入っている液で量は僅かなので、漏れた痕跡は残らない気がします。

修理は同じ液晶パネルに交換するか、カーステ自体を交換するしか無さそうです。あるいは、カーステはアンプとしてだけ使い、Bluetoothのミュージックレシーバーを付けて、操作はスマホからやる手があると思います。

すっきりしました。

ありがとうございます。液が入っているのですね。納得すっきりしました。液晶パネルの不具合だけで、ラジオもステレオも使える(自動選曲もできるので)のでこのまま、聞こえなくなるまで使うことにしました。
重ねてありがとうございました。
カレンダー
02 | 2024/03 | 04
- - - - - 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コード