フルバランスアンプ (X_Under bar)

心地よい音を求めてフルバランスアンプを中心に自作しています。

2012年02月

昨日、秋月のAKI-PIC2プログラマボード用のコネクター関連の部品を買ってきて、接続ケーブルを作りました。
 
イメージ 1

あと、Chaosさんのアドバイスで、ボードの一部を改造(ダイオードと10KΩを追加)しました。
 
イメージ 2

PIC 16F88も買ってきたし、進捗がかなり遅いですが、次のステップに進めそうです。

PIC16F88のコンフィグレーションを考えてみました。
 
下記は、PICの動作モードなどを設定するコンフィグレーションです。
 
__CONFIG(_INTRC_IO & _WDT_OFF & _PWRTE_ON & _MCLR_OFF & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_PROTECT_OFF & _DEBUG_OFF & _CCP1_RB0 & _CP_OFF)
__CONFIG(_FCMEN_OFF & _IESO_OFF)

_INTRC_IO(内蔵クロックを使用:100)
WDT_OFF(ウォッチドッグタイマを利用しない)
PWRTE_ON(起動時電源が安定してから動作開始の指定をする:0)
_MCLR_OFF(マスタ・クリア・リセット無効:1)
_BODEN_ON(瞬停対策リセットする:0)
_LVP_OFF(低電圧書き込み許可指定:0)
_CPD_OFF(EEPROMへのプロテクト無効:1)
_DEBUG_OFF(デバッグ無効:1)
_CCP1_RB0(CCP1の出力ピンの指定:1)
_CP_OFF(プログラム保護しない:1)
_FCMEN_OFF(フェールセーフクロックモニタ無効:0)
_IESO_OFF(クロックの内部・外部切り替え:0)
 
電子ボリュームの流れは、こんな感じに成ると思います。
1. 初期化
2. タイマー(遅延)2秒
3. MUTE信号Hi(1)
4. アナログVR電圧値を読込みA/D変換
5. マップのデータに変換
6. 電子VRにデータを送る
7. アナログVR電圧値を読込みA/D変換
8. 過去に送ったデータと比較して変化が有ったら電子VRにデータを送り書換
9. 7.に戻る
 
 
遅延方法として、遅延関数を作る必要があるのか?
 
次は、タイマーの遅延方法を考えてみたいと思います。

Chaosさんに作って戴いた、Aカーブ曲線(数値表)に合わせて128(7bit)の減衰量テーブルを作ってみました。(EXCELでHEX変換ができるとChaosさんに教わったので早速EXCELでやってみました。)
 
イメージ 1
 
また、NJW1159の減衰量は8ビット中、上位7ビットがデータで、最下位の1ビットは使っていません。後処理を簡単にするため、この最下位1ビット分を含めた減衰量テーブルを作りました。
 
減衰量テーブルはこんな感じです。
const unsigned char VR_ATT[128] = {
0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
0xBE, 0xBE, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC. 0xBC,
0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xB8, 0xB8, 0xB8,
0xB8, 0xB6, 0xB6, 0xB6, 0xB4, 0xB4, 0xB4, 0xB2,
0xB2, 0xB2, 0xB0, 0xB0, 0xAE, 0xAE, 0xAC, 0xAC,
0xAC, 0xAA, 0xAA, 0xA8, 0xA8, 0xA6, 0xA6, 0xA4,
0xA2, 0xA2, 0xA0, 0xA0, 0x9E, 0x9C, 0x9C, 0x9A,
0x9A, 0x98, 0x96, 0x94, 0x94, 0x92, 0x90, 0x90,
0x8E, 0x8C, 0x8A, 0x8A, 0x88, 0x86, 0x84, 0x82,
0x80, 0x80, 0x7E, 0x7C, 0x7A, 0x78, 0x76, 0x74,
0x72, 0x70, 0x6E, 0x6C, 0x6A, 0x68, 0x66, 0x64,
0x62, 0x60, 0x5E, 0x5C, 0x5A, 0x58, 0x56, 0x54,
0x52, 0x50, 0x4C, 0x4A, 0x48, 0x46, 0x44, 0x42,
0x3E, 0x3C, 0x3A, 0x38, 0x34, 0x32, 0x30, 0x2C,
0x2A, 0x28, 0x24, 0x22, 0x20, 0x1C, 0x1A, 0x18,
0x14, 0x12, 0x0E, 0x0C, 0x08, 0x06, 0x02, 0x00};
 
Chaosさん、有難う御座いました。 ♪(о ̄∇ ̄)/
 
 
PICは、16F88(18pin)を使う予定です。
使用するPICのI/O端子については、input(アナログVR)、output(DATA、CLOCK、LATCH、MUTE)の計5端子(input 1個、output 4個)となります。
16F88のデータシートからアナログinputが使えるのは、17pin,18 pin,1 pin,2 pin,3 pin, (12 pin,13 pinは、PIC書込み用の為使用しない)
outputが使えるのは(Buffer TTLタイプ)、17 pin,18 pin,1 pin,2 pin,6 pin,7 pin,8 pin,9 pin,10 pin,11 pin, (12 pin,13 pinは、PIC書込み用の為使用しない)
 
さて、どのピンを使えば良いか悩みます。
データシートでは、8pinがSPI data outになっているのでこの8pinをDATA-out端子にします。その隣9pinをCLOCK-out端子、10pinをLATCH-out端子、6pinをMUTE端子とします。最後にinputは、18pinをアナログVR端子とします。
NJW1159との配線レイアウトは、考慮していません。
 
こんな適当な決め方で良いのか?
 
次は、CONFIGの設定を考えます。

バランス型ヘッドフォンアンプの方も少し進めることにした。
DACに使用したアンプが、そのままヘッドフォンアンプに使えるように設計しておいたので、かなり手間がはぶけた。
 
イメージ 1

部品が足らなくなり一時中止、部品の購入数を間違えた。

間に合えば、このバランス型ヘッドフォンアンプに、電子ボリュームを使いたい。

Aカーブボリュームの図を描いて、減衰量テーブルを作ってみました。
Aカーブを作るのが、案外と難しくこの様なカーブになりました。
 
イメージ 1

減衰量テーブルは、こんな感じになりました。
 
const unsigned char VR_ATT[64] = {
  0x00, 0x06, 0x0B, 0x0F, 0x13, 0x16, 0x19, 0x1C,
  0x1F, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E,
    0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 0x3C, 0x3E,
    0x40, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
    0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
    0x51, 0x52, 0x53, 0x54, 0x55, 0x56. 0x57, 0x58,
    0x58, 0x59, 0x59, 0x5A, 0x5A, 0x5B, 0x5B, 0x5C,
    0x5C, 0x5D, 0x5D, 0x5E, 0x5E, 0x5F, 0x5F, 0x7F};
 
次は、A/Dコンの使い方を、勉強しないと。

↑このページのトップヘ