ltspice

前回は突然にspiceに目覚めてしまって、色々探っていた。CUIで使うならngspiceが 使い易いと思う。ただ、解析対象のネットリストをどうするかってのが問題として 残っている。

そんなマウスで部品を掴んで、基盤に配置して、配線して、イモ半田付けして なんて事はやってられるかい。

CUIな人なら、キーボードから手を離さずに、サーと部品入力すると同時に信号名 と言うか端子名を割り当てて終わりじゃん。数学で言う無向グラフを作る作業だ。 (電流は電圧が高い所から低い方向に流れるから、有向グラフともこじつけ出来るな) よっぽど、GUIな人よりも通っぽいぞ。

んな訳で、ngspiceで改めて検索してみたら、下記のようなのが引っかかってきた。

NgSpiceを使って回路計算を行う

NGSPICE for windows つかいませんか

NGSPICE簡易説明書(Windows版)

Spice3f5 マニュアル

やっぱり、回路図を描きたいって要求は一定数あるのね。そんな場合はgschem(gEDA Schematic Editor)を 使うと良いらしい。OpenBSDのportsにも、gedaってのが登録されてたから、これは そこそこ推奨されるツールだろうね。オイラーのおんぼるGUI環境で、快適に使えるか どうかは、試してみないと、分からんけど。

ltspice

LTspice IVってのが、 リニア・テクノロジーって会社のURLで公開されてる。無料で使っていいよって太っ腹。 有り難く使わして貰おう。

Solutions Search - LTspice にある、 LTspice: AC解析 あたりを使って、感覚を掴みましょうかね。

インストールしたら一度起動して、Tools -> Control Panel -> Netlist option と選び、 μ to u のチェックをオンにしてOKを押す。これって文字化け対策かな。

本も出てるようだけど、Netで漁って間に合わせる。だから、出版業界は赤字になる んだな。CQ出版を応援する積もりで本を頼めよ。-> オイラー。

LTspiceインストール 目次

LTspice の使い方 覚え書き

LTspiceの使い方 (good)

LTspice入門

LTspiceの起動

LTspice入門に役立つサイト集

LTspiceによるシミュレーション例

LTspice活用のおぼえがき

回路シミュレーション・ツール LTspice (無料) の使い方 まとめ

Japan device

中身拝見

インストールすると中身がどうなってるか見たくなる。cgwinを久しぶりに使ってみたぞ。

sakae@NIL /c/Program Files/LTC/LTspiceIV
$ ls -F
Changelog.txt    License.txt  lib/          scad3.exe*      unlink.exe*
LTspiceHelp.chm  examples/    moveexe.exe*  uninstall.info

sakae@NIL /c/Program Files/LTC/LTspiceIV
$ find examples/ -type d -exec du -sh {} \;
7.6M    examples/
462K    examples/Educational
14K     examples/Educational/contrib
16K     examples/Educational/FRA
51K     examples/Educational/PAsystem
7.2M    examples/jigs

sakae@NIL /c/Program Files/LTC/LTspiceIV
$ find lib/ -type d -exec du -sh {} \;
14M     lib/
903K    lib/cmp
8.5M    lib/sub
4.3M    lib/sym
83K     lib/sym/Comparators
20K     lib/sym/Digital
55K     lib/sym/FilterProducts
55K     lib/sym/Misc
703K    lib/sym/Opamps
34K     lib/sym/Optos
3.0M    lib/sym/PowerProducts
45K     lib/sym/References
262K    lib/sym/SpecialFunctions

例の中にさりげなくjigsってのが置かれているけど、LT社の製品のテスト治具だ。 これをしっかり活用して欲しいのが本音だろうね。そして、我社の製品を採用 してください。

そう、このltspiceはLT社の販促ツールなんだ。アドビがPDFリーダーを無料公開 してPDFに馴染んでもらい、高いPDF作成ソフトを買ってくださいってのと、同じ 戦法なんだな。

lib/sym/PowerProductsってのがやけに容量大きいけど、これはLT社の主力製品だ からだろうね。

lib/subも容量が大きいのが目立つな。どんな物が入っているかと言うと、 標準部品(cmp)以外のほとんどLT社独自の製品情報。詳細な配置は、 LTspiceを使った回路設計手法 を参照。

上記でも触れられているけど、ユーザーが既存の部品を組み合わせて、サブルーチンならぬ サブサーキットを独自に登録する事が可能。いわゆる自前のライブラリィーね。 それの詳しい説明が合った。 サブサーキットの使用法

RTL

折角なのでltspiceを動かしてみますかね。題材は、昭和40年台に戻って、RTLです。 レジスターとトランジスターで組まれた、ロジック回路。一番簡単な反転回路です。

inv.cirをダブルクリックすると、ネットリストをそのまま読み込んでくれました。 ああ、違った。下記のように、DC解析とトランジェント解析は同時に出来んから どちからにしろって文句言われた。DCの方をコメント(行頭にアスタリスク)

SIMPLE RTL INVERTER
VCC  4  0    5
VIN  1  0    PULSE 0 5 2NS 2NS 2NS 30NS
RB   1  2    10K
Q1   3  2  0 Q1
RC   3  4    1K
.MODEL Q1 NPN BF 20 RB 100 TF .1NS CJC 2PF
.DC VIN 0 5 0.1
.TRAN 1NS 100NS
.END

runアイコンを押したら、グラフ用画面が出てきたけど、クリックして、観測点を指定しようにも 回路図がそもそも表示されていない。(内心は、ネットリストから回路図に変換 してくれる事を期待してたんだけど、甘かった)

plot settingから visible trace(若しくはadd trace)を選んで、出て来るリストから見たい波形を 選べば、グラフを書いてくれる。ngspiceの代わりを十分に務めてくれていますよ。

グラフを見ると、Tpdが40nsぐらいは有りますよ。昔は、こういうICを使って、ロジック 回路を動かしていました。のんびりした時代だったんすね。

TTL

次はこれまた懐かしいTTLをやってみる。今度はltspiceの回路図ツールを使って配線。 部品の配置に美的センスを要求される。余り詰め込みすぎると、後で名前とか値が 重なってしまい醜くなるので、ゆったりと配置した方が良い。

最初終段の石から配置していったのだけど、そうすると初段の石はQ4とかになって しまい、世間一般の常識からかけ離れた部品番号になってしまう。どうにかならないか。 色々と突いていたら、CTLキーを押しながら、右クリックすると部品名を変更出来る 事に気付いた。

部品の定数を決める時は、マウスとキーボードを行ったりきたりで、いらつく。 GUIは、改めてユーザーに負担を強いると強く再認識させられた。

で、石のパラメータを日本のそれに合わせようとして、パラメータをlib/cmp以下の ファイルに追加したんだけど、ltspice上からは変更が見えない。大体、ファイルを 変更してるのにエクスプローラーでは、更新日が更新されていない。ファイルを開いて みるとちゃんと変更されてるのに。。。 これもWindowsの新手の嫌がらせか。

インストールする時、何も疑問の思う事なく、Program Filesエリアに入れたんだけど、 ひょっとして、このエリアって書き込み保護が働いている? それなら、ファイルを 再度開いた時に更新結果が見えるというのは何故? それからファイルをセーブする 時、何も文句を言われなかったしなあ。もう付き合いきれんよ。

再度、別なエリアにインストールしたら、上記の問題はやっと解消した。全くもって Windowsはオイラーと相性が悪いな。

で、やっとこさシュミレーションしたら、出力がおかしい。どうおかしいかと言うと、 業界用語で言うVohが3V以上にならない。まるでプルアップ抵抗を取り付けていない、 オープンコレクタの出力を見ている様。さては、半田付けの技術がいつの間にか、ほころびて しまい、いも半田付け(天麩羅半田付けとも言う)しちゃったか。

こういう時は、実回路では、コンコンテストをするんだった。ドライバーの柄で、 半田付け箇所を叩く。勿論その時は、オシロで波形を見ながらね。そして、波形が 乱れる事があれば、十中八苦、半田付け不良。この技でも駄目な場合は、基盤を 捻ってみるとか、ドライヤーで暖めてみるとか、再半田付けするとね。

いも半田付けした人口衛星が上がったりしたら、それだけで数百億円の損失に なるんで、このあたりの試験はかかせないものとなる。ああ、懐かしいなあ。

今回は、そんなコンコンも出来ないので、ネットリストを出力して、それを Fedoraのngspiceにかけてみよう。移植には少々手直しが必要。まあ、文句を 言われたら手を入れるっていう、もぐら叩きだけどね。

* TTL Inverter
* HItachi Si EP High speed switch
.model 1S2075   D(IS=1.387E-9 N=1.702 RS=1.53
+               CJO=1.92pf VJ=0.4996 M=0.0605 TT=5ns BV=75  IBV=100E-15)
*
*Low Noise Amp PC=0.4W Ic=0.15A Vcbo=60V
.model 2SC1815 NPN(Is=2.04f Xti=3 Eg=1.11 Vaf=6 Bf=400 Ne=1.5 Ise=0
+               Ikf=20m Xtb=1.5 Br=3.377 Nc=2 Isc=0 Ikr=0 Rc=1 Cjc=2p
+               Mjc=.3333
+               Vjc=.75 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n Tf=311.1p
+               Itf=0 Vtf=0 Xtf=0)
*               TOSHIBA         90-01-29        creation
*
*Low Noise Amp PC=0.4W Ic=0.15A Vcbo=50V
.model Q2SA1015 PNP(Is=295.1E-18 Xti=3 Eg=1.11 Vaf=100 Bf=110 Ne=1.5 Ise=0
+               Ikf=0 Xtb=1.5 Br=10.45 Nc=2 Isc=0 Ikr=0 Rc=15 Cjc=66.2p
+               Mjc=1.054 Vjc=.75 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n
+               Tf=1.661n Itf=0 Vtf=0 Xtf=0)
*               TOSHIBA         90-01-23        creation

Vcc     N001    0       5v
Ro      N001    P001    130
Rdc     N001    N002    1.6k
Rde     N006    0       1k
Rin     N001    N003    4k
D1      P002    out     1S2075
Qh      P001    N002    P002          2SC1815
Ql      out     N006    0             2SC1815
Qd      N002    N005    N006          2SC1815
Qin     N005    N003    N004          2SC1815

Vin     N004    0       PULSE(0V 3V 5n 2n 2n 50n 100n 5)
.tran 1ns 200ns
.end

走らせてみると、やっぱり波形がおかしい。端子記号が機械的に付けられているんで、 目視にはちょっと不便だな。editorの修正機能で、もう少し分かり易い名前に 変更しておこう。

それから、ちょっと検索してみたら、 TTLインバータ を解析された御人がおられた。熟読して、動作をよく理解しておこう。

まてまて、目の前に実験基盤が有るのに、その態度は何だ。手を動かして楽しめ。 想像するに、出力のHighが出ないってのは、トーテムポール(NPNトランジスタが縦に 2個接続されてる様をインディアンの立体彫刻になぞらえてこう呼ぶ)の間に入って いるダイオードが逆配線されてないか?

それとも、ダイオードが壊れていてオープンになっていないか? こういうオープン故障は、 ダイオードを回路から取り除いちゃうって事でシュミレーション出来る。ショートモードの 故障は、単に銅線でショートすれば良い。

トランジスタも同様に故障モードをシュミレーション出来る。増幅しないってのは、 極端にHfeが低下って事で再現出来そうだから、故障したトランジスタを、リストに 加えておくのが手だな。

フライトシュミレータで飛行機の操縦を練習するのはあたりまえ。その一環として アクシデントのシュミレーションも行われている。あちこちspiceのサイトを見て きたけど、故障したデバイスを装着して、シュミレーションした例って皆無だね。 どんな事したって、火は出ないし煙もはかないし、何度でもやり直し可能なんだから、 積極的にやってみれば良いのに、と思っちゃうぞ。

トーテムポール回路を切り離して、初段とドライバ段だけにしてみた。そして、ドライバ段の ベースとエミッタとコレクタ電圧を観測。こういうの手軽に出来るから正に電子工作 だな。半田のヤニで女房から文句も出ないし。

ドライバー段がサチッる。常にONだよ。これじゃ、トーテムポールの最終段も下側の トランジスターが常にONになるのも肯ける。でも何故サチる? それはベースに 電流が流れてしまっているからだ。初段の設計がまずいのか?

初段は、エミッターに入力が加わる。TTLの入力だから、Vihが2V以上。Vilが0.8V以下 って規格だったかな。それに対して、3Vと0Vの入力だから、規格は満足してるはず。

ベースが4Kの抵抗でプルアップされてる。コレクタ側は、ドライバ段のベースに直結。 結局、初段はトランジスタとして使うのではなく、B-E、B-C ジャンクションをPN接合型 のダイオードとして使っているのだな。コレクターに流れる電流でも測ってみれ。 電流プローブも付いている事だしね。

回路シミュレータの使いどころ

Memo

ネットをうろうろしてたら、ngspice用のメモを残されていた方がおられるので 有り難く頂いてきた。これだけあれば、キーボードだけですいすい回路図を 組み立てられるよ。どうせ、回路を組む前に、スケッチぐらいはするんだから、 その時に、部品名とか決めるね。

それから、ngspiceのプロット候補は、端子名と言うか信号名になるんで、 これに分かり易い名前を付けるのが肝になるな。肝に銘じておこう。

 R###    +端子     -端子     値(Ohm)             (抵抗)
 C###    +端子     -端子     値(F)               (容量)
 L###    +端子     -端子     値(H)               (インダクタ)
 D###    p端子     n端子     モデル名            (ダイオード)
 Q###    C端子     B端子     E端子     モデル名  (トランジスタ)
 J###    D端子     G端子     S端子     モデル名  (J-FET)                
 M###    D端子     G端子     S端子  Bulk端子  モデル名 (MOSFET)                

 V###    +端子     -端子     DC      値(V)             (直流電圧源)
 V###    +端子     -端子     AC      振幅(V)   [位相]  (交流電圧源)
 V###    +端子     -端子     sin(0V  141V    50Hz)     (交流電圧源 オフセット0V,振幅141V,f=50Hz)
 V###    +端子     -端子     pulse(0V 10V 1ms 2ms 4ms 6ms 20ms)
        (パルス電圧源=初期電圧0V, パルス電圧10V, 遅延時間1ms, 立上り2ms, 立下り4ms, パルス幅6ms, 周期20ms)
 I###    は電流源であり,記述はVと同様

 E###    +端子     -端子     +制御    -制御    ゲイン     (電圧制御電圧源)
 G###    +端子     -端子     +制御    -制御    トランスコンダクタンス (電圧制御電流源)
 F###    +端子     -端子     制御素子名        ゲイン     (電流制御電流源)
 H###    +端子     -端子     制御素子名        伝達抵抗   (電流制御電圧源)

 .op                                     (DCバイアスの計算)
 .dc     V1      -3      10      0.5     (DC解析。V1を,-3V~10Vにわたって0.5Vづつ解析)
 .ac     dec     20      1k      10meg   (AC解析。1kHz~10MHzを,10倍あたり20個所づつ解析)
 .tran   1ns     100ns   20ns    0.1ns   
                (過渡解析。プリント出力1nsごと,最終時間100ns,20nsはプリント出力しない,時間刻み0.1ns以内)

 .model  Q1      NPN(xxx xx xx)  (デバイスパラメタの定義)
 .inc ファイル名                      (外部ファイルを(全て)読み込む)
 .lib ファイル名                      (ライブラリから(モデルやサブサーキットなど必要情報を)読み込む)

  setplot        どの解析結果を表示対象にするか、指定する
  plot vdb(n)     接点nの電圧をデシベル表示する
  plot v(a,b)     接点bを基準にしてaとの差を表示する

  .four f V(n)    過度解析の結果のフーリエ成分を求める。fは基本周波数
  fourier f V(n)   setplotで過度解析を選んでおいて、結果を表示する

NPN トランジスタのモデル記述例
 
.MODEL QN NPN(BF=200 TF=0.64N RB=500 IS=10E-15 CJC=3P)
これは,モデル名 QN の NPN トランジスタが次のパラメータを持っていることを表している.

BF
順方向エミッタ接地電流増幅率 βF  の最大値.縦形NPNトランジスでは通常 100 から 200 であ
る.BFにデフォルト値はなく,必ず指定しなければならない.

TF
順方向少数キャリア通過時間.デフォルト値は 0sec である.α遮断周波数は、
 1/(2 pi TF) で計算出来る。通常は300-500MHzである

RB
ベース抵抗で,100Ω から 500Ω 程度の値をとる.デフォルト値は 0Ω である.

IS
pn 接合逆方向飽和電流.エミッタ面積で決まる.デフォルト値は 1 × 10 ? 16 A である.

CJC
コレクタ接合容量の零バイアス電圧における値.1pF から 3pF 程度の値である

etc

LTspiceと他の回路シミュレータの比較

LTspiceでデジタル回路 その1

LTspiceクイック・スタート

セラミック・水晶振動子とラダー型フィルター