Spiceによる真空管のシミュレーション [電子工作]
2016年11月8日の日記
最近はiruchanはなんとかLTspiceの使い方を覚えて,アンプやラジオのほか,電子回路の設計に活用させていただいています。 実際に基板を作って回路を作らなくてもシミュレーションができるし,何か不具合があってもSpiceで検証できるのでとても助かっています。
そこで,以前から思っていたことを実行しよう,と思いました。
実は,Spiceは半導体だけじゃなく,真空管もシミュレーションできるのです。
もちろん,リニアテクノロジー社が提供しているフリーのLTspiceや,本格的なSynopsis社のHSpiceなど,有料のものでも真空管はモデルとして含まれていません。まあ,今どき,プロで真空管をSpiceで設計し,製品を販売する会社も人もいませんしね。
でも,Spice自体は1973年に米カリフォルニア大バークレー校で開発されたもので,世界中のエンジニアやマニアたちが開発に携わっていますし,中には凝った人もいて,すでに1990年代に私が読んでいた米誌 "Glass Audio" にも真空管のシミュレーション記事が載っていたので,いつかやってみたいと思っていました。でも当時はLTspiceのようなフリーのものはなく,まだとてもシミュレーションできる状態ではありませんでした。
ただ,今でもSpiceで真空管をシミュレーションするのはなにやら難しそうで,LTspiceを使い始めたのに,まだ取り組んでいませんでした。
一応,LTspiceにはtriodeというモデルがあり,呼び出すことができます。
一応,3極管のモデルはあるのですけど......。
ただ,これはtriode.asyというファイルなんですが,単なるシンボルだけで,シミュレーションをするための内部のサブサーキットは含まれていません。ですから,このモデルを回路図に貼りつけて配線しても,シミュレーション実行をするとエラーが出てシミュレーションできません。
これは,回路計算をするためのサブサーキットが入っていないと言う意味で,単なる図形のデータしか入っていないから計算できません,と言う意味です。
と言う次第で,問題はやはり,真空管のモデリングです。以下は,真空管式ギターアンプ製作センターに載っている方法を使わせていただきました。とてもわかりやすく解説してあり,本当にどうもありがとうございます。あわせてご参照ください。
真空管のSpiceモデル化はしかし,大変です。要は特性曲線を数式化してすべて記述しておけばいいのですが,そもそも特性曲線はメーカが数式化しているわけじゃなく,単に図表として発表しているだけなのでこれを読み取って数式化する必要があります。
ちょっとこれは大変。とても自力でやろうとは思いません。
でも,世の中,とても奇特な方がいて,全世界の真空管をモデル化し,ネット上で発表している方がいます。Ayumiさんという方のAyumi's labというページで,そこで真空管のモデルをダウンロードできます。
これはもう,驚いちゃいます。2A3にはじまって3C33(まあ,特性的には2A3×2と言うような球ですけど),6BQ5などの出力管から5AR4などの整流管も含まれています。 出力管も3C33がそうですけど,ポジティブグリッドの6AC5や欧州管のPX4などの珍しい出力管も含まれています。おまけに6G-A4や6R-A8などの純国産真空管も含まれているのはとても驚きます。
と言う次第で,ありがたくこのAyumiさんのお仕事を使わせていただきます。残念ながらコメント欄なんかでリンクの連絡ができませんでしたので,勝手にリンクを貼らせていただいています。
では,このモデルファイルを使ってLTspiceで真空管のシミュレーションをしていきましょう。もちろん,LTspiceをインストールしないといけませんが,ここでダウンロードできます。
まずはAyumiさんのファイルを少し,改造します。
おそらくはAyumiさんはプロの電子回路設計者なのでSpiceもLTspiceのようなフリーのものじゃなく,HSpiceなどの有料版をお使いなのだと思いますが,そのため,少し文法がLTspiceと異なるのです。
と言っても大したことじゃなく,累乗の演算子 ^ が ** となっているくらいのものです。
まずは12AU7をモデルとしてインポートします。
AyumiさんのWEBからモデルファイルをダウンロードして,12AU7.incファイルを開きます。
単なるテキストファイルなんでメモ帳でいいのですが,一応,Windowsに標準でついているワードパッドで開く方が便利です。なんでかというと,ワードパッドだと文字列の置換ができるからです.....っと思ったのですが,メモ帳で置換機能がなかったのはWindows98まででした。古っ~~!!
と言う次第で,別にワードパッドじゃなくてもメモ帳でOKです。
上記の通り,演算子の ^ を ** に置換しておきます。
それにしても^1.5と言うのがよく出てきますが,これはラングミュアの法則ですね!!
3極管のプレート電流は電圧の3/2乗に比例します。iP=G・VP^(3/2)です。ここで比例定数Gはパービアンスと呼ばれますが,昔習ったよな~と思い出しました。もちろん,私が電子工学を勉強していた頃にはとうに真空管は姿を消していましたけど,大学の実験では真空管をやりました。
そうやって変換した12AU7.incをLTspice所定のモデルファイルの場所にコピーしておきます。LTspiceをデフォルトのまま,インストールするホルダを変更していなければ,C:\Program Files\LTC\LTspice**\lib\sub です。**の部分はLTspiceのバージョンです。
ただ,このファイルは内部の特性を記述しただけのものなので,今度は図形としてのシンボルファイルを作っておきます。
次は先ほどの,troiode.asyと言うシンボルファイルをコピーして12AU7.asyという風に名前を変えておきます。 場所はC:\Program Files\LTC\LTspice**\lib\sym\Misc です。
ただ,これだけじゃもちろんダメで,サブサーキットとして先ほど作った.incファイルを読込むよう,指示しないといけないのでファイルの中身を書き換えます。
単にダブルクリックしちゃうと違う画面になって編集できないので,"プログラムから開く" → "メモ帳" で開きます(今回はワードパッドじゃなくても大丈夫です)。
これは図形データの編集画面で,今回,いじるのはこれじゃありません。メモ帳で開くと,
こうなります。ここで, SYMATTR Value triode とあるところを書き換えて 12AU7 とし,さらに,次の1行を追加しておきます。
SYMATTR ModelFile 12AU7.inc ※ "ModelFile" はこの通りででないとエラーになります。
さて,これでようやくシミュレーションができるようになります。
まずは普通に半導体を使ったLTspiceのシミュレーション同様,回路図を描いてきます。
まずはごく普通にAC解析を行います。▲のようなf特が得られます。
これだけでまずは感動しちゃいます。スゲェ~~!!
でもよく見ると変。フラットになっている部分は20dBくらいなので,12AU7のごく標準的なゲインだと思いますけど,f特は-3dBで16Hz~5.4MHzとなっています。ほんなアホ な!!!
最初,ミラー効果がシミュレーションされていないのだ,と思っちゃいましたが,12AU7.incファイルを見るとちゃんとCg-pが記述されていますので,そうではないようです。
実は,実際の回路に含まれる浮遊容量を考慮していないためです。実際にはCg-pのほか,真空管の入力部にはソケットや配線の容量があり,20~50pFくらいはありますので,もっと入力の容量が大きく,高周波の特性は悪くなります。この辺はこの記事をご参照ください。
それに,入力の信号源も出力インピーダンス0Ωの理想音源で,これでは入力容量によるハイパスフィルタ効果がありません。
だから,この結果はあくまでも理想状態の結果です。それにしても,もし,そうだったら真空管ってこんな広帯域なのか,と思いました。実際には12AU7のシングル増幅器だと上限はせいぜい50~70kHzくらいのものです。
実際には,各配線に数十pFの浮遊容量がありますから,▼こんなものでしょう。
さて,お次は最大出力電圧とひずみ。いったい,クリップする電圧は何Vなのか,ということと,ひずみ率がどうなるか,と言うことに興味が出てきます。
SpiceはFFTの機能がありますが,意外にひずみ率を出すのは面倒なことになります。
iruchanもFFTがあるのは知っていましたし,単純に各高調波を全部合計するとOKなんですけれど,各高調波は単位がdBなので和の計算をするのはチョ~面倒で,暗澹としていましたが,flipflopさんのHPで一発で表示させる方法を知りました。ありがとうございました。ただ,現在(2019年12月),拝見してみるとHPは削除されてしまっているようです。
ひずみの算出はAC解析ではなく,過渡応答解析(transient analysis)となります。1kHzで解析しますが,この場合,1秒とか,長い時間を計算する必要はなく,せいぜい10msec.くらいで結構です。フーリエ変換を用いて計算するので,10波程度,計測時間に入るようにstop timeを設定します。
また,フーリエ変換をさせるためのコマンドをシミュレーションに記述しておきます。
.Four 1k v(n***) がフーリエ変換のコマンドです。これを書いておかないと,▼のログファイルに出力されません。 n*** はデータを出力するノード番号です。テキストボックスの中に手で入力します。改行はctrl+ENTER です。
入力にある,電圧源V1の出力電圧を1mVくらいから変化させて出力の波形を見ていきます。
きちんと入力と出力の位相が反転していることがわかります.....。当たり前ですけどね.....。
さすがに,入力電圧が10Vともなると出力波形はクリップ近くなり,上下非対称の波形となります。奇数次の高調波がすごく増えてきているんですね。
出力波形のひずみ率については,ログファイルに記載されています。ctrl+L で表示されます。
各高調波ごとのパーセンテージが表示され,最後に全高調波ひずみ率が表示されます。
ついでに,FFTの波形を見ることもできます。viewコマンド中にFFTというのがあります。 特にひずみ率を調べたいだけなら表示する必要はありません。
さて,こうやって求めた出力電圧とひずみ率をExcelでグラフにするとこうなりました。
う~~ん,と思わずうなっちゃいました。こんなことができちゃうんですね~~。 これ,実験データじゃないんですからね!!!!
シミュレーションなんだから,ジグザグと誤差を含んだあやしげなグラフになってもよさそうですけど,まるで実測したみたいなきれいなグラフとなりました。
■ と▲はNECのC-R結合増幅データにあるデータです。出力電圧はほぼデータどおりですが,ひずみは3倍くらい違います。まあ,これは実測の方が正しいと思います。当時のひずみ率計が真空管式で性能が悪くて雑音が多い,と言うことも考えられますけどね。
結果として,最大95Vでクリップします。そのとき,ひずみ率は8%を超えちゃいますが,パワーアンプだと入力は最大で1Vですから,そのときのひずみ率は0.1%くらいです。やはり12AU7は優秀なんですね。
実はiruchanは真空管マニアだけれど,真空管アンプが音がよいなんて話はウソっぱちで,人間の耳は1%以下のひずみは検知できないし,半導体のアンプの方が音はよいと思っています。2%くらいになると明らかにわかりますけどね。
だから,真空管アンプが音がよいって言うのはいつも音楽を聴くレベルで人間の耳にひずみが感じられるかどうかのギリギリのあたりにひずみ率が来て,真空管によってひずみが検知できたり,できなかったりする微妙なあたりのひずみ率になるからだ,と思っています。また,ひずみ率によっては1%とか,2%とか,音がよいと思われるくらいの微妙なひずみ率があって,その辺で音のいい球,と言うのが決まるんじゃないかと思います。
さて,これで無事にLTspiceで真空管のシミュレーションができるようになりました。今後,真空管アンプの設計にも使ってみたいと思います。
2016年11月12日追記 ~整流管のシミュレーション~
AyumiさんのSpiceモデル集を見ていて,気がつきました。5Y3や5AR4などの整流管も載っています。 さっそく,実験してみます。
ただ,LTspiceは3極管triodeや5極管pentodeのモデル(と言っても単なるシンボルだけですけどね)がありますが,2極管diodeは出ていません。
と言う次第で,モデルのサブサーキット部分はAyumiさんのモデルが使えますが,LTspice上で使うにはシンボルデータの書き換えが必要となります。
まずは5Y3GTのモデルを作っていきませう。
Ayumiさんの真空管モデル集から5Y3.incというファイルをメモ帳で開き,
例によって演算子の書き換えをします。** の部分です。2極管は特性曲線が1本だけなのでファイルは簡単です。
次にシンボルデータの書き換えです。今度はシンボルデータtriode.asyをメモ帳で開き,
12AU7.asyの時と同様,▲のように書き換えます。SYMATTR ModelFile 5Y3.inc を追加するのも同じです。
また,整流管は2極管なので,当然,グリッドは不要なので最後の部分でgridについての記述は削除し,PINATTR SpiceOrder3 とあるのを SpiceOder2 に書き換えます。最後に 5Y3.asy という名前で保存します。
つぎに,シンボルデータを書き換えます。 次は同じ5Y3.asyをダブルクリックして開くと,
はさみのアイコンでグリッドを削除しておきます。
こうやるといよいよシミュレーションができるようになります。
この前作った6G-A4シングルアンプ電源部のシミュレーション結果。
なんと,本当にちょっと恐ろしいくらい,簡単にシミュレーションができちゃいます。なんて素晴らしいんでしょ!!
AC○○Vを両波整流し,コンデンサ○○μFに突っ込んだら出力のDC電圧は○○Vで,リップル率は○○%になるか,というのはとても難しい問題なのです。 といって,これ,いろんなところで必要だし,きわめて重要な問題なのですけどね。
コンデンサインプット整流の場合の直流出力電圧とリップル電圧については図表があり,負荷電圧/負荷電流で求めた負荷抵抗と入力電圧のほか,コンデンサの容量,トランスの直列抵抗の関数で求めることができます。でも面倒だし,実際やってみると違う,なんてことも多く,多くの場合,実際に組み上がってから調整,なんてなことになると思いますが,こうやると簡単にシミュレーションできちゃいます。
まずはコンデンサインプットの出力電圧が出力が291Vでリップルが8.8VP-P,なんてことがすぐにわかっちゃいます。これ,ホントにめんどくさい話なんですけどね~~。
さらに,Spiceだとリップルフィルタの出力が271Vで,リップル電圧が13.2mVP-Pなんてことがすぐにわかっちゃいます。それにしてもリップルフィルタの効果にも驚きます。リップル低減率実に-56.5dBですね!
また,5AR4を使ってみると出力が320Vくらいになって,大幅upなんてこともわかりました。実験でやると結構大変ですが,実際の通りの結果になって驚いちゃいます。実測データはこの記事をご覧ください。
なお,本モデルは整流管の立ち上がり時間までは考慮していません。シリコンDiみたいにインスタントONですのでご注意ください。▲のグラフで電圧の立ち上がりが遅いのはリップルフィルタのせいです。
と言う次第で,整流管までシミュレーションできちゃうなんて本当に素晴らしいです。
2019年12月22日追記
この記事は整流管のシンボルを作るためのものでしたが,さらに整流管のプレート特性を入れるにはこの記事をご参照ください。
興味を惹いたので拝見しました。お疲れ様です。
シリコンウェハに真空域を作って設け真空FET?で再現してみたいですね。
by lonvic (2018-01-23 15:04)
どうもご覧いただきまして,ありがとうございます。
そうですね。MOS-FETができるんだったら絶縁材を真空にしておけばできそうですね。
またよろしくお願いします。
by iruchan (2018-01-25 08:18)
整流管のシミュレーションを調べていて、たどり着きました。すごく参考になりました。ありがとうございます。また歪率の計算方法もやってみたいのですが、flipflopさんのHPのリンクが消えてしまっているので、解説していただけるとありがたいのですが・・・。よろしくお願いします。
by tantan (2019-12-21 21:51)
tantanさん,どうもコメントをありがとうございました。
LTspiceを用いたひずみ率の計算については本記事の最後の方に記載してあります。私もこの程度の知識くらいしかありません。
詳しくお知りになりたい場合は "LTspice ひずみ率" などでググってみてください。
また,下記は比較的詳しいと思います。トラ技に以前,詳しく載っていた気がしますが,何号かちょっと思い出せません。
https://cc.cqpub.co.jp/system/contents/1151/
by iruchan (2019-12-22 09:51)
トラ技の記事、ありがとうございます。勉強します!
by tantan (2019-12-22 13:36)
tantanさん,どうもコメントをありがとうございました。
確か,トラ技でSpiceを用いてひずみ率を計算する記事が出ていたと思います。先ほどのURLより詳しかったと思います。
なお,整流管のモデル作成については,下記の記事をご参照ください。
https://iruchan.blog.ss-blog.jp/2017-09-27
by iruchan (2019-12-22 15:24)