簡易的な小型・小出力・オーディオ・ステレオ・スピーカー・アンプです。ライン/ヘッドフォン入力はもとより、Bluetooth入力も持っていますので、スマートフォン等からも手軽に音楽を楽しめます。入力は3系統あり、それぞれにレベルとバランスを調整可能なミキシング機能と、レベルメータが付いています。パネルにはメインボリュームしか付いておらず、電源も自動オン/オフする、存在を意識しないですむ小物に仕上げました。
いわゆる「デジタルアンプ」ですが、DACを使わない、直接スピーカをPWM駆動するという、真のフルデジタルアンプです。ほぼマイクロコントローラの機能だけで実現できており、少ない汎用部品だけで製作も容易です。材料費は約7000円ぐらい、LTspice や Eagle, STM32CubeMX, ”System Workbench for STM32” など、無料の開発ツールを利用して設計、製作しました。
目次
説明書
機能
- ライン/ヘッドフォン入力×2+Bluetooth×1、スピーカ出力は2W+2W
- 操作はメインボリュームのみ、細かい調整は隠しボタンで操作
- 電源操作不要、アイドル時の消費電力は0.5W以下まで低減
- 全入力系統にレベルメータを付け、入力信号の状況を一目で確認できる
- 部品数が少なく単純、調整不要、特殊な部品もなく製作しやすい
- V0.1と比べ、半分の大きさ、費用は3割安く、さらに作りやすくなっています
各部説明
使い方
ケーブル接続
スピーカケーブルは、背面から見て、右側の赤黒を左用のスピーカに、左側の黒赤を右用のスピーカにつなげて下さい。BTL型なので黒同士は絶対ショートさせないでください。必要に応じて、入力側のケーブルを接続して下さい。
最後に、AC-DCアダプタをコンセントにつなげない状態で、プラグをDCジャックに接続して下さい。
電源投入
AC-DCアダプタをコンセントにつなげて下さい。2〜3秒で天板に赤ランプつき、画面が表示されます。ボリューム位置は電源投入時には10%となりますので、入力に信号があれば音が出るはずです。
音がなくなってしばらくすると、自動的にスタンバイになり、画面表示が消えます。音声信号が入ると自動的にオン状態になりますので、特に操作はありません。つまみを回したり、ボタンを押したりしてもオンとなります。
スピーカ出力
入力信号があれば、スピーカは鳴ります。ボリューム操作は右のつまみを回してで行います。音量は”Vol”のゲージで示されます。また、下部にパーセントで数値表示されます。ゆっくり回すと細かく、速く回すと多く音量が変わります。
入力信号はレベルメータ(棒グラフのような表示)にリアルタイムで表示されます。緑のレベル値の上の黄色い線はピーク値で、時間をかけてゆっくり降りてきますので、直近の最大レベルを確認する事ができます。横の黄色いゲージはレベル設定を示し、中間位置で100%です。同様に、下のゲージはバランスを示します。系統の文字が暗くなっている時は、無音が続いたので一時的に入力がカットされている事を表します。信号が入ると元に戻ります。
レベル/バランス調整
天板を開けて、青ボタンを押すとレベル/バランスのゲージの黄色い部分が1箇所だけ赤色に変化します。押すたびにその、場所が変わっていきます。その状態でつまみを回すと、そこの設定値を変更する事ができます。レベルは最大で200%(2倍)まで設定できます。
電源切断
特に操作はありません。3分間無音状態が続くと自動的にスタンバイ状態になります。スタンバイ時には表示が消えます。 手動でスタンバイにさせる事はできません。強制的に電源を切りたい場合は、DCプラグかAC-DCアダプタのコンセントを抜いて下さい。
仕様
設計図/設計書
この小物を再現するのに必要な、設計の結果情報です。
全体概要
ほとんどマイクロコントローラで実現します。入力される音声信号は、内臓のADCでデジタル化し、ミキシングやボリューム調整などの信号処理は数値演算、出力はPWMでスピーカを直接駆動するというのが大まかな流れです。
アナログ(ライン/ヘッドフォン)入力は、音声外の信号を排除して、プリアンプで増幅/減衰させ一定の信号レベルにします。デジタル(Bluetooth/A2DP)入力は、USBドングルを利用して受信し、BluetoothライブラリスタックでPCM信号に変換します。信号処理は、ミキシングとボリューム/バランス調整を行いますが、全てデジタル(PCM)で処理できるように、ADCでデジタル化します。出力はPCMをPWM変調されたものです。これを、電力スイッチングしてスピーカを駆動する事で、増幅された結果となります。
Bluetooth接続と、操作パネルにかかるコストを削減するために、マイクロコントローラとソフトウェアの力で実現するのが最良と考えました。ソフトウェアの変更は簡単なので、音声信号処理をいじったらどうなるか直ぐに耳で確認できるので、楽しいし学習/教育目的としても利用できます。通常は専用ICを採用するのでしょうが、それに惑わされず自作派には汎用部品で原理を理解するのも良いかと。
ハードウェア
回路図
2つの回路の違いはスピーカの駆動部分だけですです。a版はDCモータードライバICを使っていますので、配線量が少なく工作しやすいと思います。各種保護機能もついていますので壊れる可能性も低いでしょう。b版は素のFETをフルブリッジ構成にしています。3値制御を確認するための回路です。ソフトウエアも異なりますが、簡単に切り替えできます。
アナログ入力で、ホワイトノイズが大きい場合は、プリアンプのコンデンサ100pFを200pFに換えると多少改善できると思います。これは、音声帯域の上限を引き下げることを意味しますので、高域が鈍化(シャカシャカ感が減る)します。
部品表
ダウンロードできるファイルには、これらの文書ファイルが入っています。表示用にはPDF、回路図はEagle(PCB設計アプリ)、表はNumbers(Apple製表計算アプリ)のファイルです。
基板
STマイクロエレクトロニクス社の STM32-NUCLEO64 というCPU基板を利用しますが、これにはユーザ回路を組めるようなエリアもありませんので、別のユニバーサル基板を重ねる形にします。基板間の接続はヘッダコネクタを使います。
STM32-NUCLEO64ボードは改造が必要です。以下の改修作業を、NUCLEO64のユーザガイドと照らし合わせて注意深く行って下さい。
- ジャンパーJP5はE5V
- HSEを有効化(以下の改修)
- –X3に8MHzクリスタルを取り付け
- –C33,C34に20pを取り付け(試作ではむりやりリード品を使った)
- –ソルダブリッジSB54,SB55を取り除く
- –R35,R37をショート(半田を盛る)
- –ソルダブリッジSB16,SB50を取り除く
大した回路ではありませんし一品ものなので、専用基板を起こしたりせず、ユニバーサル基板(蛇の目基板)を利用します。72x95mmのものが適当です。この回路としては、大きすぎる位ですがCPU基板を重ねるには、この位のサイズは必要です
「試作と改善」に実際に作業した時の情報がありますので、そちら参考にして下さい。
ソフトウエア
開発ツール、ライブラリ
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スタックライブラリ(自家製)
•グラフィックディスプレイライブラリ(自家製)
機能階層/関連図
内部での音声データは、サンプリングレート44.1kHz*1024サンプルを1処理単位としています。2面以上のメモリバッファで各機能(ADCx2,Bluetooth,PWM)をつなぎ、パイプライン的に信号処理(計算)を行っています。
また、並行して画面表示と操作入力の処理も行っています。
ソースコード
<ダウンロード>
ビルドに必要なすべてのソースコード、ライブラリが含まれます。
バージョン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版回路のみ)
<コードサイズ>
ROM: 105kB
RAM: 64kB
あくまでも目安です。
インストール方法
SW4STM32のプロジェクト用ディレクトリに、zipファイルを展開し、BTSP02プロジェクトを開きます。ビルドやプログラム転送、実行方法については SW4STM32 の使い方通りです。STM32CubeMXでソースコードを再生成した場合は、「usb_host.c」を編集する必要があります。修正内容は、ソース内のユーザコード部分のコメントを参照して下さい。また、コンパイルオプションの最適化が初期化されてしまうので、「-O3」に再設定してください。もし、修正しないとBluetoothが動作しないか、不安定になります。
外装・ケース
既製のケースに収めても良いのですが、最良の「小物」にするため専用のケースを設計しました。工作しやすい、アクリル板(アクリルシート)を使います。
寸法図
材料一覧
加工方法
開発情報
ここまで、設計の結果だけをまとめたものですが、開発時のなやましい状況については別ページに記録しています。興味がある方は以下を参照してください。
- オーディオ/ミニアンプ0.2/企画この小物に求められる物を考え直し、本当に必要/有用な小物の形を整理し、方向性を決める大まかな設計を行います。… 続きを読む: オーディオ/ミニアンプ0.2/企画
- オーディオ/ミニアンプ0.2/設計実在の部品を使って、要求仕様を実体化する手段を考えてます。まず、基本的な構成を決定し、回路や部品の選定、実際… 続きを読む: オーディオ/ミニアンプ0.2/設計
- オーディオ/ミニアンプ0.2/試作+改善実際に製作してみて、設計通りの動きをするか確認します。 目次1 試作1.1 基板1.1.1 ユニバーサル基板1… 続きを読む: オーディオ/ミニアンプ0.2/試作+改善
おまけ
裏仕様で、ボリュームやバランスをBLE対応デバイスでコントロールできる機能を持っています。GATT仕様にはオーディオのボリュームコントロールのためのプロファイルはありませんので、独自仕様で実装しております。LightBlue等のアプリでブラウズすれば分かると思います。
以下はiPhone用のアプリです。xcodeで開発できる方のみ使えます。
Objective-C版 (xcode15.2以降)
Swift版 (xcode15.2以降)
あとがき
前作では、当初思っていた以上の音質(AM放送レベルと認識して下さい)が出て感動しました。しばらく使い込むと不満が出た部分もあり、その改善と本来欲しかった物が形になりました。より実用に近づき大変満足です。
2019.3.1: 3値制御の確認のためにスピーカドライバを変更しましたが、おかげで多くの組み合わせを試すことが出来、確認に多くの時間を要しました。マイクロコントローラアンプと言うジャンルがある訳ではありませんが、アイデアがあれば直ぐに試してみる事が出来るので、自作者にとっては面白い素材です。
2022.7.27:自分用に作った「小物」ですが、このたび養子に出しました。発火の心配など、提供するべきではないかと考えましたが、第三者の意見が欲しくて使ってもらう事に決断しました。
2024.3.7:「おまけ」を追加しました。
Copyright©2019-2024 Toyohiko TOGASHI
コメントを残す