オーディオクラフト工房(271)

更新日:2023年2月25日


オーディオVUメーターを作ろう
マジョカアイリスの小さい液晶の応用製作です。今回はオーディオVUメーターにしました。アナログメーターを液晶表示(128x128)で再現しました。内部はデジタルなんで、疑似アナログになりますが、完成した姿はこんな感じです。
(オーディオVUメーターに仕上げました)
マジョカアイリスの小さい液晶を2枚使っています。CS端子で制御して液晶を選択出来るので、スピードさえ気にしなければ原理的には何枚でも同時表示が可能です。今回は2枚なので、かなりの高速表示です。この小さい液晶ですが、前回の記事でCS端子の割り付けに間違いがありましたので、今回の回路図で修正しています。
この製作のベースはこちらの記事です。オーディオレベルメーターに仕上げる
マイコンにはPIC32MXを使います。液晶のドット数が少ないのでマイコンの選択には迷いますが、高速性とROMサイズから選んでいます。というか、この半導体不足の世の中で購入出来るマイコンは限られています。回路図はこんな感じです。
(オーディオVUメーターのマイコン部回路図)
過去の製作からちょっと訳ありで上図のような回路図にしています。液晶2枚の切り換えにCS端子を分けている以外は各端子はパラレルに接続されています。EEPROMは電源を切っても覚えておくデータを入れています。
(オーディオVUメーターの電源部とアナログ部回路図)
OPアンプ用に12V、液晶のバックライト用に5V、マイコン用に3.3Vの電源回路があります。VUメーターの基本原理は、オーディオレベルを一時的にピークホールドしてVUメータを振らせます。今回はこのVUメータをデジタル的に表現します。ピークホールドされた電圧値をマイコンが読み取り、変換して針のデータとして液晶に表示します。ここで重要になるのが、針のアナログ的な動きです。C21(C22)で一旦蓄えられた電圧はR10(R11)によって徐々に放電されます。針のゆっくりとした動きをしようとして放電抵抗の値を大きくすると、針の戻りが悪くなるので、見ていてちっとも面白くありません。今回は放電抵抗を1kΩとしてそれなりの早い動きになるようにしました。これが本当にVUメーターかと言われると違うかもしれませんが、これくらいの表示が私にはマッチしています。
(マイコン周辺をプリント基板化しました)
先ほど訳ありと記しましたが、本当はマジョカランタンの320x240ドットの液晶を簡単に駆動出来るようにと基板を起こしていました。中国の休み明けに発注したので、ガーバーアップから約10日ほど掛かりましたが、大陸から無事着弾しました。今回はこの基板を使って液晶周辺の回路を構成しました。液晶との接続は直接フレキ用のコネクタを実装すれば良いと思われるかもしれませんが、現在このコネクタも入手困難でして、今回もaitendoさんで入手出来るコネクタ付きの変換基板を取り付けられる構成として基板化しました。こうしたことで、液晶の端子割り付けが多少変わったとしても駆動出来るように配線出来るのでとても便利と思います。
(PICマイコンのポート割り付け)
マイコン基板からは液晶駆動以外に16ピンのコネクタで電源とポートを取り出しています。そのポートを利用して周辺回路に接続しています。アナログ回路は一部電源回路を追加しながら前回の製作をそのまま使用しています。
(VUメーターの画像)
VUメーターの背景画像はネットで拾ったアナログVUメーターの写真をトレースしてアレンジさせて頂きました。ありがとうございます。128x128ドットの画像なので、なんとか精神が保てるレベルで作業が出来ました。この画像に針の画像を重ね合わせてVUメーターとなります。
(基本の15色)
画像の色は私の製作で標準に使用している基本の15色を使用します。1バイトで2ドットを表示するために15色としています。今回、メーターの背景の色を変えたいので、基本色の黄色を別の色に割り当てを変えて表示対応しています。メーターなので、あまり変な色を使うと全く見栄えが悪くなるので上図のようになりました。結局7色しか使っておりません。
(dBと電圧対応表)
上図はオーディオのdB値を電圧に変換した表です。これをPICのADコンバータで有効的に使用出来るように少し変換してから、オーディオレベルの判定を行っています。デジタル的に17レベルに識別して、そのレベルに合った針のデータを背景に重ね合わせています。後ほどプログラムソースを示しますが、容量のほとんどが画像データになっています。
(EEPROMの割り付け)
VUメーターの背景色は5色用意しています。そのデータをEEPROM記憶して電源を入れ直しても前の状態を保持しています。背景色はポートRB12に接続しているプッシュボタンで切り換えます。すみません、このボタンは回路図に書いてませんでした。
ここからは液晶モジュールを駆動するときに私が迷った部分を説明します。既に皆さんご存じだとは思いますが、マジョカアイリスの長い液晶と小さい液晶、マジョカランタンの液晶含めて、同じコマンドで制御が出来ます。制御の仕様書はILI9342Cの物が参考になります。
(コマンド36h)
このコマンドは超簡単に言うと液晶モジュールにどの方向からデータを流し込むかという設定が出来ます。液晶モジュールは向き、というかコネクタの取り出し方向でこのコマンドのデータ内容を変える必要があります。前回液晶モジュールをテストで動かした時はコネクタの向きは右側にありましたが、今回の製作では左側にコネクタを取り出しました。データは68hを設定しています。
(コマンド2Ah)
このコマンドは液晶モジュールのX座標の開始アドレスと終了アドレスを決める設定が出来ます。液晶の方向によって微妙に異なるようなので、都度調整が必要になります。データは00h,01h,00h,80hを設定しています。
(コマンド2Bh)
同様にY座標の開始アドレスと終了アドレスを決める設定が出来ます。データは00h,02h,00h,81hを設定しています。詳細はプログラムソースを参考にして下さい。
PIC32MX_LCD_128_VU.zip
(こんな感じに仕上がりました)
前面パネルには2mm厚の透明PET板を使用しています。液晶の表示部分だけを開けた黒色の画用紙を挟んでアルミケースに取り付けています。
(背面はこんな感じです)
液晶モジュールの取り付けには少し工夫しています。モジュール自身をケースに取り付けることは出来ませんので、L字金具を利用してアルミケースの底面に取り付けています。アルミケースの前面はほとんどアルミ部分はなくて解放のように加工しています。
(液晶はこんな感じで見えます)
ちょっと暗めの画像になってしまいましたが、針の画像を重ね合わせると上図のように見えます。針の色替えも考えていたのですが、逆に見えにくくなるので、濃い目の紫色のみにしました。針のデータは膨大な量になっています。流石にこのデータの入力には心が折れそうになりました。でも動かしてみると作業の苦労も吹っ飛びます。実際の動きは私のYouTubeを参照下さい。https://youtu.be/DTx_0UOLBG8
(画面更新の時間測定)
液晶のサイズが小さいので画面更新のスピードは早いです。左右の液晶を更新するタイミングは83Hzになりました。充分満足の数値ですね。
(自作オーディオ機器の配置)
PICマイコンで読むADポートはアナログ回路の最終段の半固定抵抗で接続されています。オーディオの標準スイープ音を再生して好きなレベルに調整して下さい。誰もこのVUメーターで正しい値を読み取ろうとは思っていません。私は+3dBに調整しています。あくまでも飾りとして楽しむVUメーターです。そこのところよろしくお願いいたします。音楽と同期して動くVUメータを眺めるのもまた楽しいです。
今後も自作オーディオで音楽の世界を楽しみましょう。まだまだオーディオクラフト工房は続きます。

オーディオクラフト工房へ戻る