自作電子小物/オーディオ/ミニアンプ0.2
自作電子小物/オーディオ/ミニアンプ0.2
Audio amplifier mini V0.2
2019年2月11日月曜日
簡易的な小型・小出力・オーディオ・ステレオ・スピーカー・アンプです。ライン/ヘッドフォン入力はもとより、Bluetooth入力も持っていますので、スマートフォン等からも手軽に音楽を楽しめます。入力は3系統あり、それぞれにレベルとバランスを調整可能なミキシング機能と、ピークホールド付きのレベルメータが付いています。パネルにはメインボリュームしか付いておらず、電源も自動オン/オフする、存在を意識しないですむ小物に仕上げました。
いわゆる「デジタル アンプ」ですが、オーディオ専用のICを使用せず、汎用のマイクロコントローラを最大限生かし、最小限の部品で構成された極めて単純な「マイクロコントローラ アンプ」です。 製作費は約7000円ぐらい、LTspice や Eagle, STM32CubeMX, ”System Workbench for STM32” など、無料の開発ツールを利用して設計、製作しました。
ーーー 目次 ーーー
1. 説明書
1.1 機能
1.2 各部説明
1.3 使い方
1.4 仕様
2. 設計図
2.1 ハードウェア
(1) 回路図
(2) 部品表
(3) 基板
2.2 ソフトウェア
(1) 開発ツール、ライブラリ
(2) 機能階層/関連図
(3) ソースコード
(4) インストール方法
2.3 外装・ケース
(1) 寸法図
(2) 材料一覧
(3) 加工方法
ーーーーーーーーーーーー
1. 説明書
1.1 機能
•ライン/ヘッドフォン入力×2+Bluetooth×1、スピーカ出力は3W+3W
•操作はメインボリュームのみ、細かい調整は隠しボタンで操作
•電源操作不要、アイドル時の消費電力は0.5W以下まで低減
•全入力系統にレベルメータを付け、入力信号の状況を一目で確認できる
•部品数が少なく単純、調整不要、特殊な部品もなく製作しやすい
•V0.1と比べ、半分の大きさ、費用は3割安く、さらに?作りやすくなりました
1.2 各部説明
<正面>
右側のつまみは、各種調整用の回転型のノブ
左側はLCDで、動作している時は常時表示
スタンバイ時にはバックライト消灯
上面の赤色はLEDで、電源が接続されている時は
常に点灯
<上面>
天板を開けた状態
赤LEDが点灯
中央やや上よりの位置にプッシュボタンが2つ
左側の青ボタンは調整指示スイッチ
右側の黒ボタンはリセットスイッチ
< 背面>
左から
DC電源ジャック
保守用USBコネクタ
B系統入力(RCAピンジャック:ライン入力)
A系統入力(ステレオミニジャック)
下部
スピーカ出力ターミナル
1.3 使い方
(1)ケーブル接続
スピーカケーブルは、背面から見て、右側の赤黒を左用のスピーカに、左側の黒赤を右用のスピーカにつなげて下さい。BTL型なので黒同士は絶対ショートさせないでください。必要に応じて、入力側のケーブルを接続して下さい。
最後に、AC-DCアダプタをコンセントにつなげない状態で、プラグをDCジャックに接続して下さい。
(2)電源投入
AC-DCアダプタをコンセントにつなげて下さい。2〜3秒で天板に赤ランプつき、画面が表示されます。ボリューム位置は電源投入時には10%となりますので、入力に信号があれば音が出るはずです。
音がなくなってしばらくすると、自動的にスタンバイになり、画面表示が消えます。音声信号が入ると自動的にオン状態になりますので、特に操作はありません。つまみを回したり、ボタンを押したりしてもオンとなります。
(3)スピーカ出力
入力信号があれば、スピーカは鳴ります。ボリューム操作は右のつまみを回してで行います。音量は”Vol”のゲージで示されます。また、下部にパーセントで数値表示されます。ゆっくり回すと細かく、速く回すと多く音量が変わります。
入力信号はレベルメータ(棒グラフのような表示)にリアルタイムで表示されます。緑のレベル値の上の黄色い線はピーク値で、時間をかけてゆっくり降りてきますので、直近の最大レベルを確認する事ができます。横の黄色いゲージはレベル設定を示し、中間位置で100%です。同様に、下のゲージはバランスを示します。系統の文字が暗くなっている時は、無音が続いたので一時的に入力がカットされている事を表します。信号が入ると元に戻ります。
(4)レベル/バランス調整
天板を開けて、青ボタンを押すとレベル/バランスのゲージの黄色い部分が1箇所だけ赤色に変化します。押すたびにその、場所が変わっていきます。その状態でつまみを回すと、そこの設定値を変更する事ができます。レベルは最大で200%(2倍)まで設定できます。
(5)電源切断
特に操作はありません。3分間無音状態が続くと自動的にスタンバイ状態になります。スタンバイ時には表示が消えます。 手動でスタンバイにさせる事はできません。強制的に電源を切りたい場合は、DCプラグかAC-DCアダプタのコンセントを抜いて下さい。
1.4 仕様
裏仕様で、ボリュームやバランスをBLE対応デバイスでコントロールできる機能を持っています。GATT仕様にはオーディオのボリュームコントロールのためのプロファイルはありませんので、独自仕様で実装しております。LightBlue等のアプリでブラウズすれば分かると思います。
2. 設計図
この小物を再現するのに必要な、設計の結果情報です。
本小物の内部構成は、下図のようになっています。
アナログ(ライン/ヘッドフォン)入力は、音声外の信号を排除して、プリアンプで増幅/減衰させ一定の信号レベルにします。デジタル(Bluetooth/A2DP)入力は、USBドングルを利用して受信し、BluetoothライブラリスタックでPCM信号に変換します。信号処理は、ミキシングとボリューム/バランス調整を行いますが、全てデジタル(PCM)で処理できるように、ADCでデジタル化します。出力はPCMをPWM変調されたものです。これを、電力スイッチングしてスピーカを駆動する事で、増幅された結果となります。
Bluetooth接続と、操作パネルにかかるコストを削減するために、マイクロコントローラでソフトウェア処理する構成にしました。ソフトウェアの変更は簡単なので、音声信号処理をいじったらどうなるか直ぐに耳で確認できるので、楽しいし学習/教育目的としても利用できます。商用目的には専用ICですが、それに惑わされず自作派には汎用部品で原理を理解するのも良いかと。
2.1 ハードウェア
(1)回路図
a版(作りやすさ優先、2値制御)
最初の印象は、オーディオ専用ICやD級アンプICの基本回路例のような感じです。昨今のマイクロコントローラは、若干の入出力回路を付けるだけで、ここまで出来てしまうのです。
b版(省電力型、3値制御)
eagleファイル:<AudioAmplifierMini02b.zip>
(2)部品表
a版
b版
文書ファイル:numbers/PDFファイルなど圧縮ファイル:<AudioAmplifierMini02b.zip>
(3)基板
STマイクロエレクトロニクス社の STM32-NUCLEO64 というCPU基板を利用しますが、これにはユーザ回路を組めるようなエリアもありませんので、別の基板を重ねる形にします。基板間の接続はヘッダコネクタを使います。
STM32-NUCLEO64ボードは改造が必要です。回路図にコメントを記載していますので、NUCLEO64のユーザガイドと照らし合わせて改修して下さい。
大した回路ではありませんし一品ものなので、専用基板を起こしたりせず、ユニバーサル基板(蛇の目基板)を利用します。72x95mmのものが適当です。この回路としては、大きすぎる位ですがCPU基板を重ねるには、この位のサイズは必要です。
「5章 試作と検証」に実際に作業した時の情報がありますので、そちら参考にして下さい。
2.2 ソフトウェア
(1)開発ツール、ライブラリ
PCでソフトウェア開発作業を行います。Windows, Linux, Mac等が使用できます。
IDEは、「System Workbench for STM32」(SW4STM32)を使用します。これは、EclipseをSTM32での開発行えるようにGCCクロスコンパイラなど、面倒なセットアップ作業をしないで済むようにしたパッケージです。Windows/Linux/MacOSと多くのPCで動かすことができます。OpenSTM32のサイトからダウンロードして下さい。(無料、要ユーザ登録)
STM社が提供している「STM32CubeMX」も利用します。これは、PCでハードウェアの設定をGUIで行い、ソースコードを自動生成するツールです。とても手軽にプログラム開発にかかれます。STM社のサイトからダウンロードして下さい。(要ユーザ登録)
ライブラリは以下のものを利用しています。
•STMペリフェラルライブラリ+CMSIS
•Bluetoothスタックライブラリ(自家製)
•グラフィックディスプレイライブラリ(自家製)
(2)機能階層/関連図
アプリケーションプログラムの機能関連図です。
文書ファイル(pages):<BTSP02 application structure.pages>
(3)ソースコード
ソースコード一覧
<コードサイズ>
ROM: 105kB
RAM: 64kB
あくまでも目安です。
<ダウンロード>
ビルドに必要なすべてのソースコード、ライブラリが含まれます。
バージョン0.2:<BTSP02.zip> 2019.2.11 14.9MB
バージョン0.2a:<BTSP02 0.2a.zip> 2019.2.11 14.9MB(2値制御対応)
バージョン0.2b:<BTSP02 0.2b.zip> 2019.3.1 20.8MB(3値制御対応, b版回路のみ)
バージョン0.2c:<BTSP02c.zip> ----.--.-- --.-MB
(4)インストール方法
SW4STM32のプロジェクト用ディレクトリに、zipファイルを展開し、BTSP02プロジェクトを開きます。ビルドやプログラム転送、実行方法については SW4STM32 の使い方通りです。STM32CubeMXでソースコードを再生成した場合は、「usb_host.c」を編集する必要があります。修正内容は、ソース内のユーザコード部分のコメントを参照して下さい。また、コンパイルオプションの最適化が初期化されてしまうので、「-O3」に再設定してください。もし、修正しないとBluetoothが動作しないか、不安定になります。
2.3 外装・ケース
既製のケースに収めても良いのですが、最良の「小物」にするため専用のケースを設計しました。工作しやすい、アクリル板(アクリルシート)を使います。
(1)寸法図
(2)材料一覧
(3)加工方法
ーーー 設計情報 ーーー
ここからは、どのような理由で、このような仕様・設計にしたのか・なったのかを記録した情報です。ページが肥大化したので、目次のみになっていますが、クリックすると本文のページにジャンプします。
<技術的なポイントの要約>
■ハードウエア
・ST Microelectronics社(以後STMと表記)のSTM32F4マイクロコントローラ(Nucleoボード利用)
・PWMスピーカ駆動は、モーター用フルブリッジコントローラBD6211を使用
・アナログ入力にオペアンプの反転増幅回路を利用
「仮想グラウンドのオフセット+ハイパスフィルタ+ローパスフィルタ」
・Bluetooth-USBドングルを利用
■ソフトウエア
・プログラミング言語は「C」
・STM提供のソースコードジェネレータSTM32CubeMXを利用、基本ロジックを自動生成
・STM32F4のペリフェラルの組合せで、アナログ音声信号をデジタル化(タイマ割込+ADC+DMA)
・STM32F4のペリフェラルの組合せで、PCM音声データをスピーカ出力(タイマ割込+PWM+DMA)
・自家製Bluetoothソフトウエアスタックで、A2DPオーディオ受信
・自家製GUIライブラリで、Z180SN009LCDモジュールをサポート
■開発法
・回路検証には、無料で利用出来る回路シミュレータのLTspiceを利用
・回路製図は、無料で利用出来るCadSoft Computer社(AUTODESK社)のEAGLEを使用
・ソフトウエア開発は、AC6 tools社が無料提供している「System Workbench for STM32」を利用
各スポンサー様、無料使用できる事に感謝します
3.1.2 本当に必要か
3.1.3 簡単な解決方法はないの?
(2)モジュールの組み合わせ
3.1.4 根本的に違う発想はないの?
3.2.1 機能
3.2.2 外観
3.2.3 実現性はありそうか
<関連>
「 自作電子小物/オーディオ/ミニアンプ0.1」前作の記事
「 自作電子小物/TIPS/Bluetooth-LEスタック/ペリフェラル向け/STM32版」
「 自作電子小物/TIPS/グラフィックLCD S95160/STM32」
<あとがき>
前作では、当初思っていた以上の音質(AM放送レベルと認識して下さい)が出て感動しました。しばらく使い込むと不満が出た部分もあり、その改善と本来欲しかった物が形になりました。より、実用に近づき大変満足です。
2019.3.1: 3値制御の確認のためにスピーカドライバを変更しましたが、おかげで多くの組み合わせを試すことが出来、確認に多くの時間を要しました。マイクロコントローラアンプと言うジャンルがある訳ではありませんが、アイデアがあれば直ぐに試してみる事が出来るので、自作者にとっては面白い素材です。
富樫 豊彦 tog001@nifty.com
Simple small-sized audio amplifier.
Input from the AUXx2 and Bluetooth.
Speaker output is 3+3W class.
Minimum analog circuit and almost all digital circuit. A special parts isn’t also used.