SPICEの可変抵抗器

SPICEを使い始めて20数年.ずいぶんと回路の動きの検証にシミュレーションを活用してきました.最近は昔ほど使わなくなりましたね.というのはシミュレーションでは検証できないような問題に取り組む方が多く,実物の回路を実験した方が早いからです.

私のこれまでのSPICEはDOSの頃のなごりの評価版で入力はテキストベース.最大ノードは20ほど.まぁ何とかこれで事足りていました.10年ほど前に話題になったSIMetrisも一時期興味を持ちましたが,今日まで乗り換える事は無かったです.

でもPCのOSの関係でいよいよ使い始めたのがLTspiceです.使ってみると回路図入力できるので視認性が良く,また今まで書き溜めてきたネットリストもそのまま読めるのでとても快適です.

SPICEを使っていると欲しくなるのが可変抵抗器です.これは「SPICEによる電子回路設計入門/Paul W Tuinenga著/松本 敏之訳」の本の最後の方にサブサーキットとして紹介されています.

このサブサーキットを最近LTspice用に移植しました.サブサーキットのZXは電圧可変インピーダンスでその動きはRout=Vin*Rrefになります.

2017-7-1blig1

in1-in2間のVcontrol電圧を0-1Vに変化させると,Zに接続された10kΩを参照しZo1-Zo2間に0-10kΩの可変抵抗を発生させます.Zにインダクタを接続すれば可変インダクタになります.

ただ気を付けなければならないのはコントロール電圧0Vの時です.コントロール電圧0Vは抵抗値が0Ωになるので,電源の出力抵抗が0Ωだと大きな電流が流れシミュレーションがおかしくなります.ですからZo1-Zo2に送る電源には1Ωなどの出力抵抗を設定しておきます.

ZXのサブサーキットを以下に掲載します.これをLTspiceで使うにはZX.subファイル名でLTspiceXVII/lib/subに保存します.そしてLTspiceからZX.sub読み出し,一行目にカーソルを当ててマウスを右クリックすると,メニューが出ますのでその中のCreate_Symbalでシンボル化します.

次にシミュレーション回路の中で使うときは,OPアンプなどのシンボルを読みだす画面の中のAutoGeneratedの中に出来上がっていますのでそこから読み出します.絵のイメージは好きなように修正すれば良いでしょう.

.SUBCKT ZX In1 In2 Z Zo1 Zo2
Eout Zo1 1 POLY(2) (In1,In2) (Z,0) 0 0 0 0 1
Fcopy 0 Z Vsense 1
Rin In1 In2 1G
Vsense 1 Zo2 0
.ENDS

キャパシタはYXという電圧可変アドミタンスのCout=Vin*Crefを使います.そのサブサーキットは次になります.

.SUBCKT YX In1 In2 Y Yo1 Yo2
Ecopy Y 1 POLY(2) (In1,In2) (Yo1,Yo2) 0 0 0 0 1
Fout Yo1 Yo2 Vsense 1
Rin In1 In2 1G
Vsense 0 1 0
.ENDS