次期アンプBA3886を作っている途中で、それまでは「生涯しないだろう」と思って居たことをした。回路シミュレータを使ったり、回路にパッチを当てたりした。あと、以前書いた 壊れた回路の修理も、以前の僕にはとてもできないことだ。
修理の件は前の投稿に書いたとおりなので、ここではシミュレーションとパッチの話を書く。
回路シミュレーション
発端は、アンプキットのオプションのDCサーボ基板(以下、サーボ基板、サーボ回路)の動作が何かおかしい気がしたことである。現象としては、サーボ基板を付けると、超低域(例: 30Hz以下)の歪みが増大することがあるのだ。
それでメーカーの方に問い合わせたのだが、解決しなかった。先方は回路には問題ないというスタンスで、最初からこちらの測定方法などを疑っていて、ある機材がないと分からないと言い張って居た。こちらでもいろいろ試した結果、最終的には回路には問題なさそうなことが分かったのだが、最初から現象を否定され※、その割には先方からは証拠(測定値やグラフ)が一切提示されなかったので、回路の正当性・妥当性に疑念が起こった。
最終的にはコミュニケーションの問題なのだが、技術者なのだろうから、ただ「こっちには問題ない」と言うだけでなく、客観的に説明して欲しいと思った。自分でキットを開発したあとで何かしら測定して検証したはずで、その資料はないのだろうか? もしかして測ってない????
その点、前に書いた電源関連部品メーカーの方はちゃんと証拠を出してくれたので、安心できたし納得できた。
※回路は正しいが、現象がないとは言えない。再度検証する予定だ。
回路図を見ると、入力のローパスフィルタに互いに逆方向に繋がったダイオードが2本入っていて(→ 参考)、見慣れない使い方だが、振幅を1V程度(VF)に制限しているようだ。ただ、そこで制限すると、サーボ回路に入る波形が歪み、それがアンプにフィードバックされるので、結果的に出力にも歪みを生じるのではないかと考えた。
サーボ基板に関して もう一つ疑問があった。それは、僕はアンプのゲインを標準から下げるためにフィードバック回路の抵抗値を変えているが、サーボ基板からフィードバック回路に出力する抵抗(以下、出力抵抗)をゲインに合わせて変えなくていいのかというものだ。メーカーに質問したら問題ないと言われたが、やっぱり詳しい説明がないので、どうしてかは分からなかった。
出力抵抗での対応から、ダイオードについて聞いても埒が開かないと思い、実際の回路で波形・特性を確認しようと思ったが、うまくできるか不安かつ線を付けるのが面倒だったので、使ったことはないけど回路シミュレータを使ってみることにした。検索してみたら、"Circuit Simulator Applet"という(そのまんまの名前の)、webブラウザで動く すごく手軽なものがあった(実際に使うなら、画面の大きいこちらが良い)。
回路シミュレータはSPICEというのが標準らしく、フリーのものもあるのだが、なんか面倒・取っ付きにくそうだった。僕のような趣味レベルの者には上述のものがすごく便利だ。
一目見たら 僕でも容易に使えそうだったので、ちょっと簡単な回路を試したら本当に動いた。それで、疑問のあったサーボ回路をシミュレートしてみた。
最初はサーボ回路の入力部のダイオードと抵抗とコンデンサの回路でシミュレートした。
- サーボ回路の入力部のシミュレーション: 40Hz, 0.5V, ダイオードあり
- 同、2Hz, 1.5V, ダイオードあり
- 同、2Hz, 1.5V, ダイオードなし
入力の周波数や振幅を変えて動かしてみると、予想どおり、超低域(2Hz)で振幅が大きい(1.5V)場合に波形が歪んだ(図の左下のグラフ)。もちろんだが、ダイオードを外せば波形は歪まない。次に、実際のサーボ基板同様にオペアンプも含めてシミュレートしてみたが、同様の結果になった。
- サーボ回路のシミュレーション: 2Hz, 1.5V, ダイオードあり
- 同、2Hz, 1.5V, ダイオードなし
僕はハードは素人だし回路の意図も分からないし、検索しても似たような回路が出て来なかった※から、この回路が「余計なこと」をしているのではないかと思った。
※その後、検索に出て来て解決に繋がった。 (後述)
それで、実際にサーボ基板のダイオードを外して試してみた。しかし、超低域の歪みはほとんど変わらなかった。それで、上にも書いた、出力抵抗も「おかしい」のかも知れないと考え、実際のサーボ基板とアンプ基板の回路をシミュレートしてみた。図の上半分がアンプの回路、下半分がDCサーボの回路(それぞれ概略)である。
- アンプ全体のシミュレーション: DCサーボ回路からダイオードを除いた場合
- 同、DCサーボ回路の出力抵抗を変えた場合
すると、オリジナルの出力抵抗ではオフセットが除去できない(0.2Vの直流入力が出力に約1.5Vで出ている)という結果になった。※ それで、出力抵抗をアンプと同じ値にすれば除去できる(同じ入力で出力は-59mV)ことが分かった。
※その後、長時間掛ければ除去できることが分かった。
実際の基板で試したところ、オフセットがないのは当然ながら、期待どおりの特性になり、超低域の歪みの増大が解消できた。 (グラフ: 紫) 「僕の考えが正しかったぞ!」と思って喜び勇んで試聴したのだが、なぜか耳閉感や圧迫感が起こった。疲れかと思って何度かサーボ基板を着脱して試したのだが、付けると途端に駄目になった。
- サーボ基板と改造後の歪みの比較: 赤: オリジナル, 紫: 改造後
- サーボ基板と改造後の位相の比較(低域の拡大): 黒: 基準(DAC-ADC直結), 赤: オリジナル, 紫: 改造後
気になったのは、改造後の特性では位相が ずれる範囲が大きくなっていた(グラフ: 紫, 実際のずれは黒との差)ことだ。超低域以外では ずれの量は数°と大きくないが、200Hzくらいまでずれていた。どうしてかは分からなかったが、出力抵抗をオリジナルの値に戻すと直ることが分かった。
書いたあとで思うが、超低域で位相が大きく(10°以上)ずれるのが良くないのかも知れない。ただ、部屋の特性補正に使っているイコライザの位相ずれは もっとひどい(量が多く、変化が単調でない)ので、位相は関係ない気もする。
が、それでも聴いてみると駄目だったので、一旦サーボ基板は諦めた。
ところが、少しして、アンプIC(LM3886、以下3886)のオフセット調整について調べていたら※、同じICを使ったアンプでダイオードが使われているDCサーボ回路が見つかった。
※サーボ基板はアンプの出力のオフセットを補償する(0にする)もので、ないとオフセットが数mV出るため、以前のアンプでのように、可能な範囲で手で調整したいと考えた。
ということは、サーボ基板の回路が正しい可能性が出て来た(高い)ので、外したダイオードを付けて試したら、悪くなかった。おそらく、ダイオードで調整量(直流を含む、超低域の削減量)を制限することで、振幅が大きく変わって音に影響が出るのを防ごうとしているのではないか。だから、調整を行っている超低域の振幅が大きい時に歪みが増えるのは、ダイオードでの振幅制限によって補正信号が歪んでいるのだから、当然のことだと想像する。
また、出力抵抗については、あくまでも勘だが、改造後の小さい値だとオフセットの調整・補正は速いが、そのために本来の音の変動も激しくなって音質に影響が出るのではないかと考え、元の値(ゆっくり調整すると想像している)に戻した。すると、それからは(耳が不調の時を除いて)耳閉感や圧迫感が起こらなくなった。
結局、(理屈は不明ながらも、)メーカーの方の言うとおり、オリジナルの回路のままで問題ないことが分かった。
まあ、「素人考えは うまく行かない」という実証になったが、手軽に使えて結構複雑な回路も作れるシミュレーターが見付かり、ちゃんと実際の動作に・が合うことが分かったのは収穫だった。(使う羽目には なりたくないけどw)今後も使えそうだ。
そう言えば、つい最近も3886のフィードバックの超高域安定化回路の検証に使った。ゲインを変えているため、その部分が変更前と同様に動くか確かめた。データシートに式が載って居るのだが、カットオフ周波数の計算式に不明な項s※があって計算できないので、シミュレーターが便利に使えた。
※思い出せないのだが、sってz変換のzみたいなもので、周波数に関係する値なのだろうか、あるいはQ値(カーブの鋭さ)に関係する値なのかと思うのだが、全く忘却の彼方だし、"s"で検索しても本物は出ないだろうしで・・・ (TI(元NS)も、データシートに書いてくれればいいのになぁ・・・)
回路にパッチ
上のサーボ基板の改造後、アンプの電源on時にポップ音が出るようになった。サーボ回路を変えたために起動時の電流・電圧が増えたために音が大きくなったと想像するが、その音が出るのは、おそらく3886のミュート機能がうまく働いていない※ためだと考えた。
※最初にメーカーに聞いた時は、「ミュート機能は使っていない」ということだったので、動かなくて当然ではある。
アンプ基板の回路を見ると、使っていないのになぜかある、電源on時にミュート機能を働かせるためのコンデンサの容量が小さ過ぎるようだった(他の回路の1/100くらいだった)。それで、サーボ基板の時のようにシミュレートしてみた。
- LM3886のミュート回路の電源on時のシミュレーション: オリジナルの コンデンサ(1μF)
- 同、コンデンサを100μFにした場合
- 2個のLM3886のミュート用コンデンサを共用する案 (動作未検証)
オリジナルのコンデンサでは、電源on後に3886のミュート機能が働く時間(3886のピン8から流出する電流が0.5mAより大きい期間)が数十msと短すぎるが、(他の一般的な回路にならって)容量を100倍に増すと約1秒になって、充分そうだった。
実際の基板で試そうとしたが、一つ問題があった。コンデンサの容量を100μFに増やしたいが、手持ちにはないのだ。買うと送料のほうが高く付くので、買わずに何とかしたかった。コンデンサに電圧を掛けている抵抗を変えて何とかならないかシミュレータで試したが、無理そうだった。
それで、古いルータの基板を見たら、使えそうなものが1個あった。が、BA3886はステレオで、3886が2個あるからコンデンサも2個必要で、足りない。ダイオードを使って1個に共用できそうな気がしたが、ここで冒険はしたくなかった。
更に粘ったら、うまいことに、サーボ基板に その容量のコンデンサが2個あることに気付いた。そのコンデンサは正負電源のバッファリングをしているもので、必要ではあるが、サーボ基板の電源はアンプ基板から取っており、アンプ基板にはもっと大きいコンデンサが付いているから なくてもいいと考えた。ただ、何も付けないのも良くなさそうなので、気休めではあるが、手持ちで最大のもの(10μF)を付けた。
その時に思い付いたのは、「ドミノ移植」である。ちょっと不謹慎?
動かしたら期待どおり動き、ポップ音は解消した。また、サーボ基板もちゃんと動いている。今回は成功だ^^
その後、上記のとおりサーボ基板をオリジナルに戻したので このパッチは不要になったが、電源on時にミュートして悪いことはないどころか好都合なので、そのままにしている。
てな訳で、一勝一敗で なかなかおもしろかった。ムカついたり慣れないことをしたりして、結構疲れたけど・・・
PS. サーボ基板の件は、メーカーに結末をフィードバックするのが筋で、そうしようとは思っているが、まず再度検証するつもりなので保留している。それに、これを書いたらまたムカついて来て、連絡する必要・意味なんてない気がして来た。
「技術者としての最低限の筋を通さない人に、こっちから筋を通しても無駄だよね?」って思う。
ミュートについては全く「ダマ」にする。そもそも「使ってない」というのだから、どんなに簡単でも それを変える方法を知らせる必要はないだろう。まさに、「余計なお世話」だ。使わない理由は不明だが、知っていてやらなかったのかも知れないし。
「ミュート回路を使ってないなら、なんで役に立たないコンデンサを入れてるんだ?」っていう疑問があるが、分からない人のことはどうでもいい。