復元・復旧サービス充実|(有)フロンティア・オンライン
2024/08/20
こんばんは、前回までに自作複合アンプで試験・視聴したいオペアンプを用意しました。
すぐさま試験したいところなのですが、残念ながら手元には携帯型テスター兼オシロスコープしかありません。
「音信号のみに特化してTHD・周波数特性まで、簡易的にでも分かりやすい計測器があったらなぁ」
ということで、今回は、これを自作します。
(5)でチラ見せしたとおりなのですが、既に出来上がってますので、まずは計測器の全様です。^^;
構成は次の通りです。
下図の通り、M5Stack Core2 M-BUSには優先的に使えるADコンバータポートが2つ(G35、G36)、3.3V電源供給に1ポートが用意されてます。
ESP32のADC仕様をみますと、減衰器なしで0~1V、-11dBで0~3.6Vまでの電圧を取り扱えるとあります。
入力したい信号はオーディオ信号(正弦波)ですので、そのまま入力しますと半波分しか取り出せません。
そこで、M5Stack本体から都合の良さそうな3.3V分の下駄をはかせるフィルタ回路を用意します。
図面とM-BUSピン配置
V1:3.3Vポート
OUT:G36ポート
V2:プローブより±の配線を接続
図面にはないですが、プローブの途中に入力電流値を抑えるための10kΩ抵抗を取り付けています。
この構成で計測できる電圧は概ね±1.65Vまで、超えると故障しかねないですが、保護回路なし。
計測したいアンプ側の操作を間違えたら怖いことになりかねませんが、まぁ、いいでしょう!汗
さて、ADCから入力した信号を処理してオシロのような機能を提供するのはM5Stack本体。
出来栄えは全てここで決まります。
簡単に処理できるanalogRead()、analogReadMilliVolts()、またはadc1_get_raw()を使って処理しきれるか確認したところ、どうも全てでオーディオ信号の入力解析には不向きでした。
データ入力関数の応答速度
analogRead():12800 Hz / 128 samples 80us限界
analogReadMilliVolts():12800 Hz / 128 samples 80us限界
adc1_get_raw():25600Hz / 128 samples 40us限界
この処理能力ですと、最大でも12Kまでの範囲でしか解析ができません。><
で、本家espressifのドキュメントを眺め直してみました。
おお!?ビルトインACDポートでI2S/DMAが使えるよう、最大150KHzまでいけそうな仕様です。^^
ということで、i2s_read()で実装したら実測どのくらい使えそうか確認しました。
i2s_read():40960 Hz / 2048 samples 20us限界
データ取得後のFFT処理や描画、UI処理などもありますので、仕様ほど高速処理はできませんし、目標の44.1KHz 4096サンプルには至れませんでした。
それでも20KHzまで測定できるオーディオ用の簡易オシロスコープとしては使えそうです!!^^
こちらの入力処理を採用して、Wave波形表示、スペクトルアナライザ、THD+Nの出力、スイープ特性記録といった機能を盛り込んで、完成といたします。
被検機器の構成は次の通りです。
測定機器には、M5Stackオシロスコープと既製品(XEAST XE-702S)を使って測定値の実測をしてみます。
アンプからのスピーカー出力は概ね1Vppで検査します。
おお~、大雑把でも自作には使えそうな精度が出ています。
XE-702S計測
周波数:1000Hz
VPP:1.07V
Vmax:0.38V
M5Stackオシロ計測
周波数:1.0KHz
VPP:1.01V
Vrms:0.36(FFT還元0.39)V
THD N:0.007564% / 332サイクルアベレージ
そして案外とLM1875複合アンプの性能が良さそうです。
次回は、各種オペアンプの比較試験を行います!楽しみです。^^