CC-218 Diversity
ステレオ・コントロール・センター(プリアンプ)
とのちのわがままな要求をすべて満たす、唯一無二のプリアンプ
特長 | TI社PGA2310使用の電子ボリューム、シャント方式無接点セレクター、MC専用フォノEQ、サンスイQS4と互換性のあるマトリックス回路(4チャンネル・ステレオ)、着脱式フロントパネル(着せ替えアンプ)、赤外線リモコン、PCからのモード設定、DVCS対応 |
---|---|
概略仕様 | 入力端子:PHONO(MC専用), LINE入力 x2(DAC,AUX). 出力端子:PRE OUT, REAR OUT, EQ OUT.最大ゲイン:+3dB.周波数特性:10Hz-500kHz (-0.3dB). |
外形寸法 | 寸法:360(W) x 142(H) x 190(D) mm (突起物含まず).重量:4.5kg (電源コード含まず). |
コスト | 106,422円 (2025年5月現在) |
履歴 | 2023年5月設計開始.現在製作中. |
コンセプト
Gaudi Ver.3.0で使用されるプリアンプです。名称を「コントロール・センター」としたのは、DVCS(後で説明します)を通じてチャンネル・デバイダー(以後、チャンデバ)やパワーアンプを制御する機能があるためです。
私にとって、5台目の自作プリアンプとなります。過去の経験から、様々なことを学び、結果として自分なりの理想像が出来上がりました。本作品には自分のもつ知見やスキルの全てを動員して、理想のプリアンプを作り上げることを目指しました。
設計上の重点項目は以下の通りです。
- (1) 自分の好みに合い、インテリアにフィットした外観
- 前作 MV-217 X'tal から引き継いだコンセプトです。CC-218では、この概念をさらに発展させ、フロントパネルを着脱式にすることにしました。簡単に外観を変えられるため、季節に合わせて外観を変える、といった応用ができます。
- (2) 25年間メンテナンスフリー
- セレクターとボリュームの無接点化、および密閉型ケースにより、初期性能を長期にわたって維持します。真空管など、経年劣化が早い素子は使用しません。
- (3) DVCSの採用
- DVCS(Distributed Volume Control System: 分散型音量調節システム)は、私自身が考案した技術です。ボリュームの操作部をプリアンプに内蔵し、ボリューム本体をパワーアンプあるいはチャンデバに内蔵させる方式です。システムトータルでのS/N比とダイナミックレンジを高めるのが目的です。
- (4) PCBの採用
- 電子ボリュームと数字表示器を使用するため、必然的に MCU (Micro Controller Unit: マイコン)を導入します。MCUを搭載した制御基板の小型化、動作の安定化、不要輻射低減のため、PCB (Print Circuit Board: プリント基板)を導入します。アナログ回路の実装に関しても PCB の使用はメリットがあります。GND電位の安定化、信号間クロストークの防止が期待できます。
- (5) 4チャンネル・ステレオ対応
- 私のわがままな要求の一つです。私はQS4レコードを何枚か所有していますが、4チャンネルで聴いたことがありません。ぜひ本来の音を聴いてみたいと長年思っていました。
- (6) コンソール対応
- CC-218とPCを接続し、PC側で Tera Term のようなターミナルソフトを実行させると、CC-218からステータス(機器内の状態や機器内で起きているイベントの報告)が送られ、アプリの画面に表示されます。またアプリからコマンドを送信し、CC-218の設定を変更したり、自己診断プログラムを実行させたりできます。私はこのような機能を「コンソール機能」と呼び、ターミナルをソフトを実行しているPCを、「コンソール」と呼んでいます。
愛称とテーマ音楽
愛称は Diversity(ダイバーシティ:多様性)です。
本作品には、電子ボリュームのように、マイコン制御で動作する回路がある一方で、フォノイコライザー(フォノEQ)のような伝統的回路があり、さらにQS4
というすでに世間で忘れられた機能があります。また、電気的性能だけでなく、外観や操作性も追及しています。
本作品は多様な機能を詰め込んでいるので、「Diversity」と名付けました。昨今は、この言葉を道徳的・倫理的な意味で用いることが多くなりましたが、本作品の名称には道徳的な意味はありません。
テーマ音楽は、Ted Sommer 楽団の Samba de Orfeu (オルフェのサンバ) に決めました(LP, Ted Sommer,
Percussive Mariach, Solid State SS-18012)。ジャズ、ラテン、サンバ、ボサノバ、マリアッチ(メキシコの伝統音楽)のクロスオーバー音楽です。
このレコードを初めて聴いたのは若干10歳の頃です。その時の強烈な印象が、私を音楽とオーディオの道へ引きずり込みました。生涯を通しての愛聴盤です。
[Samba de Orfeu (TedSommer_SambaDeOrfeu_50sec.mp3)]
概念図

仕様
ハードウェア仕様
入力端子 | PHONO (MC型専用), LINE x2 (DAC, AUX) |
PHONO 入力仕様 | 入力インピーダンス: 100Ω, 最大許容入力: 13mV, 端子: 金メッキRCAジャック |
LINE 入力仕様 | 入力インピーダンス: 22kΩ, 最大許容入力: 8V (ゲインが0dB以下のとき), 端子: 金メッキRCAジャック |
出力端子 | PRE OUT, REAR OUT, EQ OUT |
PRE OUT, REAR OUT 出力仕様 | 出力インピーダンス: 47Ω 負荷インピーダンス:600Ω以上. 最大出力:8V(600Ω負荷時) 端子: 金メッキRCAジャック |
EQ OUT 出力仕様 | 出力インピーダンス: 47Ω 負荷インピーダンス:600Ω以上. 最大出力:10V(600Ω負荷時) 端子: 金メッキRCAジャック |
PHONO EQ 仕様 | RIAA偏差: +/-0.1dB 以内 (20Hz~20kHz) チャンネル偏差: +/-0.1dB 以内 (20Hz~20kHz) |
ゲイン | PHONO: +66dB (1kHz) LINE: -∞dB、-60dB ~ +3dB |
ゲイン(ボリューム)調整 | パネル操作: -∞dB, -60dB ~ +3dB, 1dB ステップ リモート操作: -∞dB, -95.5dB ~ +10dB, 0.5dB ステップ プリセット(リモート操作): -40dB, -35dB, -30dB, ..., 0dB (5dBステップ) ギャングエラー: +/-0.1dB以下 デフォルト値: 電源オン時のボリュームツマミの位置による ボリュームツマミ回転角: 300度 |
ボリューム表示 | 表示器にゲインをdB単位で表示 表示器: 7セグメントLED 2桁 0.5dB (小数点以下)は小数点のみを表示 -∞dBは「-」と表示する 輝度調整: 7段階 (リモート操作) 表示モード: 4種類 (詳細は後述) (リモート操作) |
周波数レンジ | 10Hz ~ 500kHz (-0.3dB) (入力LPFあり) 10Hz ~ 1MHz (-0.1dB) (入力LPFなし) |
チャンネル・セパレーション | 93dB (@1kHz)、77dB (@20kHz). |
歪率 | とのちメソッドの測定限界以下. 実測値: THD:0.002%、IMD: 0.07%. (真の値はこれより小さい) |
S/N比 | とのちメソッドの測定限界以上. 実測値: 67dB (真の値はこれより大きい) |
コンソール機能 | PC上で動作するターミナルソフト(Tera Term等)を用いる 接続: CC-218 DVCS端子-->ミニプラグ/D-Sub変換ケーブル-->RS232C/USB変換ケーブル-->PC USB端子 |
DVCS 端子 | 非同期シリアル通信: 19,200 baud, 8ビット, パリティ無し, フロー制御無し 電気的仕様: RS232C準拠 (TX, RX, GNDのみ接続) DVCS対応パワーアンプ(あるいはチャンデバ)を接続すればDVCSインターフェースとして機能し、PCを接続すればコンソールとして機能する(自動切換え) |
電源 | AC100V または AC200V.(200Vコンセント使用時は専用電源コードあるいは変換プラグが必要) 許容入力電圧範囲:85V ~ 264V. |
消費電力 | 13W.(フロントパネルLED全点灯時) 12W.(フロントパネルLED全消灯時) |
外形寸法 | 寸法:360(W) x 142(H) x 190(D) mm (突起物含まず). 重量:4.5kg (電源コード含まず). |
レベル・ダイアグラム

最大出力は +3dBFS(=2.8V)ですが、リモコン操作では、+10dBFS(=6.3V)まで増幅できます。
操作仕様
CC-218の操作仕様は独特です。
アナログ・ディスク再生時にユーザー(私自身)がストレスを感じないように、ボリューム・ツマミにロータリー・エンコーダーではなく、可変抵抗器(VR、Variable
Resistor、バリオーム)を用います。バリオームの回転範囲は300度です。ボリューム最大から最小まで、1秒以内に落とせます。
アナログ・ディスクに針を降ろす時や、再生終了時には、ボリュームを落とします。衝撃的な雑音がスピーカーから出ることを防ぐためです。このような操作はバリオームの方が断然容易です。ちなみに、MV-217ではロータリー・エンコーダーを使用していますが、ボリューム最大から最小にするのに、10秒ぐらいかかります。
バリオームの採用により、CC-218はピュア・アナログアンプと全く同じ操作性を実現しました。特にディスプレイをDisableモード(常に消灯)にした時は、ピュア・アナログアンプと見分けができません。
バリオームは起点・終点付近の10度はリニアリティが低いため、ゲインを固定としました。起点から10度以内は-∞dB、終点までの10度以内は+3dBとしました。-∞dB以上-60dB未満は必要なしと見なしました。調節は1dBステップで行います。

リモート操作仕様


ディスプレイ・モード(Display mode)に関しては、「外観設計」をご覧ください。
消音機能にもこだわりました。私は突然音がブツッと切れるのを好まないので、約0.9秒かけてフェードアウトする仕様にしました。消音解除時もフェードインします。
これも「とのちのわがままな要求」の一つです。
設計
前作品 MV-217 X'tal と同様に、外観を優先しました。設計順序は以下の通りです(各工程は独立したものではなく、互いにオーバーラップしています)。
外観設計 ==> 機構設計 ==> 実装設計 ==> 回路設計 ==> PCB設計 ==> ファームウェア設計
外観に関わる部品・材料は MV-217 で実績のあるものを再び採用しました。。
主要部品・材料
前回プロジェクト(MV-217 X'tal)に次いで、今まで使ったことのない部材を色々と採用しました。
- PCB
- 今回初めて、自ら設計する PCB(Print Circuit Board: プリント基板)を使用します。
PCB 設計は数年前から学んできましたが、なかなかマスターできませんでした。しかし、超低雑音のMC用フォノイコライザー(フォノEQ)を実現するにはどうしても PCB が必要なので、背に腹は代えられず採用しました。 - AC/DCコンバーター
MV-217 で採用し、大いに気に入った XP Power社製 EML15USxx を再び採用しました。
アナログ回路用に 24V出力のもの(EML15US24-T)を2台、デジタル回路用に5V出力のもの(EML15US05-S)を1台使用します。
詳しくは、MV-217のページとメーカーのウェブサイトをご覧ください。
[メーカーのウェブサイト (https://www.xppower.com/)]
- TVリモコン
リモコンとして、テレビ用赤外線リモコンを採用しました。様々な機種が市販されていて、好みのものを選べるからです。
選んだのは、ソニーのRM-PZ3Dという機種です。テレビ用にしてはボタンが少なく、使いやすそうです。リビングルームのテレビ(シャープ製)やSTB(パナソニック製)のリモコンと外観が似ていないので、咄嗟の時に取り違えることがありません。
このリモコンからの信号をどう受けるかが問題ですが、赤外線受光モジュールのデータシートの記述から、日本製のリモコンは38kHzの搬送波を用いたPPM(Pulse Position Mudulation)方式を採用していることがわかりました。それを受信し、復調する機能をもつ Vishay TSOP34838 を使うことにしました。
- オーディオ用IC
- 電子ボリューム・チップ:Texas Instruments (旧Barr Brown) PGA3210
フォノEQ用超低雑音OPアンプ:Linear Technology LT1115
その他のオーディオ用OPアンプ:Texas Instruments (旧Barr Brown) OPA627、Texas Instruments (旧National Semiconductor) LME49860, LME49720
- MCU
- Microchip社 PIC18F2520 を選びました。
CPUは8ビットです。アンプの制御でしたら、8ビットで充分間に合います。PICマイコンは世界中に普及していて、供給が安定していると考え、採用しました。今後製作するアンプでも使用するつもりです。リセット回路やクロック発振回路を内蔵する、使いやすいMCU(Micro Controller Unit)です。
CPU: 8ビット CISC(Complex Instruction Set Computer)
クロック周波数:最大8MHz(内部クロック)、最大40MHz(外部クロック)
メモリ:プログラムメモリ(フラッシュメモリー)32KB、データメモリ(RAM)1.6KB、EEPROM 256B
内蔵ペリフェラル:タイマー x4(キャプチャー、コンパレーター、PWM機能あり)、シリアル・ポート x2(USART、MCCP(I2C Bus))、10-bit ADC、WDT等
新規技術
私が初めて導入する技術を紹介します。世間ではすでに陳腐化した技術も含みますが、私にとっては新しい技術です。
- マイコン(MCU)制御
- アナログ・プリアンプで最も音質劣化を招きやすいのがボリュームです。可変抵抗器(VR、バリオーム)の接点は、ただでさえ良質な接点とは言えない上に、経年劣化しやすいという難点があります。ステレオ用の二連バリオームには、2個のバリオームの特性のバラツキによるギャングエラーという欠点もあります。
最も現実的な解決策は、電子ボリュームを用いることです。それ用のICが市販されているので、ワンチップで構成できます。ただ、電子ボリュームはマイコン制御が前提です。電子ボリュームを使いたいがゆえに、マイコン制御を導入することに決定しました。
マイコン制御にすれば、赤外線リモコンの導入も可能です。
- PCB設計
- 本作品には PCB を使うことを決めました。その PCB は自分で設計せねばなりません。前述のように、PCB設計技術をマスターするのは難しかったのですが、DesignSpark
PCB という優れたユーザー・インターフェースをもつツールを手に入れたことで可能になりました。
【DesignSpark PCB のウェブサイト:https://www.rs-online.com/designspark/pcb-software-jp】 - 赤外線リモコン
- 長年プリアンプにリモコンがないことにストレスを感じていました。MV-217で初めてリモコンを採用したのですが、なぜか機能しませんでした。MV-217では市販のモジュールを使用したため、デバッグができず、諦めました。今回はハードもファームも自作なので、必ず使えるようにします。
リモコンは、間接的には音質に影響します。音量と音質には密接な関係があり、最高音質を実現したければ、音量を細かく調整する必要があります。しかし、聴取位置で調整できないと、聴取位置とアンプの間を行ったり来たりすることになります。そのように操作に煩わしさがあると、音楽鑑賞に集中できなくなります。ひいては音質が良くないと感じてしまいます。 - I2C Bus
- 機器内通信の標準として普及している技術です。ICとICをつなぐインターフェースなので、I2Cと名付けられました。多くのLSIで採用されています。この技術を獲得すれば、高機能LSIを使いこなせるようになります。
外観設計
過去の作品 PA-210 Simplicity と MV-217 X'tal のデザインを融合させたデザインとしました。
私好みのデザインであるとともに、なじみのある操作性を実現します。
PA-210 Simplicity | MV-217 X'tal |
![]() |
![]() |

フロントパネルのデザイン
フロントパネルに用いる部品は MV-217 と共通です。MV-217のそれを横倒しにし、2つ並べた格好です。
透明樹脂ネジを外せば、フロントパネルを取り外せます。
透明樹脂ネジは、電源インジケーターとしても使用します。
ツマミはMV-217と同様、木製とします。明るい色にしたいので、桜材を選択しました。
数字表示は3個の7セグメントLEDを用います。色はオレンジにしようと思いました。
セレクター・インジケーターには、PHONOが赤LED、DACとAUXがオレンジLEDを使います。PA-210のインジケーターを踏襲しました。
LED消灯時には、その存在が見えないようにするのがミソです。
見栄えを確かめるために、予備実験を行いました。ROHMのオレンジ色7セグメントにステッカーを貼って、実際に点灯させました。
驚いたことに、隣接するセグメントに光が漏れることが分かりました。写真で見ると、光っているセグメントとその隣の消えているセグメントの輝度差がはっきりあるように見えますが、肉眼で見ると、それほど差がないように見えます。例えば、'0'を表示した時に'8'のように見えます。これでは使えません。ROHMがこんな低品質の製品を出荷するとは思いもよりませんでした。
他に単品で売られているオレンジ色7セグメントが見つからなかったので、仕方なく平凡な赤色にしました。赤色LEDは目にどぎついので好きではないのですが。
数字表示器は -99 から +99 まで表示できますが、実際に表示するのは、ゲイン値 -95.5 から +10 までです。
ゲイン -∞dB は、'-' だけで表します。0.5dB の表示は、小数点のみで表します。
![]() |
![]() |
![]() |
![]() |
-∞dB (無音状態) 数字を表示しない |
-60dB | -9.5dB 値が一桁の場合、上位桁の'0'は表示しない 0.5dBは小数点の点灯で表す |
+3dB '+'は表示しない(できない) |
不一致サイン |
![]() |
ツマミの回転角と実際のゲインが一致していないことを示します |
フロントパネルの表示には、4つのモードがあります。
- Quick
- 操作時にのみ表示が点灯します。約3秒後に消灯します。デフォルト・モードです。
リモート操作の後に消灯すると、「不一致サイン」を表示します。 - Permanent
- 常に表示が点灯します。
- Analog
- パネル操作では表示が点灯しません。リモート操作時のみ約3秒間点灯します。
パネル操作のみを行う場合、あたかもピュア・アナログアンプのように見えるので、Analogと名付けました。
リモート操作の後に消灯すると、「不一致サイン」を表示します。 - Disable
- 常に表示が消灯状態を保ちます。
ケースの構造
この段階で、市販のシャーシ、LEAD S-5、S-8 をそれぞれ2個ずつ使ってケースを構成することを決定しました。S-5をクリーン・コンパートメント、S-8をダーティ・コンパートメントに使用します。
クリーン・コンパートメント… アナログ回路を収納
ダーティ・コンパートメント… デジタル回路、電源回路を収納

バックパネルのデザイン
背面は、ステッカーを貼ったアルミパネルを取り付けます。
この時点では、上側のS-5に左チャンネル、下側に右チャンネルの回路を実装する予定でした。いわゆるデュアル・モノ・コンストラクションです。PA-202、PA-203、PA-210で採用した構造です。
また、PHONO入力がMM・MC両対応になっていますが、後にMC専用に改めます。

その他
トップ・パネルとサイド・パネルは自動車用スプレー塗料で塗装します。色はシルバー・メタリックにします。
ボトム・パネルには12mm厚のMDFボードを取り付けます。ケースの重心を下げ、安定感の見栄えにするためですが、同時に、振動を抑制する効果が期待できます。MDFボードは茶色の塗料で塗装します。
機構設計
PA-210設計時に考案したバーナットを、再び採用しました。アルミ角棒にネジ穴を開けて、ナットとして使えるようにした機構部品です。「バーナット(Bar nut)」は私の造語です。シャーシとパネルの締結に用います。
![]() |
![]() |
バーナット (Bar Nut) | バーナットでシャーシとパネルを締結 |
ボリューム用のバリオームとセレクター用のロータリー・スイッチは、MV-217と同様にサブパネルを使って取り付けます。バリオームを少しフロントパネルより奥に配置し、延長シャフトを取り付けます。延長シャフトの長さを調整することで、ツマミの位置をぴったり合わせます。ツマミと透明パネルの隙間を約1mmになるように調整します。
![]() |
![]() |
ボリューム・モジュール (Volume Module) - 前面 | ボリューム・モジュール (Volume Module) - 背面 |
![]() |
ボリューム・モジュール (Volume Module) の取り付け- 上から見た図 |
上側クリーン・コンパートメントと下側クリーン・コンパートメントの間には、1mm厚の銅板をはさむことにしました。
クリーン・コンパートメントとダーティ・コンパートメントの間にも、1mm厚の銅板をはさみます。
電磁シールド効果と制振効果を狙いました。
機構設計の結果、下図のような外観となりました。
これは最終的な設計ではないことにご注意ください。機構設計は設計工程の前半で行ったため、後の工程で変更が生じています。設計の途中結果を敢えて公開することで、設計のノウハウをお伝えできれば、という意図で掲載しました。
![]() |
機構設計の結果 - 前面 |
機構設計の詳細に関しては、以下の機構設計書をご覧ください。設計の最終段階ではないので、寸法は書き込んでありません。
[機構設計書: CC-218_Design_Mech.pdf]
この設計書にはパネル類の設計が含まれていません。実装設計で変更が生じる可能性があるからです。
実装設計
実装設計には次の3段階があります。
- モジュール配置
- 各基板やAC/DCコンバーターを、ケース内にどのように配置するかを決定します。外観設計や機構設計の段階で、大体のイメージが頭の中にできているのですが、それをブロック図などに明示します。
- PCB仕様設計
- PCBの寸法を決め、さらに使用コネクターとその取付位置を決定します。
- 内部配線設計
- 内部配線に用いるワイヤーハーネスを設計します。
モジュール配置
下図に、本作品のブロック図を示します。

各モジュールの説明と配置を下表に示します。
参照番号 | モジュール名/基板名 | 機能 | 取付場所 |
PL1 | ACインレット | 電源コードを差し込むコネクター ヒューズホルダー内蔵 |
バックパネル |
PS1 | AC/DCコンバーター (UML15US24-T) |
アナログ回路用電源 +24V 0.6A |
CH3 PSU (電源用ダーティ・コンパートメント) |
PS2 | AC/DCコンバーター (UML15US24-T) |
アナログ回路用電源 -24V 0.6A |
CH3 PSU (電源用ダーティ・コンパートメント) |
PS3 | AC/DCコンバーター (UML15US05-S) |
アナログ回路用電源 +5V 3A |
CH4 MCU (MCU用ダーティ・コンパートメント) |
BD1 | CC-218 DISP | ゲイン表示用数字表示器 AS1115搭載 |
CH1 AMP_VOL (アナログ回路用クリーン・コンパートメント) |
BD2 | CC-218 IND | セレクター・インジケーター 3個のLEDを搭載 |
CH2 AMP_EQ (アナログ回路用クリーン・コンパートメント) |
BD3 | CC-218 MCU | 制御基板 PIC18F2520搭載 |
CH4 MCU (MCU用ダーティ・コンパートメント) |
BD4 | CC-218 VOL | セレクター・ボリューム基板 PGA2310搭載 |
CH1 AMP_VOL (アナログ回路用クリーン・コンパートメント) |
BD5 | CC-218 EQ | フォノイコライザー基板 LT1115搭載 |
CH2 AMP_EQ (アナログ回路用クリーン・コンパートメント) |
実装設計を進める中で、デュアルモノ・コンストラクションは音質向上につながらないどころか、返って音質低下を招くことに気づきました。
GND (グラウンド)を左右チャンネルに分けることでGNDループが生じたり、余計な内部配線が増えたりするからです。「デュアルモノ・コンストラクション」という言葉は格好いいのですが、ほとんどメリットがない構造です。PA-202、PA-203、PA-210で採用したので、つい惰性で採用しそうになりましたが、やめました。
なお、通常の実装でも充分なチャンネル・セパレーションを得られます。
機構設計を変更したことで、外観が変わりました。
その他にも、PHONO入力をMC専用にしたり、ACインレットをヒューズホルダー内蔵のものにしたり、いくつかの変更があります。
![]() |
![]() |
前面 | 背面 |
基板仕様設計
BD1とBD3~BD5には PCB を用います。
各PCBには基板の参照番号と同じ番号を割り当てます。PCB2は欠番となります。
基板参照番号 | 名称 | ベアボード | 仕様 |
BD1 | CC-218 DISP | PCB1 基板メーカーで製造 |
両面スルーホール 1.6 x 61 x 32mm |
BD2 | CC-218 IND | サンハヤト ICB-97B |
万能基板 1.6 x 68 x 20mm |
BD3 | CC-218 MCU | PCB3 基板メーカーで製造 |
両面スルーホール 1.6 x 90 x 50mm |
BD4 | CC-218 VOL | PCB4 基板メーカーで製造 |
両面スルーホール 1.6 x 208 x 90mm |
BD5 | CC-218 EQ | PCB5 基板メーカーで製造 |
両面スルーホール 1.6 x 140 x 90mm |
内部配線用コネクターは、すべて JST (日本圧着端子) の XH シリーズのコネクターを使用します。MV-217 でも使用したので、工具もあるし、使い慣れているからです。
バックパネルのコネクターと基板の接続は、0.5mm径のOFC金メッキ線か、1/4W型抵抗器で接続します。コネクター側はハンダ付け、基板側はピンソケットで接続します。
内部配線設計
使用した線材を下表に示します。
用途 | 種類/規格 | 仕様 | 配色 |
電源1次側 | UL1015 (耐圧:600V) |
AWG18 | 業界標準に準拠 アース:緑、ホット:黒、コールド:白 |
電源2次側 | UL1007 (耐圧:300V) |
AWG22 | GND:黒、+電源:赤、ー電源:青 |
基板間 デジタル信号 |
UL1007 (耐圧:300V) |
AWG22 | コネクターのピン番号に対応したカラーコード |
基板対パネル デジタル信号 |
2芯シールド (芯線:AWG25) |
カナレ L-2B2AT | グレー |
アナログ信号 | 1芯シールド (芯線:AWG28) |
モガミ 2520 | 左チャンネル:白、右チャンネル:赤 |
基板対パネル アナログ信号 |
OFC金メッキ線 (0.5mm径) |
Amtrans AMOFC-GMK-05FC |
内部配線はメカCADを用いて設計しました。
下図はその一例です。ワイヤーハーネス WH5 VOL_SEL のルートをCADで設計し、長さをCADに計算させているところです。

上の例では電線の長さを196mmと計算していますが、この長さにコネクターを取り付けるためのマージンを加えて、電線の長さを決定します。
WH5の場合は、40mmを加算して236mmとしました。
本作品の特徴として、基板とパネルに取り付けられたRCAジャックの接続を、ワイヤーハーネスではなく抵抗器または0.5mm径の金メッキ線で行っています。抵抗器と金メッキ線はRCAジャックにハンダ付けして、もう一端を基板上のピンソケットに差し込むことで電気的に接続します。
実装設計の詳細については、下記PDFをご覧ください。
[実装設計資料: CC-218_Design_LayoutWiring.pdf]
[ワイヤーハーネス設計資料: CC-218_Design_WireAssy.pdf]
![]() |
![]() |
上側クリーン・コンパートメント (CH1 AMP_VOL) 内の実装 |
上側クリーン・コンパートメント (CH1 AMP_VOL) 内の実装 |
![]() |
![]() |
下側クリーン・コンパートメント (CH2 AMP_EQ) 内の実装 | 左側ダーティー・コンパートメント (CH4 MCU) 内の実装 |
外装パネルの設計
実装設計を経て、外装パネルの設計が固まりました。
フロントパネル
ここでは形状のみを示します。寸法の詳細に関しては、金属部品加工図および仕上げ指示書をご覧ください。
![]() |
![]() |
左側フロントパネル (PN8 Front Panel L) t=1mm アルミ板 |
右側フロントパネル (PN9 Front Panel R) t=1mm アルミ板 |
![]() |
![]() |
左側フロントステッカー (ST1 Front Sticker L) 用紙: A-one 28874N |
右側フロントステッカー (ST2 Front Sticker R) 用紙: A-one 28874N |
バックパネル
フロントパネル同様形状を示します。寸法の詳細は、金属部品加工図および仕上げ指示書をご覧ください。
![]() |
![]() |
右側バックパネル (PN20 Back Panel R) t=1.5mm アルミ板 |
左側バックパネル (PN12 Back Panel L) t=1.5mm アルミ板 |
![]() |
![]() |
右側バックステッカー (ST3 Back Sticker Amp) 用紙: A-one 28874N |
左側バックステッカー (ST4 Back Sticker PSU) 用紙: A-one 28874N |
トップパネル
ここでは形状のみを示します。寸法の詳細に関しては、金属部品加工図および仕上げ指示書をご覧ください。
![]() |
トップパネル (PN3 Top Panel) t=1.5mm アルミ |
![]() |
ステッカー貼付済みトップパネル (ST5 Block Diagram, ST6 Level Diagram) 用紙: ELECOM EDT-STSC |
機構部品図面
金属部品の加工図は、以下のリンクをご覧ください。
[金属部品加工図: CC-218_Metalwork.pdf]
非金属部品の加工図は、以下のリンクをご覧ください。
[非金属部品加工図: CC-218_Woodwork.pdf]
機構部品は手作業で加工するので、誤差が生じます。そのままでは組み立てられないので、予め仮組みを行います。仮組みでは、各部品をやすりで修正しながらケースを組み立てます。
[仮組みマニュアル: CC-218_PreAssy.pdf]
このマニュアル作成中にいくつかバグを発見しました。それらを解消するために、設計を一部変更しました。
マニュアルは作業を効率化するために作成しますが、マニュアル作成自体が一種のシミュレーションなので、バグ発見に役立ちます。
仮組みだけでなく、部品の加工に関しても、無駄な作業をしなくて済みました。
回路設計
全体回路図を以下に示します。

出力信号(LINE OUT, REAR OUT)の出力抵抗(R1~R4)が基板に実装されていないことにご注意ください。基板対パネルのワイヤーハーネスの代わりに、抵抗器で基板とRCAジャックをつないでいます。基板(BD4 CC-218 VOL)の回路図に出力抵抗がないのはこのためです。
以下、基板ごとに回路設計を行います。
BD1: CC-218 DISP
ディスプレイ基板です。
3個の7セグメントLED(以下、7セグと略す)とディスプレイ・コントローラーICを搭載します。
[CC-218 DISP 仕様書: CC-218_DISP_Spec.pdf]
ディスプレイ・コントローラには Austria Microsystem の AS1115 を採用しました。パッケージは QSOP-24 です。8桁までの7セグの制御と、16個までのスイッチの読み取りができます。スイッチの読み取りは簡単そうでいて、チャタリング除去など結構面倒な処理が必要となります。AS1115はチャタリング除去を行った上で、スイッチの状態に変化があったことを割り込みでMCUに伝えます。MCUはスイッチの状態を監視しなくて済みます。
7セグには橙色のものを採用したかったのですが、「外観設計」の項で述べた通り、平凡な赤色にしました。Broadcom の HDSP-H153 です。
本基板のブロック図を以下に示します。

数字表示の最上位桁(Dig-2)は、マイナス記号 '-' (Seg-g)と小数点 '.' (Seg-dp)しか表示しません。
Dig-2 の Seg-a は PHONOインジケーターに、Seg-b は DACインジケーターに、Seg-c は AUXインジケーターに使用します。
コネクターPL101は、制御基板(CC-218 MCU)から制御信号を受け取るとともに、DC電源の供給を受けます。
下図が本基板の回路図です。

LED の電流制限抵抗 R4 は 12kΩ としました。IF=40mAとなります。大きな電流のように見えますが、LEDの光はステッカー(ST1,ST2)を透過するし、デューティー比が 33% なので、これぐらいは必要ではないかと思いました。
セレクター・スイッチ(SW2)にロータリーSW(フジソク SRF113-Z)を使用していますが、これはノンショーティング・タイプです。接点のオン/オフ状態を読み取るのに、Nキー・ロールオーバー機能は必要ありません。従って、電流逆流防止用のダイオードは省略しました。
BD2: CC-218 IND
セレクター・インジケーター基板です。
3個の LED のみを実装するシンプルな基板です。
CC-218 の基板の中で、唯一万能基板を用います。


BD3: CC-218 MCU
制御基板です。
マイコンチップ(MCU)とリレー・ドライバー、バリオーム・インターフェースなどを搭載します。
[CC-218 MCU 仕様書: CC-218_MCU_Spec.pdf]
マイコン・チップには、PIC18F2520 を採用しました。選定理由は、「主要部品・材料」の項で述べた通りです。パッケージは 28P DIP です。

リレー・ドライバーには、Good-Ark Semiconductor社の GSF2301 という P-ch MOSFET を採用しました。オン抵抗が110mΩが低いのと、保護ダイオード内蔵で、使いやすいMOSFETです。単価が44円と、安価なのも利点です。
バリオーム(VR1)には10kHzの方形波を出力します。マイコンのPWM機能を用いて発振させます。バリオームの接点寿命を延ばすために、カップリング・コンデンサーを用いて直流成分を除去して出力します(AC結合)。バリオームで分圧した電圧は、整流・平滑した上でマイコンのアナログ入力端子に供給します。
赤外線受光器(IRレシーバー)には、Vishay の TSOP34838 を選びましたが、これは良い選択ではありませんでした。これは生産終了間近の古いタイプで、TSOP34438
という改良型を採用すべきでした。TSOP34438 の方が、インバーター蛍光灯などから出る赤外線雑音に強い設計となっています。
2025年4月現在3か月程使用していますが、動作は安定しています。同じ部屋で使用しているエアコンのリモコンの方が、よっぽどエラーが多いです。両者はピンコンパチなので、今からでも差し替え可能ですが、その必要はなさそうです。
本作品の設計開始時には、赤外線リモコンの仕様がほとんどわからない状況でしたが、[文献-42, pp263-274] を参考にして、このIRレシーバーを選定しました。これで全ての日本製テレビリモコンの赤外線信号を受信できます。
[文献リスト]

整流回路には、単電源、rail-to-rail タイプのOPアンプ LMV358IDR を使用しました。整流ダイオードのVF(順方向電圧)による電圧降下を避けるために一工夫しました。
本基板のデバッグは、Micro-Cap Ver.12 によるシミュレーションで行いました。
[回路設計資料: CC-218_MCU_CircuitDesign.pdf]
BD4: CC-218 VOL
セレクター/ボリューム基板です。
電子ボリュームチップ(PGA2310)とセレクター用リレーなどを搭載します。本作品中唯一のデジタル/アナログ混載基板です。
[CC-218 VOL 仕様書: CC-218_VOL_Spec.pdf]

セレクターはシャント方式で、オーディオ信号は接点を通過しないようになっています。選択しないソースの信号を GND (グラウンド)に落とすことで、出力されないようにします。
スイッチに半導体を用いる方式(アナログ・スイッチ)も検討しましたが、良さそうなデバイスを見つけることができず、シャント方式に落ち着きました。
下の回路図は Rev.B のものです(最終レビジョン)。測定中に発見した不具合を2度修正し、Rev.Bとなりました。

セレクター用のリレーには、オムロン G5V-2 ミニリレーを採用しました。低オン抵抗の MOSFET を使用することも検討しましたが、リレーは極性がなく使いやすいので、採用しました。経年劣化は覚悟の上です。オン抵抗が増すとソース間にクロストークが発生しますが、複数ソースを同時再生した時のみの問題なので、妥協できると判断しました。
過去の作品(PA-210)ではマイクロリレーを採用しましたが、これは思い違いによるミスでした。単純に、小信号のスイッチングには小さいリレーが向いていると思い込んでいたのです。
リレーの接点は、流す電流が小さすぎても寿命が縮まります。オーディオ信号の電流は、一般的にかなり低い値です。例えば、1Vの電圧を10kΩの負荷にかければ、電流は0.1mAです。実際にこれより大きな電流が流れることは稀です。オーディオ信号切換え用のリレーは小電流に耐えうるものでなければなりません。
マイクロリレー G5V-1 の電流範囲は1mA~1A です。これに対して、ミニリレー G5V-2 は10μA~2mA です。このように、大きめのリレーの方が許容電流範囲が広く、小電流に耐えます。こういった根拠で、G5V-2
を採用しました。
G5V-2 の接触抵抗は、データシート上50mΩとなっています。その値でソース間クロストークを計算すると、約-94dBとなります。接点の経年劣化が進むとこれより悪い値となります。アンプマニアの方々からは物足りないと言われそうですが、アンプマニアではない私としては、過剰性能を追求するつもりはなく、これで満足です。
[回路設計資料: CC-218_VOL_CircuitDesign.pdf]
改良の概要は次の通りです。詳細については「調整と改良」をご覧ください。
Rev.A: DC電源ラインにノイズフィルターを入れ忘れていたので、追加しました。GND配線をバスバー方式からベタGNDに変更しました。
Rev.B: 出力バッファーにLPFを追加しました。PCBの変更は必要ないので、PCBは Rev.A のままです。
U7(PGA2310):P7(SDO)を PL401:P6 に接続してますが、これは勘違いによるミスです。SDO(Serial Data Output) は、複数の PGA2310 を用いる時に、他の PGA2310 の SDI(Serial Data Input)に接続します。MCUに接続しても意味ないので、MCUではこの信号を無視しています。
BD5: CC-218 EQ
MC型カートリッジ専用フォノイコライザー基板です。
超低雑音OPアンプ LT1115 とパッシブ・フィルターを組み合わせています。ゲインを業界標準より高めの 66dB(@1kHz)としています。
[CC-218 EQ 仕様書: CC-218_EQ_Spec.pdf]

この回路は、私のオリジナルではなく、LT1115 のデータシートに応用例として掲載されているものです。2段目のゲインを+10dB上げているところが相違点です。また、応用例では当然のことながらすべて LT のOPアンプを使用していますが、初段以外は TI の LME49860 を使用しました。
出力は、BD4(CC-218 VOL) に送るだけでなく、バッファー(ボルテージ・フォロワー)を介してバックパネルのRCAジャック(J3, J4)にも出します。本作品は、フォノEQ としても使用できます。

EQ素子(RIAA network)に用いる抵抗の許容誤差は1%、コンデンサーは5%です。それぞれ E24系列とE12系列から選ぶので、計算値とずれてしまいます。少しでも計算値に近づけるため、抵抗は2個直列、コンデンサーは2個並列にしました。それでも若干のずれはあるので、シミュレーションで特性を確かめました。
下図のシミュレーションでは、入力信号に RIAA 準拠のエンファシスがかけてあります。出力がフラットになれば正しい特性といえます。。

RIAA 偏差は -0.045dB~+0.023dB (20Hz~20kHz) となりました。上々の出来です。
OPアンプにはオーディオ用のものを採用しましたが、受動部品についてはオーディオ用以外のものも使用しています。
抵抗器はタクマンのオーディオ用金属皮膜抵抗(REYシリーズ)を採用しましたが、すでに生産を終了していて入手困難な抵抗値がありました。代替品として、KOA
の一般用金属皮膜抵抗(MF1/4C)を使用しました。両者のスペックは大差ないですが、タクマンの方はリードにOFC線を使用しています。
EQ素子として用いるコンデンサーとして、東信工業のポリプロピレン・コンデンサー(UPZシリーズ)を採用しました。ただ、容量が大きめのもの(0.47uF,
4.7uF)はパナソニックのメタライズド・ポリエステル・コンデンサー(ECQEシリーズ)を使用しました。これには深い理由はなく、フィルム・コンデンサーで許容誤差5%、耐圧50V以上、かつ即入手可能なもの、という条件で探した結果、このコンデンサーに行きつきました。
Vishay のオーディオ用抵抗や、WIMA のオーディオ用コンデンサーを使えばマニア受けしたかもしれませんが、最近私はオーディオ用部品にあまりこだわらなくなりました。
Rev.A について:
ECQEは100V耐圧で良かったのですが、入手にかなり時間がかかりそうだったので、250V品を選びました。寸法がかなり大きく、すでに発注済みのPCB(PCB5)に取り付けるのが難しいので、250V品が取り付けられるようにPCBを変更しました。コンデンサーよりPCBの方が変更しやすいというのは変な話ですが、実際にそう感じました。このPCBの値段は送料込みで3,200円程で、オーディオ用コンデンサーを10個買うのとそれほど差はありません。経済的にも、負担を感じませんでした。
[回路設計資料: CC-218_EQ_CircuitDesign.pdf]
PCB設計
PCB1: CC-218 DISP
IC 1個、7セグ 3個、コネクター 3個のシンプルな基板なので、簡単に設計できるとなめてかかっていたのですが、とんでもない思い違いでした。なんと5か月もかかってしまいました。初めてのPCB設計だとは言え、これほど手こずるとは予想していませんでした。
QSOP-24 の AS1115 はピンピッチが0.4mmしかなく、その周りにパターンが密集するので、スルーホールどころかビアを打つのも難しいのです。裏面の面積の大半は7セグに占拠され、パスコンを
AS1115 の近くに配置できないという問題もありました。
最初に考えたのは、CAD (DesignSpark PCB)の自動配線機能を使い、もしつながらないネットが残ったら、そこだけ自分でパターン設計を行うというやり方でした。このやり方は通用しませんでした。
実際に自動配線ではつながらないネットがありました。コンピューターが考えてもつながらないのですから、私が考えても無駄でした。一本パターンを通そうとすると、他のパターンをどかさなければならず、そのパターンをどかすためにはさらに別のパターンをどかすといった具合で、結局最初からやり直すことになってしまいました。
結局、どうしてもパターンが入りきらないので、基板の寸法を変更しました。縦の長さを 8mm 延長しました。
![]() |
PCB1: CC-218 DISP の寸法図 (変更後) 縦の長さを 32mm から 40mm に変更 |
電源ラインのパスコンを AS1115 付近に取り付けるために、裏ワザを用いました。パスコンを AS1115 の上を跨ぐように取り付けます。
![]() |
パスコンを、AS1115を跨ぐように取り付ける。 AS1115付近に +5V と GND のパッドを設け、そこにパスコンをハンダ付けする。 |
PCB 設計の詳細については、下記のPDFをご覧ください。
[PCB設計資料: CC-218_DISP_PCB.pdf]
以下の画像は、PCB CAD に生成させた完成予想図です。
![]() |
![]() |
PCB CAD による完成予想図 - CC-218 DISP (表面) | PCB CAD による完成予想図 - CC-218 DISP (裏面) |
PCB3: CC-218 MCU
PCB1と比べ、部品点数がずっと多いのに面積は少し大きいだけの基板なので、PCB1以上に手こずると予想していたのですが、以外に順調に設計が進みました。約5週間で設計を完了しました。PCB設計に習熟してきたためです。
[PCB設計資料: CC-218_MCU_PCB.pdf]
![]() |
![]() |
PCB CAD による完成予想図 - CC-218 MCU (表面) | PCB CAD による完成予想図 - CC-218 MCU (裏面) |
PCB4: CC-218 VOL
初めてアナログ回路を搭載するPCBを設計します。設計ルールを変えようかどうか検討しましたが、ほとんど変えないことにしました。変更した点は、アナログ信号用とアナログGND(AGND)のパターンの幅をデジタルのそれよりも太くしたことです。信号は 0.2mm (デジタル信号用は 0.152mm)、AGNDは 1.8mm (DGNDは 0.5mm か 1.2mm)としました。
アナログGNDの引き回しは入念に設計しましたが、パターン幅1.8mmではインピーダンスが充分に低くないので、1mm径のスズメッキ線で裏打ちすることにしました。
![]() |
AGND を裏面に配置し、そのパターン上のレジストの一部を除く。レジストを除いた箇所にスズメッキ線をハンダ付けする。 この実装方法は不採用としました。 |
OPアンプの入力端子付近にはガードリングを設けるべきです。そこで、表面の空きスペースをベタパターンとし、その電位をガードGND(GGND)と定めました。GGNDとAGNDは、1点で接続します。
このAGNDとGGNDの設計は、本PCBを Rev.A に変更する際にやめました。Rev.Aの目的はAGNDに関するものではなかったのですが、BD5(フォノEQ基板)でAGNDをベタパターンにしたところ良好な結果が得られたので、本基板もAGNDをベタにすることにしました。
Rev.A:
DC電源ライン ±24V にノイズフィルターを追加。部品は全てSMD(表面実装部品)とし、コネクター PL402、PL403付近の裏側に実装。
[PCB設計資料: CC-218_VOL_PCB.pdf]
![]() |
![]() |
PCB CAD による完成予想図 - CC-218 VOL Rev.A (表面) | PCB CAD による完成予想図 - CC-218 VOL Rev.A (裏面) |
PCB5: CC-218 EQ
入力感度 0.3mV という高感度アンプなので、いくら回路設計が良くても PCB がダメならノイズだらけ、歪だらけになってしまいます。設計時にはプレッシャーを感じました。特に悩んだのが
GND の引き回しです。いっそのことベタGNDにしたらどうかと考えました。微小信号を扱うアンプでは、 GND 電位が 1μV 変動したら、耳につく雑音が発生してしまいます。超低雑音アンプには大地のように不動のGNDが必要です。
一つ心に引っかかっていたのは、かつて先輩から教わった教訓です。それは、低周波増幅回路にベタGNDを使ってはいけないという教訓です。理由は、1)
複数の増幅段から流れ込む電流がGND内で重なる、2) 迷走電流がGND内に流れる、3) GND内に渦電流が発生する、4) 信号パターンとGNDパターンの間の浮遊容量が増加し、高域で位相変位と減衰が起きる、といったことです。
1) の問題点はGND内インピーダンスが共通インピーダンスとなって、回路間にクロストークが発生することです。しかし、ベタGNDのインピーダンスは充分低く、クロストークは完全に無視できるレベルと考えられます。
2)と3) は信号の波形歪の原因となると考えられますが、問題となるほどの大きさの歪が発生することは考えにくいです。
4) は完全に否定できます。もし可聴帯域で位相変位するほどの浮遊容量が発生するようであれば、デジタル基板にはベタGNDは使えないことになります。ところが、ベタGNDはほとんど全てのデジタル基板に使われているテクニックです。ただし、増幅段の出力インピーダンスが高い場合は浮遊容量の影響が出るかもしれません。
[PCB設計資料: CC-218_EQ_PCB.pdf]
![]() |
![]() |
PCB CAD による完成予想図 - CC-218 EQ Rev.A (表面) | PCB CAD による完成予想図 - CC-218 EQ Rev.A (裏面) |
BOMと組立マニュアル
BOM(全体)
[BOM: CC-218_BOM.pdf]
各基板のBOM
[ディスプレイ基板のBOM: CC-218_DISP_BOM.pdf]
[インジケーター基板のBOM: CC-218_IND_BOM.pdf]
[制御基板のBOM: CC-218_MCU_BOM.pdf]
[ボリューム基板のBOM: CC-218_VOL_BOM.pdf]
[フォノEQ基板のBOM: CC-218_EQ_BOM.pdf]
組立マニュアル(全体)
[組立マニュアル: CC-218_Assy.pdf]
各基板の組立マニュアル
[ディスプレイ基板の組立マニュアル: CC-218_DISP_Assy.pdf]
[インジケーター基板の組立マニュアル: CC-218_IND_Assy.pdf]
[制御基板の組立マニュアル: CC-218_MCU_Assy.pdf]
[ボリューム基板の組立マニュアル: CC-218_VOL_Assy.pdf]
[フォノEQ基板の組立マニュアル: CC-218_EQ_Assy.pdf]
![]() |
![]() |
ディスプレイ・モジュールの完成予想図 |
インジケーター・モジュールの完成予想図 |
![]() |
![]() |
ボリューム・モジュールの完成予想図 | ロータリーSW・モジュールの完成予想図 |
ファームウェア設計
本ファームウェアの名称を CC-218 FW とします。
開発環境と使用言語
開発環境(IDE: Integrated Develop Environment)として、Microchip社が無償提供しているソフトを用います。
開発環境: MPLAB X IDE v6.20
コンパイラー: XC8 v2.50 (C言語)
デバッガー/プログラマー: MPLAB PICkit 5 (In-Circuit Debugger/Programmer: インサーキット・デバッガー:
ICD)
ソースコードは全て C で記述します。アセンブラを使わなくて済むように、C では記述できない処理のために、XC8 はディレクティブ(#pragma config 等)やマクロ(CLRWDT()等)を提供しています。
PICkit 5 は、Digi-Keyにて16,378円で購入しました。Microchipストアより安く買えました。
インサーキット(in-circuit)方式とは、ターゲットシステムのマイコンチップを使ってファームを実行する方式です。ファームをデバッグ用にビルドする必要があります。デバッグ版としてビルドすると、ファームにデバッグ用のコードがリンクされます。メモリー使用量が少し増えたり、実行速度が遅くなったりします。
ICE(In-Circuit Emulator)を使えば、ファームに手を加えずにリアルタイムで実行できますが、かなり高くつきます(20万円ぐらい?)。
なお、ここで言う「プログラマー」とはプログラミングをする人という意味ではなく、マイコンチップのフラッシュメモリーにプログラムやデータを書き込む装置のことです。
後述しますが、インサーキット・デバッガーはよほど単純で、割り込みを用いないファームにしか使えません。PICkit 5 の目的は、デバッグよりプログラムの方です。
基本構造
アンプのファームは比較的単純で、高いリアルタイム性も要求されないので、RTOS(Real-Time Operation System)を使わないシンプルな構造とします。いわゆるスタンドアローン(stand-alone)方式です。
ファームはソフトウェアと違い、終了がありません。ターゲット・システムの電源が入っている限り動き続けます。下のフローチャートの左側部分に示す通り、初期化(initialize)を終えた後、無限ループに入ります。この無限ループ内で各タスクを実行します。

このプログラム構造は形式的にはシングルタスクですが、少し工夫すると外見上マルチタスクのように動作します。
各タスク内でイベント待ちをしないようにします。イベントとは、入力ポートの状態の変化や、周辺デバイス(Peripheral)からの割り込み要求を指します。タスク内でイベント待ちを行うと、そのタスクにとどまる時間が長くなり、他のタスクの実行を妨げます。
各タスクの実行前にそのタスクの実行条件が成立しているかをチェックし、成立していない場合は、次のタスクに制御を移します。
無限ループの1周が最大で数十ミリ秒以内に収まれば、あたかもマルチタスクのように動作します。この方式を「擬似マルチタスク」と呼ぶことがあります。
タスク
CC-218 FW は8個のタスクを含みます。
タスク番号 | 名称 | 実行条件 | アクション |
---|---|---|---|
1 | Execute Console Command | コンソールからのコマンド受信 | コマンドを解析して実行 |
2 | Execute Remote Command | リモコンからのコマンド受信 | コマンドを解析して実行 |
3 | Execute Test Program | ファームウェアがダイアグモード(*1)にある時 | テストプログラム(*2)を実行 テスト終了時にダイアグモードを抜ける |
4 | Execute Test Program at Tick | ダイアグモード時にダイアグ・ティック(*3)が発生した時 | テストプログラムを実行 テスト終了時にダイアグモードを抜ける |
5 | Gain Control | メイン・ティック(*4)が発生し、かつVR1(*5) が操作されている時 | VR1の角度からゲインを計算する 電子ボリュームチップにゲインを設定する ゲインを表示する |
6 | Selector Control | メイン・ティック発生し、かつSW2(*6) が操作されている時 | SW2の状態から選択すべきソースを求める セレクター・リレーを駆動する 選択されたソースを表示する |
7 | Muting | ゲイン調整がミューティングモードにあり、かつメイン・ティックが発生した時 | ゲインを減少または増加させる ゲインを表示する |
8 | Display Timeout | 最後にディスプレイの内容が変わってから3秒経過した時 | ディスプレイモードにより、表示を消灯する |
*1: ダイアグモード(Diagnostics mode)は、CC-218 FW の4つの動作モード(他には Stand-alone mode,
Master mode, Balance Adjust mode がある)のひとつ。テストプログラムを実行するモード。コンソール・コマンドでのみダイアグモードに移行する。
*2: テストプログラムは、ハードウェアとファームウェアの動作確認をするためのプログラム。コンソール・コマンドでのみ起動できる。言わば、「隠し機能」である。
*3: ダイアグ・ティック(Diag Tick)は、テストプログラムにタイミングを報せる機能。約1秒間隔で発生する。
*4: メイン・ティック(Main Tick)は、メインルーチン(main())にタイミングを報せる機能。約0.1秒間隔で発生する。
*5: VR1 はボリューム・ツマミによって操作されるバリオーム。
*6: SW2 はセレクター・ツマミによって操作されるロータリー・スイッチ。
割り込み
イベント発生から応答までをごく短時間で行わなければならない場合、割り込みを用います。
PIC18F2520 の割り込みには、2段階の優先度があります。より緊急性の高い割り込み処理には、高優先度割り込みを用います。それ以外は低優先度割り込みにします。
なお、PIC18F2520 は NMI(Non-Maskable Interrupt) をサポートしていません。
低優先度割り込み
ISR(*1) | 要求元 | 要因 | 処理内容 |
---|---|---|---|
UART(*2) Transmit |
UART (EUSART(*3)) |
送信レジスター エンプティ(送信可) | FIFO(*4)が空でなければ、FIFOから1バイトのデータを送信レジスターに移動する |
UART Receive |
UART (EUSART) |
受信レジスター フル(受信済み) | 受信レジスターのデータをFIFOに移動する |
EEPROM(*5) | EEPROM | 書き込み完了 | エラーが生じなかったかどうかチェックする |
IR Error | Timer1(*6) | Timer1 のオーバーフロー(赤外線信号の中断) | IR Remote ドライバー(*7)のステートマシン(*8)をリセットする |
*1: Interrupt Service Routine -- 割り込み処理ルーチン
*2: Universal Asynchronous Receiver/Transmitter -- 非同期シリアル通信を担う周辺デバイス(EUSARTの一部)
*3: Enhanced Universal Synchronous/Asynchronous Receiver/Transmitter -- シリアル通信を担う周辺デバイス(マイコンチップに内蔵)
*4: First-In First-Out buffer (先入れ先出しバッファー) -- UARTドライバーがもつデータバッファー
*5: Electronically Erasable and Programmable Read-Only Memory (不揮発性メモリ) --
電源オフ状態でもデータを保持するメモリ(マイコンチップに内蔵)
*6: マイコンチップが内蔵するタイマー/カウンター
*7: 赤外線リモコンからの信号を処理するデバイス・ドライバー
*8: State machine -- 次の項参照
高優先度割り込み
ISR | 要求元 | 要因 | 処理内容 |
---|---|---|---|
Timer | Timer0(*1) | Timer0 オーバーフロー(1ミリ秒間隔で発生) | ソフト・タイマー(*2)を1減じる |
I2C | MSSP(*3) | 送信/受信の完了 | I2C ドライバーのステートマシン(*4)を遷移させる |
IR Receiver | PORTB(*5) | Timer1 のオーバーフロー(赤外線信号の中断) | IR Remote ドライバーのステートマシンを遷移させる |
*1: マイコンチップが内蔵するタイマー/カウンター
*2: ファームウェア内に定義するタイマー -- ファームでカウントダウンを行う
*3: Master Synchronous Serial Port -- マイコンチップが内蔵するシリアルポート。EUSARTが他のシステム(パソコン等)との通信を目的にするのに対して、MSSPはシステム内の他のデバイスとの通信に使用する。SPIモードとI2Cモードをサポートしている。CC-218
FWでは、I2Cとして用いる。
*4: State machine -- 次の項参照
*5: マイコンチップの汎用入出力ポート
モジュール構成
タスクとISRの定義ができました。これらを単一のソースファイルでコーディングするのには無理があるので、下表のようにモジュールに分割しました。
モジュール | ソースファイル | ヘッダーファイル | 機能 |
---|---|---|---|
MAIN | main.c [v1.00] | main.h [v1.00] | main() を含むメインモジュール |
INIT | init.c [v0.50] | init.h [v0.52] | システムの初期化を行う |
DIAG | diag.c [v0.31] | diag.h [v0.30] | 自己診断プログラム |
CNSL | cnsl.c [v0.12] | cnsl.h [v0.11] | コンソール・サービス・ルーチン (UARTドライバー) |
INTR | intr.c [v0.05] | --- | ISR |
DISP | disp.c [v0.23] | disp.h [v0.23] | ディスプレイ(表示装置)のデバイスドライバー |
VOLM | volm.c [v0.30] | volm.h [v0.30] | VR1の読み取り、ゲイン・データの計算、ゲインの表示 |
REMT | remt.c [v0.10] | remt.h [v0.10] | 赤外線リモコンからコマンドを受信する |
ステートマシン
ファームウェアはイベント駆動型のプログラムなので(event-driven programming)、全体の流れを除けば、実行順序をフローチャートでは表せません。ステートマシン(state
machine: 状態機械)を定義し、状態遷移図で動作を表すのが便利です。
CC-218 FW では、3個のステートマシンを用いています。ここでは状態遷移図のみを掲載します。詳細については設計資料をご覧ください。
[ファームウェア設計資料: CC-218_FW_Design.pdf]
![]() |
I2C ドライバーの状態遷移図 |
![]() |
ディスプレイ ドライバーの状態遷移図 |
![]() |
リモコン ドライバーの状態遷移図 |
設計手順
ファームウェアはハードウェアよりも機能や構造が複雑なので、設計(Design)してから実装(Implement)するという手法では混乱を生じます。特に
CC-218のようにハードもファームも新規設計の場合、どこにバグが潜んでいるかわからないので、ステップ・バイ・ステップ方式で設計・実装・デバッグを同時進行的に実施するのが得策です。
先ずは最低限の機能をもつファームを設計・実装し、それをターゲット・チップに焼いて実行させ、デバッグを行います。それが動くようになったら、ひとつ機能を追加したファームを作成し、同じようにデバッグをします。これを繰り返して完成させます。
各ステップごとにバージョン番号を与えます。
バージョン | 機能 | 確認事項 |
---|---|---|
v0.0 | マイコンチップのPORTCに取り付けたLEDを2秒周期で点滅させる | IDE、PICkit、マイコンチップの動作確認 |
v0.1 | UARTドライバー(CNSLモジュール)を追加し、コンソール(TeraTerm)と接続 | コンソールに内部ステータスを表示 |
v0.2 | I2Cドライバー(DISPモジュール)追加 ディスプレイ・コントローラーを用いて表示を行う 自己診断プログラムも追加 |
表示装置(BD1、BD2)の動作確認 |
v0.3 | VR ドライバー(PWM(*1)とADC(*2))を追加(VOLMモジュール) VR1の電圧値からゲインを計算、ゲイン・データをコンソールに表示 ゲインをBD1に表示 |
ボリュームツマミの角度からゲインおよびゲイン・データ(PGA2310(*3)に設定するデータ)を計算する ゲインの表示 |
v0.4 | PGA2310 にゲイン・データを設定 SW2を読み取り、セレクター・リレーを駆動 |
プリアンプとして使用できるようになる |
v0.5 | コンソール・コマンドを実装 EEPROMに設定データを保存 |
コンソールからゲインとソース選択ができる コマンドにより表示装置の輝度調整などの設定ができる コマンドにより自己診断プログラムを起動できる |
v0.6 | IR Remote ドライバー(REMTモジュール)を追加 | 赤外線リモコンからコマンドを受信して実行する |
v0.7 | DVCS Master モードを実装 | DVCS スレーブ・デバイスにコマンドを送信 |
v1.0 | 完成版 WDTを有効にする(信頼性向上対策) |
CC-218 が仕様書の通りに機能する |
*1: CCP モジュール(マイコンチップに内蔵)の機能の一つ -- 10kHz、デューティー比50%の方形波を生成するのに利用
*2: マイコンチップ内蔵の 12ビット A/D コンバーター
*3: 電子ボリュームチップ
設計手順の詳細については、設計資料をご参照ください。
[ファームウェア設計資料: CC-218_FW_Design.pdf]
![]() | |
[v0.00] 初めてマイコンチップが動く |
[v0.11] 初めてコンソールと通信確立 |
![]() | |
[v0.21] ディスプレイ・コントローラー(AS1115)稼働 |
[v0.32] ボリュームツマミの角度からゲインとゲイン・データを計算 (Tera Term ログ) |
[v0.50] 試聴開始 |
[v0.60] 赤外線リモコン使用可 |
デバッグ方法
ファームウェアのデバッグ方法は、プログラミングの教本には書かれていないのではないかと思います。ソフトウェアのデバッグのように、デバッガーを使い、ブレークポイントを設定し、ブレークしたらワンステップ動作をさせるとか、変数の値を表示させるとかといった方法は、イベント駆動型でリアルタイム性が要求される組込みシステムでは通用しません。
あまり一般論的な解説をこのホームページの中でするつもりはないのですが、ファーム設計やそのデバッグはオーディオファイルの方々には知られていないことと思いますので、少しだけ解説します。
ファームウェアのデバッグで有効なのは、コンソールをターゲット・システム(CC-218)に接続し、コンソール画面上にイベントやステータスを表示させる方法です。コンソールと私が呼んでいるのは、パソコン上で動作するターミナルソフトのことです。私は
Tera Term 5 を選択しました。
Tera Term と接続するには、RS232C 仕様のシリアル通信を可能にする必要があります。マイコンチップに内蔵されている UART を用います。CC-218
では、UART の入出力は DVCS端子に接続されています。
コンソール送るメッセージを自前で生成するのは大変なので、標準ライブラリの中の printf() 関数を使用します。
printf() を使用可能にするには、一文字出力ルーチン putch() を作成する必要があります。printf()はputch()をコールしてテキストを送信します。putch()
はハードウェアに依存するため、ユーザーが書く必要があります。putch() のテンプレート(ひな型)は XC8 をインストールしたフォルダのサブフォルダ内にあります。このテンプレートを自分のソースファイルにコピーして、中身を記述します。私は
CNSLモジュールのソースファイル(cnsl.c)に貼り付けました。
![]() |
![]() |
putch() のテンプレート |
putch() の実装例 (XC8 のマニュアルより) |
右上の例は採用できません。なぜならば、送信レジスターが空くのを待つからです。イベント待ちをしてしまうと、putch()の実行時間が長くなります。ひいては
printf() がなかなか終わらず、printf()をコールしたタスクも実行時間が長くなります。これではリアルタイム性が確保できません。
putch()の中では、送信すべき文字を送信FIFOバッファに放り込み、割り込みを許可するだけとします。後は UARTドライバーに任せます。
下図は CC-218 FW の putch() です。ルーチンの始めに送信FIFOバッファに空きができるのを待つ while() 文がありますが、これは万一の場合を考慮して追加したものです。通常この
while文はループすることなく通過します。
![]() |
putch() の実装 (CC-218 FW) |
![]() |
printf() 使用例 |
printf()は非常に便利な関数ですが、メモリを消費します。XC8の場合は、約11KBです。PIC18F2520 のプログラム・メモリは32kBなので、printf()はその約1/3を占めます。どうしてもメモリが不足する場合は、printf()は使わず、自前でもっと簡素な関数を作成する必要があります。
CC-218 FWでは、プログラム・メモリの使用率は 86% に収まったので、引き続き printf()を使っています。
Tera Term にはタイムスタンプ機能とログ機能があります。この二つの機能を有効にして、ログを保存しておくと、後々まで役に立ちます。
![]() |
Tera Term ログの例 -- CC-218 FW オープニング・メッセージ |
赤外線リモコンの仕様
アンプを自作する方々の中で赤外線リモコンを導入している方は少ないと思います。老婆心ながら、赤外線リモコンのインターフェースに関しても少々解説したいと思います。
日本企業は閉鎖的なので、赤外線リモコンの仕様については明らかにしていません。情報を探している時に、ある文献を見つけました(文献-42、pp.
263-274)。これに日本製赤外線リモコンの仕様の概要が説明されています。「家電製品協会フォーマット」という統一仕様があるということと、Vishay
や NEC が IRレシーバーを生産しているという情報が書かれていました。[文献については文献リストをご覧ください]
この文献は古く(2005年)、現在の実情には合っていないことが後にわかりましたが、Vishay のIRレシーバーが使える、ということだけははっきりしました。
Vishay のデータシートを見て TSOP34838 を採用しました(前述のように、改良型の TSOP34438 を採用するべきでしたが)。この
TSOP34838 の出力波形を見て、どのようなコードが使われているかを判断することにしました。
![]() |
IRレシーバー出力波形 SONY RM-PZ3D の「大」ボタン(VOL+)に対する信号 |
この波形を見て、どのようなコードが使われているか察しがつきました。
このコードを数値化して、コンソールに報告するルーチンをファームに組み込みました。そのルーチンを用いて、リモコンの各ボタンを押したときのコードを表示させた時のログを下図に示します。
信号波形を見ると、12ビットのコードが出力されているように見えましたが、よく見ると上位4ビットは常に'0'であることが分かりました。下位8ビットだけでボタンを識別できるので、コンソールに表示するのも下位8ビット(1バイト)だけにしました。
![]() |
Tera Term ログ -- SONY RM-PZ3D の各ボタンに対するコード この時だけタイムスタンプ機能を無効にした |
保存したログファイルから、上図の部分をコピーし、CC-218 FW のソースファイル(remt.c の remtGetCommand())に貼り付けます。編集し定数の配列とします(下図参照)。
受信したコードをこのテーブル(配列)と照合し、どのボタンが押されたかを識別します。
![]() |
CC-218 FW ソースファイル -- remt.c 内の remtGetCommand()関数 ログファイルからコピペしたデータを編集して、コマンド・コード・テーブルを作成 |
PIC18F2520の問題点
PIC18F2520 自体に問題はなかったのですが、データシートの品質がやや低いのが気になりました。
私は、アメリカの大手半導体メーカー(Texas Instruments や Analog Devices 等)のデータシートに、スペルミスを含めて誤りを見つけたことはありません。それに対して、Microchip
社(イギリスのメーカー)のデータシートには単純な誤記が散見されるし、曖昧な表現も見受けられます。そのうちの特に悩まされた1点を指摘したいと思います。
「7.8 Using the Data EEPROM」の記述には、EEPROM 中の頻繫に書き換えないデータはリフレッシュが必要であることと、そのようなデータはフラッシュメモリーに保存すべきと書いてあります(下線部分)。その下の「Note」欄には、滅多に書き換えないデータはリフレッシュする必要はない、という意味の記述があります。まるで逆のことを言っているように見えます。
![]() |
PIC18F2520 のデータシートから抜粋 |
この記述の真意は次のようなことです。
EEPROM の性質上、あるアドレスに書き込みを行うと、他のアドレスにも影響を与えます。例えば、EEPROM 内に A と B という2つのデータを格納したとします。A
を書き換えないまま B を数多く書き換えると、A が化けます。 スペック D124 を見ると、百万回(min)とあります。つまり、A を書き換えないまま
B を百万回以上書き換えると、A が化ける恐れがあるということです。
データシートのこの説明で引っかかるのは、EEPROM が変数の格納エリアとして使われることを前提としている点です。PIC18F2520 の場合、EEPROM はデータメモリ(RAM)と異なるアドレス空間に配置されています。EEPROM をアクセスするためには、EECON1、EECON2、EEDATA、EEADR といった SFR(Special Function Register)を使う必要があります。少なくとも C言語 でコーディングする限り変数エリアとして使用することはあり得ません。
CC-218 FW では、LED の輝度や表示モードなどの設定データを EEPROM に保存します(これが EEPROM の本来の目的のはずです)。データを書き換えるのは、ユーザー(私自身)が設定を変更したときだけです。 一生かかっても百万回以上書き換えることはありません。CC-218 FW では、EEPROM のリフレッシュは行っていません。
製作
加工、組み立てはマニュアル通りに行いました。
金属加工
[金属部品加工図: CC-218_Metalwork.pdf]
シャーシの加工 |
パネルの加工 |
バーナットのネジ立て | 加工が終わった金属部品 |
木製部品、樹脂製部品の加工
[非金属部品加工図: CC-218_Woodwork.pdf]
ツマミの加工 止めネジ用の穴をあけているところ |
アクリル板の加工 アクリル板がひび割れないように、慎重に作業をする φ1.5, φ2.5, φ5, φ8, φ10mm のドリルを使い、少しずつ広げていく |
仮組み
[仮組みマニュアル: CC-218_PreAssy.pdf]
仮組み中 やすりで寸法誤差を修正しながら組み立てる |
仮組み中 バックパネルの寸法が少し大き過ぎたので、電動ジグソーで1.5mm ほど切り詰めているところ |
仮組み中 フロントパネルの取り付け |
仮組み完了 斜め後ろ |
仕上げ
[仕上げマニュアル: CC-218_Finish.pdf]
塗装 トップパネルとサイドパネルを自動車用スプレー塗料でシルバーメタリックに仕上げる |
フロントパネルのステッカー プリンターで印刷した後、不要部分をカットしたところ |
組み立て
組み立て全般のマニュアル:
[組立マニュアル: CC-218_Assy.pdf]
ワイヤーハーネス
[ワイヤーハーネス設計資料: CC-218_Design_WireAssy.pdf]
ワイヤーハーネス製作 WH8 AnalogPower 製作中 |
ワイヤーハーネス製作 WH8 AnalogPower 完成 |
モジュール
各モジュールの組み立て手順は、全体の組み立てマニュアルに記載されています。
[組立マニュアル: CC-218_Assy.pdf]
モジュールの組み立て VR モジュール(左)と Rotary SW モジュール |
基板
本プロジェクトで初めてPCBを導入し、それに伴って初めて SMD(Surface Mount Device: 表面実装部品)を採用しました。
SMDの中でも、QSOP-24 に収められている AS1115 の取り付けにはコツがいります。QSOP のピンピッチは 0.4mm で、ピンとピンの隙間は僅かに
0.2mm しかありません。
その道のプロならば、ハンダごてであっという間に付けてしまいます。しかも、まるでリフローで付けたかのように、きれいに仕上がります。しかし、プロの技がなくとも何とかなります。
- (1) ハンダの量は少なくする。0.5mm径以下の細いハンダを使うと良い(私は1mm径を使いましたが)。
- (2) ハンダブリッジができても気にしない。
- (3) 時間をかけずサッと行う。こて先を長く当て続けると、パッドが剝がれる恐れがある。
- (4) ハンダブリッジを吸い取り線で吸い取る。
上記のようにやれば上手く行くはずでしたが、不器用な私は見事に失敗してしまいました。作業中に IC の位置がずれてしまいました。一度ハンダ付けすると、特殊な工具を使わない限り取り外すことができません。結局
PCB も AS1115 も破棄することになりました。
PCB も IC もスペアがあったので、気を取り直してもう一度トライしました。今度は何とかなりました。DMM で導通チェックをやり、ちゃんとハンダ付けができていることを確認した時には、ほっと胸をなで下ろしました。
[ディスプレイ基板の組立マニュアル: CC-218_DISP_Assy.pdf]
BD1:CC-218 DISP の組み立て AS1115(ディスプレイ・コントローラーIC)を取り付けたところ |
BD1:CC-218 DISP の組み立て 完成 - 表面 |
BD1:CC-218 DISP の組み立て 完成 - 裏面 |
[インディケーター基板の組立マニュアル: CC-218_IND_Assy.pdf]
BD2:CC-218 IND の組み立て 完成 - ワイヤーハーネスと取り付けネジも実装済み |
[制御基板の組立マニュアル: CC-218_MCU_Assy.pdf]
BD3:CC-218 MCU の組み立て 完成 - 表面 |
BD3:CC-218 MCU の組み立て 完成 - 裏面 |
[ボリューム基板の組立マニュアル: CC-218_VOL_Assy.pdf]
BD4:CC-218 VOL の組み立て 完成 - 表面 (Rev.A) |
BD4:CC-218 VOL の組み立て 完成 - 裏面 (Rev.A) |
[フォノEQ基板の組立マニュアル: CC-218_EQ_Assy.pdf]
BD5:CC-218 EQ の組み立て 完成 - 表面 やはり 4.7uF のコンデンサーがでかすぎますね |
BD5:CC-218 EQ の組み立て 完成 - 裏面 抵抗が1本裏面についているが、PCB設計に問題があったため、表面に付けられなかったもの |
全体
[組立マニュアル: CC-218_Assy.pdf]
測定と改良

書きかけです。もうしばらくお待ちください。
残留雑音
設計段階では極小の残留雑音を期待したのですが、現実は甘くありませんでした。
色々と対策を実施することで、最終的には満足のいくレベルまで雑音を減らすことができました。
AC/DC コンバーターの不具合
AC/DC の交換
高周波雑音1
ACラインからの雑音 ==> DCラインノイズフィルター
高周波雑音2
PGA2310 からの雑音 ==> 出力フィルター
SG-FG 接続
インジケーターの調整
自己評価
外観
本作品で最も注力したのが外観設計でした。
現物は完成予想図ほどカッコ良くないかな、という気もしますが、概ね気に入っています。近くから見るとアラが見えますが、遠目ではなかなか良いと思います。
点数をつけるとすれば、85点 といったところです。
着せ替えアンプ
本作品のこだわりの一つが「着せ替えアンプ」です。フロントパネルを簡単に交換できるようにしたため、その時の気分に合わせてデザインを選べます。
外観上の問題点
苦手な塗装で、またしてもポカをやってしまいました。今のところ再塗装する予定はありませんが、気力が回復したらやってみるつもりです。
音質
使い勝手
その他
まとめ