ngspiceで電流をプロットする方法は?


11

ngspiceの電流とパワーをプロットしたいと思います。たとえば、電圧の場合、ノード1の電圧をプロットしたい場合は、次のようにします。

plot v(1)

問題は、i(1)を試してもベクトルが認識されないことです。誰かがこれを行う方法についていくつかの例を提供できますか?


回答:


8

Oliは正解を出しましたが、I(element_name)は商用のSPICEバージョンにのみ追加された拡張機能です。

ngspice(Berkeley Spice 3に基づく)では、(独立した)電圧源を通る電流のみをプロットできます。これらは、SPICEが機能する回路方程式に現れる唯一の電流です。

インタラクティブスパイスセッション中またはスクリプトで特殊なブロックから(も参照この質問を)あなたのような表現を使用することができ(v(1)-v(2))/1k、現在は、(1μFのコンデンサなど)の反応性元素のために、ノード1と2の間に1kΩの抵抗を介しているときのようなもの(v(1) - v(2))/(2*pi*frequency*1u)SHOULDまた働く。


私の2番目のソリューション(式を含む)は、適用するのがそれほど難しくないはずです。マニュアルに、ngspiceが値を取得する方法や、コンポーネントのノード名を取得する方法があるかどうかを確認できます。モデルパラメータを持つダミーベクトルがあることは確かです。
jpc

6

私はngspiceを使用していないが、通常は、現在のプロット(私はLTSpiceを使用しますが、私はほとんどすべてのスパイスをオリジナルのBerkeley構文に基づいており、理解し、仕事も同様に何から)を通じてではなく、部品やトランジスタの例えばベースにキルヒホフの第1法則に従って、ノードでよりも(ある時点で出会う電流の合計はゼロです)

編集-jpcが指摘したように、ngspice(およびおそらく他のほとんどの非商用/初期のバリアント)では、電圧源を流れる電流しかプロットできないため、状況は少し異なります。したがって、関心のある回路のレッグに0Vソースを追加し、これを通る電流をプロットする必要があります。以下に例を追加しました。

したがって、両端に電圧源(V1)が付いた抵抗(R1)で構成される単純な回路がある場合(私はネットリストの専門家ではないので、大まかな例を示します):

V1 1 0 5

R1 1 0 1000

(1、0はノード、5(V)および1000(オーム)はそれぞれの値です)

I(1)ではなくI(R1)またはI(V1)で電流をプロットできます。ただし、電圧のV(1)をプロットできます。

NGSPICEバージョン(テストおよび確認済み)

V1 1 0 5
R1 1 2 1000 Vdummy 2 0 0

Vdummyは抵抗と直列であるため、同じ電流が抵抗に流れる必要があることに注意してください。したがって、R1の電流をプロットするには、I(Vdummy)と記述します。より複雑な回路の場合は、同じ条件が適用されることを確認します。

LTspiceの「実際の」例を次に示します。

ネットリスト

V1 V + 0 24 Rser = 0
V2 SIG 0 SINE(-1.4563 1m 1000 0 0 0 0)AC 2 Rser = 0
V3 V-
0-24 Q1 N001 N002 N003 0 2N2222
R1 V + N001 1f
R2 N003 V- 2K7
C2 N004 N003 100μF
R3 N004 0 3K9
R4 N002 0 22K
C1 N002 SIG100μF

回路の写真

サーキットEx

プロットオプション

(I(n001)、I(n002)などがないことに注意してください)

プロットオプション


1
jpcがコメントしたばかりのように、ngspiceを使用すると、電圧源を流れる電流しかプロットできないようです。私はngspiceをダウンロードしてこれを確認しました、i(Vx)を置くことは可能ですが、i(Rx)はできないなどです。したがって、電流をプロットしたい回路のどのレッグにも0Vソースを追加する必要があると思います(これはVxと呼ばれます)、プロットi(Vx)を配置します。
Oli Glaser

@OliGlaser:実際、ほとんどの商用SPICEフォークは(Fortranの)SPICE2コードベースに基づいていますが、ngspice(および他のオープンソース/フリーウェアバージョン)はSPICE3と呼ばれる新しい(!)C言語のリライトに基づいています。私は陪審員がまだどちらが優れているかについてまだ出ていないと思います。:)
jpc

4

電流をプロットできますが、シミュレーションを実行する前に、どの電流について知りたいかを知る必要があります。

たとえば、ダイオードD1があり、それを通る電流をプロットしたい場合、次のことができます。

.save @d1[id]
.tran <slice> <end>
.plot tran @d1[id]

詳細については、http: //ngspice.sourceforge.net/docs/ngspice-manual.pdfにあるngspiceマニュアルの519ページ(第31章)を参照してください。


3

単一のコンポーネントでDC電圧を掃引する場合、分岐電流をプロットできます。次のネットリストをロードすることにより

.MODEL DI1N4004 D (IS=76.9n RS=42.0m  BV=4 IBV=5.00u CJO=39.8p
+M=0.333 N=1.45 TT=4.32u)

D1 1 0 DI1N4004
Vin 1 0 dc 12 ac 0

ngspiceと指揮する

dc vin -10 5 0.001
plot -vin#branch

ダイオードd1を流れる電流のプロット図を取得できるはずです。


2

現在のプロットでは、そのブランチにゼロ電圧ソースを追加し、ターミナルでvlabel#branchと入力します。


3
これは、他の答えがまだ言っていないことを何も追加せず、それ自体では有用ではないほど簡潔です。
Dave Tweed

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.