GNU/Linux >> Linux Esercitazione >  >> Linux

Come tracciare la corrente in ngspice?

Oli ha dato una risposta corretta ma I(nome_elemento) è un'estensione aggiunta solo alle versioni commerciali di SPICE.

In ngspice (che si basa su Berkeley Spice 3) puoi solo tracciare le correnti attraverso sorgenti di tensione (indipendenti). Queste sono le uniche correnti che appaiono nelle equazioni del circuito da cui lavora SPICE.

In una sessione interattiva di Spice o da un blocco speciale nello script (vedi anche questa domanda) puoi usare espressioni come (v(1)-v(2))/1k quando la corrente attraversa un resistore da 1kΩ tra i nodi 1 e 2. Per elementi reattivi (come un condensatore da 1μF) qualcosa come (v(1) - v(2))/(2*pi*frequency*1u) dovrebbe anche funzionare.


Non ho usato ngspice (uso LTSpice, ma da quello che ho capito praticamente tutti gli SPICE sono basati sulla sintassi originale di Berkeley e funzionano in modo simile), ma di solito tracci l'attuale attraverso un componente o ad es. base di un transistor, piuttosto che in un nodo, secondo la prima legge di Kirchoff (la somma delle correnti che si incontrano in un punto è zero)

EDIT - come ha sottolineato jpc, per ngspice (e probabilmente la maggior parte delle altre varianti non commerciali/precoci) le cose sono leggermente diverse, poiché puoi solo tracciare le correnti attraverso una sorgente di tensione. Quindi si dovrebbe aggiungere una sorgente a 0 V nella gamba del circuito di interesse e tracciare la corrente attraverso questo. Ho aggiunto un esempio di seguito.

Quindi, se hai un circuito semplice costituito da un resistore (R1) con una sorgente di tensione (V1) ai suoi capi (non sono un esperto di netlist, quindi prendi come esempio approssimativo):

V1 1 0 5

R1 1 0 1000

(1, 0 sono i nodi, 5 (V) e 1000 (Ohm) sono i rispettivi valori)

Puoi tracciare la corrente con I(R1) o I(V1), non I(1). Potresti comunque tracciare V (1) per la tensione.

Versione NGSPICE (testato e confermato)

V1 1 0 5
R1 1 2 1000V fittizio 2 0 0

Nota che Vdummy è in serie con il resistore, quindi la stessa corrente deve fluire attraverso di esso. Quindi per tracciare la corrente per R1 scriviamo I(Vdummy). Per un circuito più complesso ci assicuriamo solo che si applichino le stesse condizioni.

Ecco un esempio "reale" da LTspice:

NETLIST

V1 V+ 0 24 Rser=0
V2 SIG 0 SENO(-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

IMMAGINE DEL CIRCUITO

OPZIONI DI TRAMA

(Notare che non ci sono I(n001), I(n002), ecc.)


Puoi tracciare le correnti, ma devi sapere quali correnti vuoi conoscere prima di eseguire la simulazione.

per esempio. Se avessi un diodo D1 e volessi tracciare la corrente attraverso di esso, potresti:

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

Maggiori informazioni sono a pagina 519 (capitolo 31) del manuale di ngspice all'indirizzo http://ngspice.sourceforge.net/docs/ngspice-manual.pdf


Linux
  1. Come accedere alla webmail tramite cPanel

  2. Ssh:come connettersi a un PC tramite un altro PC utilizzando Ssh?

  3. Come spostare il contenuto di una cartella nella cartella corrente?

  4. CentOS / RHEL 6:come trovo il mio attuale runlevel?

  5. Come creo un crontab attraverso uno script

Come installare Minecraft su Ubuntu

Come importare database tramite phpMyAdmin?

Come controllare la posta elettronica tramite Webmail

Come installare ClipBucket tramite cPanel

come tracciare stdin dal terminale?

Come devo determinare l'attuale utilizzo della rete?