実際に製作してみて、設計通りの動作をするか確認します。
目次
試作
基板
一品ものですし、問題が出た時の修正作業を考えると、ユニバーサル基板(蛇の目基板)での試作を行うこととします。今回も、開発ボードを利用する設計になっておりますので、亀の子式での実装となります。
ユニバーサル基板
部品レイアウト
72×47mmサイズの入手しやすい物がちょうど合います。大まかな部品の配置は、このようにしました。結線の短さと、アナログ部(プリアンプ/オペアンプ)を分ける事を意識したレイアウトです。問題が出た時に対応しやすいように、ICソケットを多用しました。
電源ルート
写真は、電源関係だけを配線した後の状態のものです。この状態で実際に電源を入れて、各コネクタピンに所定の電圧が来ているか、テスターでチェックです。確認しながら配線を進めると、ミスを特定しやすくできます。
開発ボード
ESP32開発ボード(ESP32-DevKitC-32E)は、とても小さく扱いやすいです。前バージョンのような、ボードの改造をする必要はありません。そのまま、ICソケットに刺すだけです。ソフトの書き込みは、電源の競合がありますので、ソケットから外してUSBケーブルを接続して行う必要があります。
実際に使用したのは、秋月電子のAE-ESP32-WROOM-32E-MINIという互換品です。USBではなく、シリアル接続のみですが、安いので使ってみました。書き込み時に、ボード上のプッシュボタン操作が必要になりますが、特に問題はありません。良い点もあり、ケースに入れたままでも書き込み出来ます。
スピーカドライバ
使用する各部品は、かなり小さいものばかりなので、変換基板を利用して工作しやすくします。
ゲートドライバ
NJW4860GM1はHSOP8-DIP変換基板を使用。
FETブリッジ
TPC-8407はSIPモジュール基板を使います。
ADC
外付けADCのPCM1808は、TSSOP14パッケージなので、ユニバーサル基板に実装するのは面倒です。過去、細線を使って空中に浮かして結線したような事もありましたが、何かとトラブルの元なので、変換基板を利用します。外付けの部品も少ないので特に問題ありません。
プリアンプ
8ピンDIPのオペアンプを使った一般的な回路で、特に難しさもないのでユニバーサル基板に直接実装します。
LCDモジュール
ボケた写真ですが、こんな感じにモジュールからコネクタを引き出します。実は、設計中はATM0177B3Aでソフト開発を行っておりましたが、秋月電子で入手できる評価キットに付いている変換コネクタの大きさが、ケースに収まらない事が判明。1〜4ピンがNCなので、変換基板をカット加工すればケースに収まります。
結局はZ180SN1720を使う事にしました。互換品ではありませんが、外形は同じです。モジュールのフレキシブルケーブル端子は、直接半田付け可能なピッチ幅(1mmぐらい)なので、すっきりした配線になります。使った電線は、細いものが必要となりますが、モジュールへの応力を少なくするため、単線は避けた方が良いでしょう。
動作確認
電源部
先に電源部と各ソケットへの電源系だけ結線を行い、通電してみます。5V出力の確認のためにLEDを追加しました。(回路図には入っていません)各ピンに電源が来ているかテスターで確認しておきます。
スピーカ出力部
次に確認できるのは、一番重要なスピーカー出力部です。開発ボード(CPU基板)と、ゲートドライバを接続して、出力を確認してみます。音源は、Bluetooth接続が使えます。ゲートドライバの出力をオシロで確認しても良いのですが、NJW4860は100mA程度の駆動ができますので、直接小さなスピーカをつなげても問題ないはずです。ゲートドライバ周りの結線して、NJW4860DIPを挿してテストします。
これがテスト時の様子です。8Ω、7cmのスピーカを2つ用意、FETブリッジのソケットを利用してゲートドライバの信号を取り出し。開発時に使用していたプログラムを書き込み、電源投入。特に問題なく音が出ました。トータルで130mA位の消費電流でした。
全体結線後
全ての部品を結線して、プログラムを書き込む時の様子です。アナログ入力とスピーカを接続しています。
外装
ケース
部材
ケースの作り方を2種類考えました。1つ目は4箇所曲げて切り口を貼り合わせる従来のパターンで、曲げを2箇所に減らし後ろの角を丸めないパターンです。前者が難易度が高い工作なので、後者の方式を考えました。この絵は、それぞれ必要な部材の寸法です。
加工
結局、設計書通りにはせず4隅を曲げる工法にしてしまいました。
穴あけが終わったら、パネル部品を仮止めして問題がないか確認しておきます。今回は、下面パネルを付けています。
塗装
シルバー塗装は初めてです。艶消しクリアで上塗りして完成。アルミみたいに見えて高級感あるかも。
組み立て
問題点と対策
- プチプチ音が混じる
- バーグラフ表示がぎこちない
- 内蔵ADCのノイズ
プチプチ音が混じる
内蔵ADC、外付けADC、Bluetooth音源、どれでも必ずプチプチ音が入る。I2S入力(外付けADC)と、出力PWMの累積フレーム数が一致しない事まで判明。全機能を連動させてから発生する事象であった事から、Bluetoothが絡んでいるまでを試行錯誤で判明。多分タイマ割り込みが無視される。根本原因は不明だが、Bluetoothの初期化が終わった後に、GPTimerを再初期化するとフレーム数がズレる事がなくなる。プチプチ音がなくなる。Bluetoothの初期化でGPTimerの設定がいじられるのでは?
バーグラフ表示がぎこちない
前バージョンに比べ、スムーズに動かない。グラフィックディスプレイへのデータ転送速度が低い。現在のドライバは、ソフトウェアでSPI信号を生成しているので、遅いのは仕方がない。
- ハードウェアSPIを使用
- ドライバプログラムをIRAMに配置
IRAMに配置するのは、すぐ対応できるので適用してみたところ、かなり改善した。ハードウエアSPI化は、ドライバを大幅に改良しなければならないので、今回はパスすることにした。
実は、その後CPUのクロック数の設定が最高速度240MHzではなく、デフォルトの160MHzになっていたた事が判明しました。変更すると、よりキビキビ感が出たので追加対応は無しです。
内蔵ADCの低ノイズ化
これは、設計時に十分解っていた事案ですが、やはり実用にならなかったのでした。データシートを見れば、最初から解っていたのですが、オーディオ用途ではやっぱり使えない代物です。
2024年3月、救済策を模索していましたが、ADC前段の回路をいくら見直しても、結局ADCが出力するデータがホワイトノイズまみれになってくるので、どうにもなりません。つまり、ソフトウェアでデジタル信号処理するしか方策はないようです。ホワイトノイズを抜く都合の良い信号処理方法もないようなので、音質を大幅に犠牲にしてもいいので、何か対策がないか考えました。
ホワイトノイズは全域に存在するので、帯域を制限すれば、絶対量が削減されるはずだという作戦です。バンドパスフィルタもしくはローパスフィルタをソフトウェアで実装し、絶対必要な帯域のみを通すようにします。周波数としては感覚的に500〜5K[Hz]ぐらいと思われます。ソフトウェアフィルターの実装は、「Audio EQ Cookbook」https://www.w3.org/TR/audio-eq-cookbook/に従い、繰り返し剰余計算をするだけでした。定数を変えるだけで色々な種類のフィルターに対応可能です。今回はLPFローパスフィルターで試しました。結果としては、ノイズは確かに減りましたが、まだ実用には程遠いものでした。元々、4倍のサンプリングして平均値をとるロジックを入れてましたが、それと組み合わせると大分気にならなくなってきました。やった甲斐があります。
コメントを残す