50(前)の手習い。PICを勉強する(電子ボリュームは実現するか?)の巻き。

秋月電子の通販サイトをみていると、何種類かの電子ボリュームのICがラインアップに上がっています。

1.NJW1159D @150円(とにかく安い)
<特徴>
◆動作電源電圧 ±4.5 〜 ±7.5V   ◆3線シリアルコントロール
◆チップセレクト (最大4個同時使用可能) ◆ボリューム 0〜−95dB/1dBstep、MUTE



NJW1159D(ref 秋月電子 http://akizukidenshi.com/catalog/g/gI-04404/ )

2.LM1972M @300円(安い割にはハイスペック) 
■ 全高調波歪み+ノイズ0.003%(最大) ■ 周波数特性100kHz(− 3dB)(最小)
■ 減衰範囲(ミュートを除く) 78dB(代表値 ■ 減衰誤差± 0.25dB(最大)
■ SN 比(4Vrms を基準) 110dB(最小) ■ チャネル・セパレーション100dB(最小)
■ SOIC−20ピン(7.5mm幅) パッケージ

LM1972M(ref 秋月電子 http://akizukidenshi.com/catalog/g/gI-04212/ )


3. MUSES72320 @2500(結構高いですがハイスペックです。ハイエンド向けかも)
特徴
■動作電源電圧 ±8.5 〜 ±18V
■3線シリアルコントロール
■低出力雑音電圧 *組み合わせるオペアンプの特性に準拠 ■低歪率 *組み合わせるオペアンプの特性に準拠
■ボリューム 0dB to ?111.5dB /0.25dBstep,  ■MUTE +31.5 to 0dB / 0.5dBstep
■チャンネルセパレーション -120dB typ.
■ゼロクロス検出回路内蔵

MUSES72320(ref 秋月電子 http://akizukidenshi.com/catalog/g/gI-04378/ )


とりあえず、
面白そうなので買ってみました。こうやってまた部品箱の肥やしになるんだろうな〜

とりあえず買ってみました。部品箱の肥やしにならないようにしないと・・・・

さて買ったのはいいけれど、コレらを動かすにはマイコンが必要になります。
いままで電子ボリュームなるものは使ったことはありますが、H8マイコン(16bit)で
制御をしていました。しかし、H8マイコンは大きいし、高いし・・・。
以前に検討したR−2R型の電子ボリュームは基板自体も大きいし、それにLEDやLCD制御に加えて、
入力電圧をボリューム値(R−2Rの設定値)に変換する巨大なテーブルを持つ必要もあったので
H8マイコンがさほどオーバースペックという感じませんでした。
しかし、いくらなんでも150円の電子ボリュームにH8マイコンはないだろうな〜ということで、
ここいらでPICを勉強してみようと思います。
それにPICあたりのマイコンが自由につかえるようになると、今後の自作の幅も広がるというものです。
32BitDACのPCM1795もマイコン制御が前提になっていますから、これらも使えるようになりますしね。

PICの使用環境をそろえる!

PICライターは秋月電子で購入しました。実は、このライターを買うのは2回目です。
数年前に1度買って勉強しようと思っていましたが、結局3日坊主になってしまい、
基板もどこか行方不明に。たぶん、ジャンク基板類の整理時に一緒に捨てちゃったんでしょう。
このときもサンプルプログラムをつかってLEDの点灯だけを試した記憶があります。

秋月のPIC書き込み器

動いた!!
まずはライターに付いてきた附属のPIC16F84Aをつかって、サンプルプログラムを書き込んで
動作することを確認してみました。を!動きました。まあ、あたりまえといえば当たり前です。

まずはサンプルプログラムを動かしてみました。

PICの勉強には・・・

さて、PICを本格的に勉強するには解説書があると便利です。街の本屋で探すと色々とでてきますが、
なにかよさげなものがみあたりません。なんか、物足りない・・
何が物足りないかといえば、どれも「まずは作ってみよう」みたいな感じでのものばかり。
PIC自体を理解するための詳しい解説なるものをしたものがありません。

ということで、まずはPICのデータシートを読んでみることにしました。
やはりそのICのマニュアルを読むということが基本になるでしょう。
選んだPICはPIC16F819なるものです。これは雑誌によく出てくる、
PIC16F84AにADコンバータが搭載された高機能品です。
これがつかえるようになれば、多くのアプリケーションにもつかえるでしょう。
それに秋月では@180円と安いです。実はメモリー容量の小さいPIC16F818
の方が200円と高かったりすので、おそらく16F819あたりが売れ筋なんでしょう。

PIC16F819 まずはこれが使えるように頑張ろう!

マニュアルは全部で174ページです。もちろん、英語ですが難しい英語ではないので
パラパラと斜め読み・・・。ほう、いままでつかったZ80やMC68Kなどとは全く思想がことなります。
組み込み用マイコン専用につくってあることがよくわかります。IO制御が充実しているわりには、
RAMのアドレッシングが非常に貧弱です。そのため行列などの数値計算などにはまったく向かないです。
まあ、組み込み用なら外部変数をさほど配置する必要はないので、いらないのでしょう。

マニュアルを一通り眺めて、なんとなく使い方が分かってきたような気がします。
でも、分かった気になったことと、使えることとはまったく違いますよね。
さて、これからが長い道のりです。
 3日坊主になってまたまた投げ出すか、それとも使いこなせるようになるか・・・

不退転の決意のために!!

まずは、PICがつかえるようになるということを前提にしていっそのことハードウエア(基板)をつくっちゃえ!
そうすれば、勉強をしようというドライビングフォースがかかるでしょう(笑)。
ということで、作る基板は手にした電子ボリュームICにあわせて3種類を描いてみました。

1.NJW1159Dをつかった電子ボリューム版お気楽ヘッドホンアンプ
アンプ部の構成はオペアンプにボルテージフォロアーのドライブ段をつけたシンプルなヘッドホンアンプです。
以前にリリースしたディスクトップシリーズのお気楽ヘッドホンアンプと同一回路です。
NJW1159の動作電圧範囲は7.5VまでなのでLM317/337で基板内で降圧回路がはいっています。

NJW1159Dをつかった電子ボリューム付きヘッドホンアンプ

2.LM1972Mをつかったシンプル電子ボリューム

バッファーアンプはシンプルにデュアルのオペアンプを用いてみました。
出力にはMUTE用のリレー回路を入れています。
LM1972の動作電圧範囲が7.5VまでなのでLM317/337で基板内で降圧回路がはいっています。

LM1972Mをつかったシンプル電子ボリューム。


3.MUSES72320をつかった高精度電子ボリューム
 高精度とありますが、使用するICがMUSESシリーズのオーディオに特化したものをつかうので、
このようなネーミングにしています。出力バッファーはオペアンプではなくディスクリート(A12回路)で構成 しました。
勿論出力にはMUTE用のリレー回路を入れています。

MUSES72320をつかった電子ボリューム。ハイエンドプリにつかえるかな?

さてさて、まずは基板を試作しておきましょう。その間にPICを使えるように勉強です。

ありゃりゃ!2011.2.19

週末に基板が納品されるかと思いきや、配送トラブルのようです。ちょっと残念。
次の週末のお楽しみです。

本日出荷分の基板は、製造は問題なく完了し、現地より輸送しておりました。
しかしながら、輸送の航空便が、到着地の成田空港付近が悪天候(強風)
のため、到着が大幅に遅れてしまいました。

そのため、空港からのルート配送時間のトラックに乗ることが出来ず、
本日、出荷センターに届かないため、出荷することが出来かねて
しまうことが判明致しました。

ご迷惑をお掛け致しまして、誠に申し訳ございませんが、
出荷の方が、最速で2/21(月)になってしまいます。


ようやく基板到着! 2011.2.23
待ち人きたる、って感じです。

ようやく基板がそろいました。電子ボリューム3兄弟です。

まずはLM1972Mをつかったシンプル電子ボリューム
これが構成的には一番、基本になるような気がしています。
製作する順番としては、電源部からです。LM317/337をつかった定電圧部を組み上げて
所定の電圧(正負6V)が出ることをまずは確認しました。
電源でトラブルと、下流の回路が一気にやられますから、まずは電源部のチェックは重要です。

電源部を組み立てて動作確認。

電源部の確認がとれたので、あとは残りの部分を一気に組み上げました。
ただし、PIC16F819は何度も取り外すことになりそうなので、その近くの電解コンデンサは
未実装です。これがあると、ピンセットが横から入らないので、はずすのが難しくなります。
コンデンサの色が地味ですね〜。MUSEの両極性あたりを使った方が鮮やかだったかな(笑)。

LM1972をつかった電子ボリュームがまずは組上がりました。

次は、NJW1159Dをつかった電子ボリューム版お気楽ヘッドホンアンプ
この電源部は、上のLM1972をつかった回路と同じなので、動作確認は不要なので、
一気に全回路を組み上げました。


お気楽ヘッドホンアンプ 電子ボリュウム版が完成!

ここいらで、ソフトの動作確認にはいりましょう。

お気楽ヘッドホンアンプについては、とくにMUTE回路は入れていません。
これは、お気楽という意味もあるので、ヘッドホンや小型のスピーカを接続することを
考えれば、少々のポップノイズはいいかな〜という考えです。
一方、シンプル電子ボリュームについては、アンプに直結することを想定してMUTEリレーを実装
しています。今回の制御ソフトでは、電源ON/OFFのポップノイズを出さないことを念頭にすこし
工夫しました。
 まず電源ON時には一定時間(1.5sec)経過した後にMUTEリレーをOFFにします。
難しいのはリレーを切るタイミングです。リレーが切れるのが遅れると、ポップノイズが
出てしまいます。そこで、PICでアナログ部の電源電圧を監視して、定常値より5%低下した
時点でリレーをOFFにするようにしました。電源OFF時から電圧の降下はコンデンサが大きいと
それなりに時間がかかりますから、その間にリレーをOFFにしてやろうという算段です。

さてさて、うまく動くかな?

ソフト確認の前に 2011.2.24
ついでなので、Presicion E-VOL (MUSES72320)も作ってみました。
週末はこれらで遊ぼうっと!


MUSES72320をつかった高精度電子ボリュームも完成!

動作確認! 2011.2.26


NJW1159Dをつかった電子ボリューム版お気楽ヘッドホンアンプ

まずはお気楽ヘッドホンアンプ(電子ボリューム版)から動作チェックを始めました。
ソフトで重要なポイントはボリュームの減衰カーブをどのようにするかです。
NJW1159Dは0〜-95dBを1dBステップで減衰制御が可能ですが、ボリューム出力を単純に
割り当ててしまうと、ボリューム位置が12時(真上)時においても-48dBとかなり大きな減衰に
なるので、音量がはとんどあがりません。そこで、ボリュームツマミが12時の位置では減衰量が
-35dBになるように設定しました。そして、少なくとも8時の位置では音が聞こえ出すように
8時の位置で-75dBになるように設定しました。結局のところ、減衰曲線は3つの折れ線で
構成することにしました。


動作確認の様子。


ボリュームの設定カーブは3つの折れ線で構成

周波数特性
周波数の特性をすこし調べてみましょう。実は電子ボリュームというのは高周波特性がものすごく期待できます。
というのも、通常のボリュームをつかうと配線長が長くなったりして周波数特性を上げることが出来ない場合があります。
(といってもオーディオ帯域では無視できるでしょうが)。

さて、実際に測った結果は下図のオシロ写真からわかります。
オーディオ帯域の20kHzでは減衰無しです。もっとも100kHzでもほとんどふらっとです。
-3dBの周波数は約370kHzです。オーディオ用としては十分ですが、少し低いような気がします。
ヘッドホンアンプの回路の周波数応答の問題かもしれません。、
でも、特性的には全く問題ないですね。
  
   1kHz(上:出力、下:入力)          20kHz(上:出力、下:入力)           100kHz(上:出力、下:入力)


370kHzで−3dB(上:出力、下:入力)

いよいよ試聴!

お気楽ヘッドホンらしく、入力ソースはPCM2704をつかったUSB−DACを接続しました。
ヘッドホンは愛用のオーディオテクニカのATH−W10VTGです。

試聴版にはFOUR PLAY を選びました。

ノイズもなく、ボリュームの操作感覚もいいです。このボリュームICが150円で手に入るのは驚きです。


試聴時の構成


LM1972Mをつかったシンプル電子ボリューム

つぎはLM11972をつかった純粋な電子ボリュームです。出力はオペアンプによる
フォロアーとしています。ゲインを持たせることも可能ですが、ここはシンプルに構成しました。

LM1972は0〜-78dBを1dBあるいは0.5dBのステップで7bitの減衰制御が可能です。
0〜-48dBは0.5dB,−78〜-48dBは1dBのステップになっており、ボリューム出力を単純に
割り当ててしまっても問題のない操作感覚になりそうです。ということで、単純にAD変換値(10Bit)を
8で割った数値を割り当てるだけです。


シンプル電子ボリュームのテスト構成


単純に可変抵抗の電圧出力をボリュームICに設定

周波数特性

非常にいい周波数特性をもっています。オーディオ帯域ではまったく問題ありませんし、1MHzでもほとんど減衰ありません。
これって計測用途につかっても面白いICかもしれません。

 
   1kHz(上:出力、下:入力)          20kHz(上:出力、下:入力)           100kHz(上:出力、下:入力)



   1MHz(上:出力、下:入力)        3MHz(上:出力、下:入力)

いよいよ試聴!

こちらも入力ソースはPCM2704をつかったUSB−DACを接続しました。
こちらもノイズもなく、ボリュームの操作感覚もいいです。
気にしていたのが、MUTE時は-100dBですが、最大の減衰量が-78dBなので、MUTE状態からいきなり
音がでるのでは?と思いましたがそんな懸念は払拭されました。とてもスムーズに音が立ち上がってきます。

電源ON時のMUTEリレーの動作もここちいいです。

試聴時の構成


MUSES72320をつかった高精度電子ボリューム

さて、トリは高精度電子ボリュームです。@2500円の比較的高価な電子ボリュームICに加えて、出力アンプは
ディスクリ構成としています。
 ボリューム設定カーブは NJW1159Dと同じようにしました。
ボリュームツマミが12時の位置では減衰量が-35dBになるように設定。8時の位置で-75dB。
そして、それ以下では-111dBまで連続して減衰するように設定しました。
減衰曲線は3本の折れ線で構成しています。

テスト時の様子



ボリュームの設定カーブは3つの折れ線で構成


周波数特性

オーディオ帯域の20kHzでは減衰無しで、100kHzでもほぼフラットです。
ただし、アンプ回路には位相補償用のコンデンサをいれているので、
-3dBの周波数は約310kHzとなりました。まあ、オーディオ用としては十分です。

   1kHz(上:出力、下:入力)          20kHz(上:出力、下:入力)           100kHz(上:出力、下:入力)


310kHzで−3dB(上:出力、下:入力)

いよいよ試聴!

 やはり高いだけあって音の立ち上がりもスムーズです。ってプラシーボ全開かな(笑)。


アクセサリーもつくってみました。

ボリューム量のLED表示もあると面白そうなのでつくてみました。
前作の電子ボリュームではシフトレジスタ(74HC4094)をつかいました。
これも簡単でいいのですが、一つ難点があって制御線が3本必要になります。
電源を入れると全部で5本。配線が多くなるのですこし面倒です。
それに、4桁も必要でないので、配線がすくなくなるようにシリアル転送で
行うことを考えてみました。

以前作成した電子ボリューム用の表示器

使用したのはアノードコモン型の7セグメントLEDです。
部品箱にあったものですが、最近ではもっと高輝度のものがあるので
少ない電流で動かせそうです。


PIC大活躍!
折角なのでPICをつかいました。配線が面倒なので、LEDの足に直接抵抗を取り付けて
最寄りのPICのIOピンに接続しました。あとはソフトでなんとかしていきます(笑)。

配線図はこんな感じです。LEDの裏側にPIC16F819をとりつけました。

配線は至ってシンプルに

 
まずはバラックで取り付けた様子                   PICのみの簡単なハードです。

ソフトを書き込んで動作確認です。無事に動き出しました。
配線が3本で済むので便利です。
電子ボリュームのコントロールソフトにこの表示器のための信号出力ソフトを組み込むことにしましょう。

表示は0(MUTE)〜80(最大)です。操作量と表示量がことなると、違和感がでそうなので
ボリュームツマミに比例した表示出力にすることにしました。

電源2本と信号線1本で表示できるので配線も楽そうです。

基板にしてみると、

こんな感じでしょうか?
でも、わざわざ基板にするまでもないな〜という気もします。

基板にするとこんな感じです。

というころでプログラム済みのPIC16F819をつかって
ユニバーサルで組んでみました。結構面倒ですが、難しいことはないようです。
基板があれば、便利だけど・・・・

 
こんな感じでできあがりです。

(つづく)