Jak wykreślić prąd w ngspice?

11

Chcę nakreślić prąd i moc w ngspice. Na przykład w przypadku napięcia, gdybym chciał wykreślić napięcie w węźle 1, użyłbym:

plot v(1)

Problem polega na tym, że gdy próbuję i (1), wektor nie jest rozpoznawany. Czy ktoś mógłby podać kilka przykładów, jak to zrobić?

sj755
źródło

Odpowiedzi:

8

Oli podał poprawną odpowiedź, ale I (nazwa_elementu) jest rozszerzeniem dodanym tylko do komercyjnych wersji SPICE.

W ngspice (opartym na Berkeley Spice 3) można wykreślać prądy tylko przez (niezależne) źródła napięcia. Są to jedyne prądy, które pojawiają się w równaniach obwodu, z których działa SPICE.

W interaktywnej sesji Spice lub ze specjalnego bloku w skrypcie (patrz także to pytanie ) możesz użyć wyrażeń, takich jak (v(1)-v(2))/1kgdy prąd przepływa przez rezystor 1kΩ między węzłami 1 i 2. W przypadku elementów reaktywnych (takich jak kondensator 1 μF) coś takiego (v(1) - v(2))/(2*pi*frequency*1u)powinno być też działa.

jpc
źródło
Moje drugie rozwiązanie (z wyrażeniami) nie powinno być bardzo trudne do zastosowania. W podręczniku możesz zobaczyć, czy ngspice ma jakiś sposób na uzyskanie wartości, a może nawet nazwy węzłów komponentu. Wiem na pewno, że istnieją wektory obojętne o parametrach modelu.
jpc,
6

Nie używałem ngspice (używam LTSpice, ale z tego, co rozumiem, prawie wszystkie SPICE są oparte na oryginalnej składni Berkeleya i działają podobnie), ale zwykle wykreślasz prąd przez komponent lub np. Podstawę tranzystora, raczej niż w węźle, zgodnie z pierwszym prawem Kirchoffa (suma prądów spotykających się w punkcie wynosi zero)

EDYCJA - jak wskazał jpc, dla ngspice (i prawdopodobnie większości innych niekomercyjnych / wczesnych wariantów) rzeczy są nieco inne, ponieważ można wykreślić prądy tylko przez źródło napięcia. Trzeba więc dodać źródło 0V w odnodze interesującego obwodu i przez to wykreślić prąd. Poniżej dodałem przykład.

Więc jeśli masz prosty obwód składający się z rezystora (R1) ze źródłem napięcia (V1) na nim (nie jestem ekspertem na liście sieci, weź jako przykład):

V1 1 0 5

R1 1 0 1000

(1, 0 to węzły, 5 (V) i 1000 (Ohm) to odpowiednie wartości)

Możesz albo narysować prąd za pomocą I (R1), albo I (V1), a nie I (1). Można jednak wykreślić napięcie V (1).

Wersja NGSPICE (przetestowana i potwierdzona)

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

Zauważ, że Vdummy jest w szeregu z rezystorem, więc ten sam prąd musi przez niego przepływać. Aby wykreślić prąd dla R1, piszemy I (Vdummy). W przypadku bardziej złożonego obwodu upewniamy się, że obowiązują te same warunki.

Oto „prawdziwy” przykład LTspice:

NETLIST

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 SIG 100μF

OBRAZ OBWODU

Circuit Ex

OPCJE DZIAŁANIA

(Uwaga: nie ma I (n001), I (n002) itp.)

Opcje wydruku

Oli Glaser
źródło
1
Jak jpc właśnie skomentował, wydaje się, że za pomocą ngspice można wykreślić prądy tylko przez źródła napięcia. Właśnie pobrałem ngspice i potwierdziłem, że można wstawić i (Vx), ale nie i (Rx) itp. Więc myślę, że musisz dodać źródło 0 V do dowolnej części obwodu, w której chcesz wykreślić prąd (powiedzmy, że nazywa się Vx) i umieść wykres i (Vx).
Oli Glaser
@OliGlaser: Właściwie większość komercyjnych widelców SPICE opiera się na bazie kodu SPICE2 (w Fortran), podczas gdy ngspice (i inne wersje open source / freeware) oparte są na nowszej (!) Przeróbce języka C, która nazywała się SPICE3. Uważam, że nadal nie ma jury, które jest lepsze. :)
jpc
4

Możesz wykreślić prądy, ale przed uruchomieniem symulacji musisz wiedzieć, jakie prądy chcesz poznać.

np. jeśli masz diodę D1 i chcesz narysować przez nią prąd, możesz:

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

Więcej informacji znajduje się na stronie 519 (rozdział 31) podręcznika ngspice pod adresem http://ngspice.sourceforge.net/docs/ngspice-manual.pdf

Nigel Williams
źródło
3

W przypadku zamiany napięcia stałego na jeden element można wykreślić prąd rozgałęzienia. Ładując następującą listę sieci

.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

do przyprawy i dowodzenia

dc vin -10 5 0.001
plot -vin#branch

powinieneś być w stanie uzyskać wykres prądu na diodzie d1.

gmph
źródło
2

do wykresu prądu dodaj źródło napięcia zerowego w tej gałęzi i wpisz gałąź vlabel # w terminalu.

Prashant
źródło
3
Nie dodaje to niczego, czego inne odpowiedzi jeszcze nie powiedziały, i jest zbyt zwięzłe, aby samo w sobie było przydatne.
Dave Tweed
2

Od NGSpice 27 R2017 umieszczenie tego wiersza kodu:

.options savecurrents

Zapisuje prądy, które mogą być wywoływane przez o @R1[i], @D1[id]itp

plot @R1[i] vs v(1)

Poszukaj tej opcji w Podręczniku NGSpice .

Brethlosze
źródło