自作電子小物/オーディオ/ミニアンプ0.1
自作電子小物/オーディオ/ミニアンプ0.1
Audio amplifier mini V0.1
2018年1月21日日曜日
アナログ回路を極力排した、単純で簡易的な小出力・オーディオ・ステレオ・スピーカー・アンプです。Bluetooth入力機能を持っていますので、スマートフォン等からも手軽に音楽を楽しめます。3系統の入力を持ち、それぞれにレベルとバランスを調整可能なミキシング機能と、ピークホールド付きのレベルメータが付いています。パネルにはメインボリュームしか付いておらず、電源も自動オン/オフしますので、存在を意識しないですむ小物に仕上げました。
製作費は約1万円ぐらい、マイクロコントローラと汎用部品だけを使用した、デジタル化の高い「フルデジタルアンプ」です。
<機能/特徴>
■ライン/ヘッドフォン入力×2+Bluetooth×1、スピーカ出力は3Wクラス
■操作はメインボリュームのみ、細かい調整はタッチパネルで操作
■アイドル時の消費電力は1W未満まで低減
■全入出力チャネルにレベルメータを付け、音声信号の状況を一目で確認できる
■アナログ回路を可能な限りカットし、部品数が少なく単純、調整不要、特殊な部品はありません
<仕様>
名称:オーディオミニアンプ
分類:ステレオ・ミキシング・スピーカ・アンプ
入力数:3系統(AUX×2、Bluetooth×1)
出力数:1系統(スピーカ×1)
AUX仕様:
物理接続:ステレオミニジャック3.5mm(メス)
インピーダンス:AUX1が1kΩ程度、AUX2が10kΩ程度
信号レベル:最大3Vp-p 〜 最小0.3Vp-p(ライン信号レベル〜ヘッドフォン出力)
プリアンプ機能:ゲイン=最大10倍、内蔵ボリュームで調整
パネル音量調整機能:0.0〜2.0倍、0.1倍単位
デジタル化パラメタ:サンプリングレート=44.1kHz、分解能=4096
Bluetooth仕様:
バージョン2.1、A2DPプロファイル/シンク、SBCのみ
ペアリング:フリー
同時コネクション数:1
スピーカ仕様:
インピーダンス:4〜8Ω
出力電力:最大1.5W×2
駆動方法:BTL型、PWM、レート=44.1kHz、分解能=4082、
フルブリッジ、2値制御、駆動電圧=静的に可変(0.6〜4.5V)
内部信号データ仕様:PCM 44.1kHz
状態表示:3.2インチTFT カラー LCD、320x240ドット、タッチパネル付き
操作方法:ボリュームつまみ、LCDのタッチパネル
外形:幅145mm、奥行100mm、高さ42mm(突起を除く、1DINサイズ)
重量:約380g
電源:AC100V、AC-DCアダプタ使用(6V〜9V、2A以上)
最大約14W(机上計算)、50%ボリューム時1.4W〜アイドル時0.6W(実測)
製作費:約9000円
<使い方>
(1)設置
左上の3.5mmミニプラグジャックはアナログ入力のAUX1,AUX2です。その下が電源DCジャックです。真ん中の赤黒のターミナルがスピーカ端子です。基本的に横置きです。(なぜなら下面にはパネルを付けていないので、中が丸見えなためです)
スピーカ出力は、左右の「黒」は共通になっていません。接続すると破損/発火する恐れがありますので、絶対つながないようにして下さい。 電磁干渉(EMI)を気にする場合は、シールド付きのケーブルをお勧めします。
ライン出力(RCAピンジャック)の場合、ミニプラグへの変換ケーブルを用意して下さい。
ヘッドフォン出力の場合、多くはミニプラグなので、両側ミニプラグのケーブルで接続して下さい。
電源は、できるだけ安定化されたノイズの少ないAC-DCアダプタを使って下さい。電源スイッチはありません。プラグを差し込むと、2秒ぐらいで上面の画面にレベルメータが表示され、使用出来る状態になります。以下は画面例です。
(2)通常の使用
前面のツマミはメインボリュームです。レベルメータなどの表示は、上面にあるLCDパネルに出されます。このLCDにタッチする事で、各種指示を行う事が出来ます。
各系統のレベルメータは3つに分かれ、左から調整前の現レベル/調整後の現レベル/調整後のピーク値です。毎秒50回で表示更新されますので、あまり遅延は感じられないと思います。ピークメータは、ピーク検出後は毎秒1%のレートで下がりながら、次のピークを待つというスタイルです。
「+」「ー」ボタン:レベルの調整、一押しで10%。オレンジの線が調整位置、下の数字が%表示です。
「<」「>」:左右バランスの調整。
画面上部の「Bluetooth」「AUX1」「AUX2」 ボタンは、押すたびに系統のオン/オフ。灰色がオフ状態です。
全てのオーディオ入力のレベルは、はデフォルトで100%になっていますので、レベルメータを見ながら調整して下さい。
Bluetoothで使用したい場合は、「BTSP01」というデバイスを見つけて、ペアリングして下さい。パスコード等の応答はないはずです。すぐ、音声が出力されると思います。アンプ本体の電源が切れると、ペアリングをやり直す必要があります。
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 設計書 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
この小物を再現するのに必要な、設計の結果情報です。
目 次
1. 技術的なポイント
1.1 ハードウエア
1.2 ソフトウエア
1.3 開発法
2. 回路図
3. 部品表
4. ソフトウエア
4.1 開発に必要な物
4.2 ソースコード
5. 製作
5.1 基板
5.2 ケース
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
1.技術的なポイント
1.1 ハードウエア
・ST Microelectronics社(以後STMと表記)のSTM32F4マイクロコントローラ(Nucleoボード利用)
・H型フルブリッジでのスピーカ駆動と、可変電源でボリューム調整
・音声入力にオペアンプの反転増幅回路を利用(仮想グラウンドにオフセット+ハイパスフィルタ)
1.2 ソフトウエア
・プログラミング言語はC、開発環境はOpenSTM32コミュニティ(AC6社提供)の「System Workbench for STM32」を利用
・STM提供のソースコードジェネレータSTM32CubeMXの利用
・タイマ割込+ADC+DMAで音声信号をデジタル化
・タイマ割込+PWM+DMAで音声データを出力
・自家製Bluetoothソフトウエアスタックを利用
・LCDモジュールを制御する自家製GUIライブラリを利用
1.3 開発法
・回路検証には、回路シミュレータのLTspiceを利用、ブレッドボードでの試作
・回路製図は、無料で利用出来るCadSoft Computer社のEAGLEを使用
・ソフトウエア開発は、eclipse+gccベースの無料提供している開発環境を利用
各スポンサー様、無料使用できる事に感謝します
2.回路図
AUXのアナログ入力部は、オペアンプによる反転増幅回路でマイクロコントローラへの入力に必要な3Vレベルの信号にするのと、マイクロコントローラを保護する目的で入れてあります。半固定抵抗は最大位置で10倍のゲイン、ヘッドフォン出力を受けるには真ん中の位置、5倍ゲインがちょうど良いです。ラインレベルを受ける場合は、1倍ゲインなの1/10の位置に半固定抵抗を設定して下さい。微調整は操作パネルでできますので、おおざっぱでかまいません。
Nucleoボードは、クリスタルを追加したり、ソルダブリッジを仕込んだり、ちょっとした改造が必要です。詳細は、本回路図のコメントとNucleoのユーザガイドを照らし合わせて参照して下さい。
3.部品表
今回使用した部品のリストです。価格は2017年1月当時のものです。
文書ファイル:V0_1b_parts.numbers
線材を除きます。
オペアンプは3V電源でフルスイング出力の物ならOKです。低雑音品なら、なお良いでしょう。
表示不要であれば、LCDモジュールそのものを付けなくとも動作します。配線数が多いし、3インチ級LCDモジュールは入手しやすいものでもありませんので。
スピーカ出力部に使用するMOS-FETは、部品リストでは入手しづらい品番になっていますが、その時々で入手しやすい物を探して下さい。IDが1A前後、VGSが3V駆動、Cissが100pF以下、Qcが3nC以下を目安に、N型とP型の特性が似ているものです。N/P型が一つのパケージになっている部品は、特性もペアとなっているので選定や配線が楽でしょう。
USB-Bluetoothアダプタは、古くても良く安いやつでOKです。今は、PCに標準で内蔵されているものなので、古いやつを安く入手可能だと思います。
4.ソフトウエア
4.1開発に必要な物
PC(System Workbench for STM32が動作する環境、Windows, Linux, Mac等が可)
ソフトウエア
System Workbench for STM32 (*1、GCCコンパイラを含む)
STM32CubeMX (*2)
*1) OpenSTM32のサイトからダウンロードして下さい。(要ユーザ登録)
*2) STM社のサイトからダウンロードして下さい。(要ユーザ登録)
4.2 ソースコード
(1)ダウンロード
System Workbench for STM32プロジェクトファイル:
ライセンス: フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発時環境:
Mac OSX 10.13.xx
System Workbench for STM32 / Ac6
STM32CubeMX For Eclipse 4.20 / STM
(2)ソースファイル一覧
文書ファイル:BTSP01 source code.numbers
注意事項:STM32CubeMXで、ソースコードを再生成した場合、次の対応を行う必要があります。
①「usb_host.c」のMX_USB_HOST_Init()内に、次の1行を追加
USBH_RegisterClass(&hUsbHostHS, USBH_WCC_BLUETOOTH_CLASS);
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
の所のコメントに例を書いていますので、それをコピペすれば簡単に済みます。このソースコードの修正を行わないと、Bluetoothアダプタが認識されなくなります。
②コンパイラの最適化オプションが-O3になっていません。プロジェクトのプロパティで、コンパイラオプションの設定を変更して下さい。修正しないと、Bluetoothでの再生がとぎれとぎれになります。
(3)機能関連図
本アプリケーションのコードはmain.cにのみ記述されています。下記の関連図は、一番中心となる音声データの流れです。DMA2-Stream0の終了タイミング割込(1面のデータが満杯になったタイミング)で、処理が起動されます。
文書ファイル:function relation.pages
できる限り、ハードウエアに任せ、ソフトウエアの負担を減らします。STM32F4のペリフェラルモジュール群は、ソフトウエアの介入なしにアナログ入力とPWM出力をフリーランさせる事ができます。データはメモリバッファ渡しです。絵の青色の部分がハードウエアだけで実現できる所です。
44.1kHzのサンプリングで、1024個のデータを処理単位としますので、23.2ms毎に割込が発生します。メモリバッファは2面あり、DMAとソフト処理がかぶらないようにします。このタイミングで音声データの変換処理を行い、PWMデータを生成します。Bluetoothからのデータも、同じ周期でデータが届きますので、特別な配慮は行いません。運悪くタイミングがかぶったら音が飛ぶだけです。
1024個のデータを約20msで変換完了しなければなりませんので、十分速いプロセッサ処理性能やコンパイラ最適化が求められます。
(4)ハードウエア設定
各入出力ピン、クロック設定、ペリフェラルの設定などの情報です。STM32CubeMXを利用したため、機械出力のドキュメントが利用できました。
5.実装
5.1 基板
大した回路ではないので、蛇の目基板にて作成可能です。
基板の上面の様子。
開発途上の状態なので、最終的には追加/変更された部品がありますが、おおむねこんな状態です。
この上にコネクタを介してNucleoボードを載せる算段です。
Nucleoボードを差し込んた状態です。
基板の裏面の状態。
LCDモジュールとの接続ピンを立たせており、そこにLCD基板側のコネクタを載せる作戦。
LCDモジュールをのせた状態。
以上、三階層の基板の技となります。
5.2 ケース
簡単に利用できるような、汎用的なケースはありませんので、適当な物をしつらえる必要があります。タッチ機能付きのLCDディスプレイが、少しやっかいです。
ノイズの面から金属筐体にすべきだと思っておりましたが、作りやすさからアクリル板で専用ケースを作成しました。1DINサイズにまとめました。
アクリルケースの作り方は、別途参考情報があります。
< 開発情報 >
<関連>
「 自作電子小物/オーディオ/ミニアンプ0.2」改良版
「 自作電子小物/TIPS/Bluetooth-LEスタック/ペリフェラル向け/STM32版」
「 自作電子小物/TIPS/グラフィックLCD S95160/STM32」
<あとがき>
2018.1.21:
今まで使っていた、ミニアンプの後継機です。先代は、部品モジュールやキット/製品の組み合わせで実現していましたが、検討を進めるうちにマイクロコントローラ1つだけでオーディオアンプ機能を実現できる事に気がつきました。時間をかけた割には、出来た物は機能的には先代とあまり変わりありません。でも、中身はぜんぜん違うんです。
2018.3.16:
音質にはこだわらないと言った割には、省電力なPWM3値制御から、あっさりPWM2値制御に鞍替えしました。3値制御が劣っている訳ではなく、技術力が足りないだけです。が、あまりにも長い開発なので、そろそろ次に行きたいのです。
2018.12.19:
アナログ入力(AUX)に、ヘッドフォン出力を接続する場合で、ホワイトノイズが激増する機器(例えばPC)があったので、その対策に回路を修正しました。オペアンプにコンデンサを2個追加して、ローパスフィルター機能を持たせた対策です。アナログ入力系統に関しては、これまで軽視していましたが、常習するテレビ音声(ヘッドフォン接続)に不満を持ち始めて、このような対応になった事に対しては自分でも意外です。音は、自分が思う以上に、人の中に染み込むものなのですかね。今は、新バージョンを開発中です。
富樫 豊彦 tog001@nifty.com
Simple small-sized audio amplifier.
Input from the AUXx2 and Bluetooth.
Speaker output is 3W class.
Minimum analog circuit and almost all digital circuit. A special parts isn’t also used.