ltspice
前回は突然にspiceに目覚めてしまって、色々探っていた。CUIで使うならngspiceが 使い易いと思う。ただ、解析対象のネットリストをどうするかってのが問題として 残っている。
そんなマウスで部品を掴んで、基盤に配置して、配線して、イモ半田付けして なんて事はやってられるかい。
CUIな人なら、キーボードから手を離さずに、サーと部品入力すると同時に信号名 と言うか端子名を割り当てて終わりじゃん。数学で言う無向グラフを作る作業だ。 (電流は電圧が高い所から低い方向に流れるから、有向グラフともこじつけ出来るな) よっぽど、GUIな人よりも通っぽいぞ。
んな訳で、ngspiceで改めて検索してみたら、下記のようなのが引っかかってきた。
やっぱり、回路図を描きたいって要求は一定数あるのね。そんな場合は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の使い方 (good)
回路シミュレーション・ツール LTspice (無料) の使い方 まとめ
中身拝見
インストールすると中身がどうなってるか見たくなる。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 程度の値である