デジタルアンプ+デジタルボリューム

PGA2311 + PIC12F675


はじめに

カマデンの デジタルアンプキット (TA2020KIT-SP) と PGA2311PA を使った電子ボリュームを組み合わせたオーディオアンプを作ってみました。 構成は上の写真のようになっています。 左から、スイッチング電源 (+12V), リニア電源 (+5V, -5V), 電子ボリューム基板 (PGA2311PA + PIC12F675), TA2020KIT-SP です。 ケースとスイッチング電源は昔の外付け HDD の流用、リニア電源は別の外付け HDD の電源を改造して流用したものです。TA2020KIT-SP は、特に改造せず、そのまま使っています。

外に音量調整用ボリュームがむき出しのままですが、いずれリモコン対応にしようかと思って、そのままにしています。裏面は LINE IN (RCA ×2)とスピーカ出力、ACインレットになっています。背面のファンは止めていますが、通常使用では発熱が少ないので問題ないようです。

作成の経緯

デジタルアンプが最近はやっているので作ってみたくなったというのが一番の作成動機です。TA2020KIT-SP を作ってみたところ、パワーアンプとしては素直な音でいい印象を受けたのですが、プリアンプがないと音量調整ができません。PC につないだときも、音量をほぼ最小にしないといけないので、音量調整の面が不便でした。

2連のアナログボリュームを使うなら、安いものだと左右の音量の差が気になったりすること、意外と高価な部品であることから、電子ボリュームにしたくなり、PGA2311 の評判がよさそうということで、作ってみることにしました。キットも販売されているのですが、高価ですし、たいしたプログラムではないので自作することにしました。問題は PGA2311 の入手性でした。Digikey, RSコンポーネンツ, オーディオワークスで取り扱っていることがわかったので最終的にオーディオワークスで購入しました。

現在は PIC12F675 のボリュームの位置(角度)を A/D コンバータで読み、PGA2311 を設定するようにしています。そのうちリモコン対応にしようかと思っていますが、使い方しだいなので、そのままかも...

音質は素直だと思います。よくも悪くも音源(機器と録音の両方)とスピーカの特性がまっすぐ出る印象です。外部の配線が悪いとボリュームを上げると商用電源のハムが乗ります(入力インピーダンスが高い)が、通常の音量では問題はありません。入力が無音であっても PGA2311 由来と思われるノイズが出ています(静かな部屋で入力なしのときに高能率のスピーカに耳を近づけて分かるレベルなので、実用上の問題はない)。PGA2311 と TA2020 の間にアッテネータを入れるようなことをしないと消えなそうです。ポップノイズはあります。気にしなければOKのレベルですが。

回路構成

アナログ部は PGA2311 のデータシートのままです。 PGA2311のデジタル部は、 ピン1のZCENとピン2の \CS をプルアップ、\MUTEピンをプルダウンしています。 PIC12F675 の各ピンは以下のようにつないでいます。 PIC の選択基準は、ピン数が少ない、A/D コンバータがある、手持ちにある (これが一番の理由かも)です。 回路図は気が向いたら書きます...

	;; ピン1は 5V
	;; ピン2はデジタル出力 GP5 で、PGA2311, TA2020 の \MUTE (8) へ
	;; ピン3はデジタル出力 GP4 で、PGA2311 の \CS (2) へ
	;; ピン4はデジタル入力 GP3 で、外部プルアップ
	;; ピン5はデジタル出力 GP2 で、PGA2311 の SCLK (6) へ
	;; ピン6はデジタル出力 GP1 で、PGA2311 の SDI (3) へ
	;; ピン7は A/D入力にする (ボリュームで分圧 0-5[V])
	;; ピン8は GND 

プログラム構成

手前味噌ですが「 はじめてのPICアセンブラ入門」 の第7章の応用編として解説します。

PGA2311 を知る

PGA2311 のデータシートによると、

ことが分かります。ボリュームも、あまり早く変化しないので 0.1[s]ごとにボリュームの位置を読み、ゲインを設定することにします。そこでプログラムとしては、
  1. 初期化(\MUTE:L, \CS:H, SDI:L, SCLK:L)
  2. 1秒待ち
  3. A/D変換(10ビットのうち上位8ビットのみを使う)
  4. 前回 PGA2311 と比較して差が小さい場合は 9 へ (ゲインを変更しない)
  5. \CS を L にする
  6. PGA2311 へ左側のゲイン(A/D変換値そのまま)を送る
  7. PGA2311 へ右側のゲイン(A/D変換値そのまま)を送る
  8. \CS を H に戻す
  9. 0.1秒待ち
  10. 3 へ
としています。ゲインはサブルーチン send_level で設定しています。
  1. 設定ゲイン (w レジスタ)を SL_DATA へ入れ、
  2. SDI を L にする
  3. SL_DATA を左シフト(rlf)して、キャリアが H なら、SDI を H にする
  4. SCLK を H にする
  5. SCLK を L にする
  6. 2-5 を合計8回繰り返す
少しプログラムが煩雑に見えますが、現在のピンの状態に影響を受けないように GPIO_ レジスタに一度値をいれ、それを GPIO へ出力するようにしています(プログラム全体)。

ダウンロード

TA2020KIT-SP の改造

TA2020 の 5V の電源部を安定化すると音質が良くなるということで、電解コンデンサを 追加する改造があったので、真似をして見ました。微妙ですがよいような気が します(2007/12/23 追記)。


ピン8(アナログ 5V)とグラウンドの間に、配線長が短くなるようオーディオ用 電解コンデンサ(16V, 100uF)を追加

関連する本

はい。宣伝です。


戻る
Copyright (c) 2007, Noriaki Mitsunaga, non (@マーク) ever.sanda.gr.jp