完全差動型バランス/アンバランス駆動ヘッドホンアンプの製作
製作

2017 (c) S.Yoshimoto
2019 Dec. Update

プリント基板の作成

プリント基板の設計(作図)にはRSコンポーネンツ社が無償配布しているプリント基板設計アプリ DesignSparkを使用しました。
DesignSparkは無償ですが下記の特色を持ち、使い易いアプリだと感じます。

部品ライブラリが多いとはいえ、ヘッドホン端子や放熱器を付けたTr等の汎用品ではない部品は部品情報を作成しなければなりません。
これら部品情報の作成には多くの労力を要します。

下図はDesignSparkでの作図画面です。

DesignSparkでの作図が完成したら、ガーバー形式でファイルに出力します。
ガーバー形式ファイルをプリント基板製造会社に送り、プリント基板を製造してもらいます。
下図は出来上がったプリント基板です。

プログラムの作成

プログラムの作成にはマイクロチップ社が提供する開発環境MPLAB_Xとプログラム書き込み・接続用ハードPICKit3を用います。
開発環境MPLAB_Xは無償、PICKit3は5000円程度です。
MPLAB_Xは

を備えます。
下図はPIC16F1823のPin機能を設定するGUIです。

5つのPinをAD変換入力に、2つのPinをデジタル出力に指定しています。
この設定により、機能設定初期化の関数とAD変換入力関数が自動生成されます。
この他にもタイマーとその割り込み処理もGUIで設定し、タイマー処理の関数を自動生成しています。
自動生成されたプログラムに保護機能の処理を書き加えて完成させます。
下記は私が書き加えたプログラムの主要部分です。
詳細設計の項のフローチャートをC言語で記述しています、わずか40行たらずです。

 77    while (1)
 78     {
 79         // Add your application code
 80         Pflg = 0;
 81         //sense Power supply voltage
 82         ttt = ADC_GetConversion( channel_AN2 ) ;
 83         if(  ttt < U_MINPSV ) Pflg = 1;
 84         // if(  ADC_GetConversion( channel_AN2 ) < U_MINPSV ) Pflg = 1;
 85         
 86         //sense Lout- offset
 87         offsetv = ADC_GetConversion( channel_AN4 ) ;
 88         if( offsetv > U_MAXOFFSETV ) Pflg = 1;    
 89         if( offsetv < U_MINOFFSETV ) Pflg = 1;   
 90         
 91         //sense Lout+ offset
 92         offsetv = ADC_GetConversion( channel_AN5 ) ;
 93         if( offsetv > U_MAXOFFSETV ) Pflg = 1;    
 94         if( offsetv < U_MINOFFSETV ) Pflg = 1;    
 95 
 96         //sense Rout- offset
 97         offsetv = ADC_GetConversion( channel_AN6 ) ;
 98         if( offsetv > U_MAXOFFSETV ) Pflg = 1;    
 99         if( offsetv < U_MINOFFSETV ) Pflg = 1;    
100 
101         //sense Rout+ offset
102         offsetv = ADC_GetConversion( channel_AN7 ) ;
103         if( offsetv > U_MAXOFFSETV ) Pflg = 1;    
104         if( offsetv < U_MINOFFSETV ) Pflg = 1;    
105 
106         if( Pflg == 1 ) {
107             RC4 = 0x0 ;   //Cut Output
108             __delay_ms( 2000 ) ;
109         }
110         else {
111             RC4 = 0x1 ;   //Connect Output
112             RC5 = 0x1 ;   //Power LED ON
113             __delay_ms( 100 ) ;
114         }
115     }

例えば
  ttt = ADC_GetConversion( channel_AN2 ) ;
はGUIでAD変換AN2に設定したPinから電圧を読み取り、電圧値を変数tttに格納します。
ADC_GetConversion()は自動生成されたAD変換入力関数です。

 RC4 = 0x1 ; //Connect Output
はGUIでデジタル出力に設定したRC4ピンに1(5V)を出力します。

自動生成されたプログラムの内、処理を書き加えて完成させた main.c と tmr0.c を掲載します。
書き加えた部分は文字の色を変えています。
 main.c
 tmr0.c

組立

基板の組み立て
表面実装部品から背の低い順に基板に半田付けします。
デュアルMOSFETとデュアルTrは小型なので慎重に取り付けます。

下図は全部品を取り付けた基板です。


全体の組み立て
筺体に入力端子、電源ソケット、電源スイッチ、電源トランス、基板を取り付けて配線を行います。
下図は組み立てが完了したアンプの内部写真です。

測定へ進む

完全差動型バランス/アンバランス駆動ヘッドホンアンプの製作 先頭に戻る