SUBCKT の登録と使用 |
|
・ | いろいろなアプローチのしかたがあると思いますが、私の体験の
順番通りに書いてみます。 実は Web で見つけた SPICE マクロモデルを使ってみようとしたの
ですが、うまくいきません。 まずは単純なところから地道に進んでみました。 Edit → Component → Misc の中に triode 三極真空管があって、 This symbol is for use with a subcircuit macromodel that you supply. と書いてあります。 これを回路図に置いてから、右クリックで Component Attribute Editor を開くと、 上のほうに Open Symbol というボタンがあるので、これを押します。 プレート端子 (とおぼしきもの) を右クリックすると Pin/Port Properties ダイアログが 出てきます。 Label: Plate, Netlist Order 1 であることが確認できます。 同様に、グリッド は Netlist Order 2、カソードは 3 であることがわかりました。 すでに動くことがわかっている opamp.sub を利用するためのディレクティブは、 .include opamp.sub であって、ファイル "opamp.sub" があるディレクトリーは: SwCADIII\lib\sub\ ここで、独自の SUBCKT を記述したファイルのパス名が SwCADIII\new_asc\doclib\triox.sub であるとすれば、これを読み込ませるには .include ..\..\new_asc\doclib\triox.sub と書けばいいのだろうと推測しました。 (「..\」はディレクトリーを一階層上に、「..\..\」は二階層上に登ることを意味します。) "triox.sub" の内容は次の通りです。 ―――――――――――――――――――――――― * A fake triode .subckt TX1 P G K B1 n01 0 V = 3e-2 * V(P, K) - (-V(G, K))**0.7 B2 P K I = 3e-4 * V(n01)**1.5 .ends TX1 ―――――――――――――――――――――――― ちょっと解説しておきましょう。 B1, B2 は arbitrary behavioral voltage or current sources です。 (任意の行動の電圧あるいは現在の出所、ではなくて、とても自由に設定できる電圧・電流源のこと。) V(P, K) はプレート - カソード間電圧、V(G, K) はグリッド - カソード間電圧のことです。 n01 は中間的なノードで、V(n01) はその電圧のことです。 B1 は電圧源であって、ノード n01 に 3e-2 * V(P, K) - (-V(G, K))**0.7 の電圧を送り出します。 B2 は電流源であって、端子 P, K 間に 3e-4 * V(n01)**1.5 の電流を流します。 それでは、この「にせもの三極真空管」の静特性を見てみます。 ![]() ![]() プレート電圧を 0 〜 200V の間で変化させて、一本のグラフを書きます。 グリッド電圧は 0V から -8V まで -1V ステップで変化させます。 グリッド電圧をプラスにしたり、プレート電圧をマイナスにするとどうなるか なんて、知りませんよ。 上記 triox.sub を作って試している途中で、SwitcherCADIII ではべき乗の記号 "^" は使えず、"**" に置き換えなくてはならないことがわかりました。 これは大変大きなヒントです。 |
・ |
真空管アンプ関係で活躍していらっしゃる、中林歩さまのサイト、 http://www002.upp.so-net.ne.jp/ayumin/audio/pctube/pctube.html ここの、http://www002.upp.so-net.ne.jp/ayumin/audio/pctube/node41.html から、各種真空管のマクロモデルをダウンロードしました。 その中の 12AU7.lib について、"^" を "**" に変更して、私の triox.sub 中に記述にするだけで、動いた模様です。 ![]() 中林様、どうもありがとうございました。 Vg = 0V で Ip が 0 付近のとき、Ip が不連続のように見えることを、不躾ながら中林様に質問したところ、たいへん丁寧なご返事をいただきました。 Vp = 0 のとき Ip = 0 ではない、これは接触電位差によるもので、グリッド電圧が -0.6V 以上になると初速度電流が流れることと関係している、とのことでした。 この辺はオーディオ増幅器としての用途では問題にならない部分ですよね。 ほかに、http://www.intusoft.com から Intusoft Vacuum Tube Models というのを入手しています。 使うと エラーがでます。 Subckt にパラメーターを渡すときの書式が異なること、<expression> に "? :" (条件による 選択) が使えないこと、これらはわかっています。 (<expr-1> ? <expr-2> : <expr-3> は使えます。) http://groups.yahoo.com/group/LTspice/files/Lib/cmp/ の ExcemTubesOk.lib は動きそうです。 試してはいません。 |
・ |
前項の例では計算式を直接書き下したわけですが、回路図入力で
作ったものを subckt 化するにはどうしたらいいのか。 素材として CMOS トランジスターでギルバートセル (乗算器) + 能動負荷を作り、シミュレーションで動作確認しました。 ![]() ![]() あれ、Id(M4), Id(M5) の最大値が 170μA 弱で、最小値が 20μA 強だなんて、入力信号が大きすぎです。 以後、気をつけます。 次に subckt 化する部分だけを残して他を消去します。 ![]() Tools → Export Netlist で *.net ファイルに保存します。考え中 青く小さくなって考えたものの、net ファイルはせいぜい参考にしかなりま せん。 そこで既存の 4N25.sub 等を参考に、手で入力しま した。 "SwCADIII\new_asc\doclib\mgilbert.sub" の内容は次の通りです。 .subckt MGILBERT 1 2 3 4 5 6 7 8 9 10 M1 n034 2 n012 [5] s4kN M2 n056 3 n012 [5] s4kN M3 8 7 n034 [5] s4kN M4 9 6 n034 [5] s4kN M5 9 7 n056 [5] s4kN M6 8 6 n056 [5] s4kN M7 n012 4 5 [5] s4kN M8 4 4 5 [5] s4kN M9 9 9 10 [10] s4kP M10 8 9 10 [10] s4kP .model s4kN nmos(level=1 vto=0.5 kp=35.2e-6 gamma=0.91 cgso=210pF cgdo=210pF + cj=4.9e-4 cjsw=245pF ld=3e-7 pb=0.94 tox=50n) .model s4kP pmos(level=1 vto=-0.5 kp=13.4e-6 gamma=0.64 cgso=210pF cgdo=210pF + cj=2.3e-4 cjsw=117pF ld=3e-7 pb=0.90 tox=50n) .ends MGILBERT *.asc ファイル中の U1 のシンボルは Component → Misc/DIP10 を使いました。 Subckt 名が MGILBERT ですから Value=MGILBERT とします。 LT のロゴマークは画像ファイルの段階で消しました。 LTC 社の製品ではないですから。 ![]() ![]() |
・ |
Subckt にパラメーターを渡すことができます。 CNY17.sub
を参考に、CNY17P.sub を作成しました。 .subckt CNY17P 1 2 3 4 5 6 7 8 9 10 R1 N003 2 2 D1 1 N003 LD G1 3 5 N003 2 {Igain} C1 1 2 18p Q1 3 5 4 [4] NP .model LD D(Is=1e-20 Cjo=18p) .model NP NPN(Bf=610 Vaf=140 Ikf=15m Rc=1 Cjc=19p Cje=7p Cjs=7p C2=1e-15) .ends CNY17P ![]() U1 の Value は CNY17P、Value2 は Igain=2e-4 としました。 Value 欄でなく、Spice directive として .param Igain=2e-4 と書いても効果は同じです。 ![]() Igain=1e-4 に変えると、確かにパラメーターが渡っていることが確認できました。 ![]() |
・ |
前項に引き続いて、フォトカプラー CNY17vip という subckt
を作りました。 Igain のほか Speed を指定できます。 Speed は
フォトトランジスタの Cjc, Cje, Cjs を同じ倍率でスケーリングし
ます。(cny17vip.sub 参照) .step param で Speed を 0.8 1.0 1.25 と変化させます。 (1) アナログ動作 ![]() 過渡応答と AC 解析 ![]() ![]() (2) 同、2-pole OP アンプ付 ![]() 過渡応答と AC 解析 ![]() ![]() (3) スイッチング動作 (飽和寸前) ![]() 過渡応答 (拡大図) ![]() ![]() CNY17vip1.asc CNY17vip2.asc CNY17vip3.asc CNY17vip.asy cny17vip.sub (4) フォトダイオード動作 cny17vip.sub の内容を調べたところ、BE 間フォトダイオードの利用を考慮 した subckt ではないとわかりました。 そこで修正版の cny17vipd.sub を使います。 ![]() ![]() V3 はフォトダイオードの逆バイアス電圧源で、接合容量を小さくする効果が あります。 しかしフォトダイオードは OP アンプの仮想グランドに接続されています から、近似的に接合容量の電圧変化なし → 接合容量に電流は流れない、と言え ます。 実際にバイアス電圧を 0 にして C1 を調整すると、逆バイアス電圧に対する 応答特性の変化はわずかです。 電流入力回路構成の OP アンプと併用するなら フォトダイオードの逆バイアス電圧は不要でしょう。 ノイズの点でも有利です。 U2 は 2-pole 型で GBW=10Meg Slew=10Meg です。 そろそろ OP アンプの 高周波性能も無視できなくなりましたので、帰還抵抗は小さ目にしてあります。 CNY17vip4d.asc cny17vipd.sub |
もどる |
|