¿Cómo trazar la corriente en ngspice?

11

Deseo trazar la corriente y el poder en ngspice. En el caso del voltaje, por ejemplo, si quisiera trazar el voltaje en el nodo 1, usaría:

plot v(1)

El problema es que cuando intento i (1), el vector no se reconoce. ¿Podría alguien proporcionar algunos ejemplos sobre cómo hacer esto?

sj755
fuente
1
i(1)siempre es 0.
endolito el

Respuestas:

8

Oli dio una respuesta correcta, pero el I (element_name) es una extensión agregada solo a las versiones comerciales de SPICE.

En ngspice (que se basa en Berkeley Spice 3) solo puede trazar corrientes a través de fuentes de voltaje (independientes). Estas son las únicas corrientes que aparecen en las ecuaciones de circuito desde las que trabaja SPICE.

En una sesión interactiva de Spice o desde un bloque especial en el script (vea también esta pregunta ), puede usar expresiones como (v(1)-v(2))/1kcuando la corriente es a través de una resistencia de 1kΩ entre los nodos 1 y 2. Para elementos reactivos (como un condensador de 1μF) algo como (v(1) - v(2))/(2*pi*frequency*1u)debería Además trabajo.

jpc
fuente
Mi segunda solución (con expresiones) no debería ser muy difícil de aplicar. Puede ver en el manual si ngspice tiene alguna forma de obtener el valor y tal vez incluso los nombres de nodo de un componente. Sé con certeza que hay vectores ficticios con parámetros de modelo.
jpc
6

No he usado ngspice (uso LTSpice, pero, por lo que entiendo, casi todos los SPICE se basan en la sintaxis original de Berkeley y funcionan de manera similar), pero generalmente trazan la corriente a través de un componente o, por ejemplo, en la base de un transistor, más bien que en un nodo, de acuerdo con la primera ley de Kirchoff (la suma de las corrientes que se encuentran en un punto es cero)

EDITAR: como señaló jpc, para ngspice (y probablemente la mayoría de las otras variantes no comerciales / tempranas) las cosas son ligeramente diferentes, ya que solo puede trazar corrientes a través de una fuente de voltaje. Por lo tanto, uno tendría que agregar una fuente de 0V en el tramo del circuito de interés y trazar la corriente a través de esto. He agregado un ejemplo a continuación.

Entonces, si tiene un circuito simple que consiste en una resistencia (R1) con una fuente de voltaje (V1) a través de él (no soy un experto en la lista de redes, tome como ejemplo aproximado):

V1 1 0 5

R1 1 0 1000

(1, 0 son los nodos, 5 (V) y 1000 (ohmios) son los valores respectivos)

Puede trazar la corriente con I (R1) o I (V1), no I (1). Sin embargo, podría trazar V (1) para el voltaje.

Versión NGSPICE (probada y confirmada)

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

Tenga en cuenta que Vdummy está en serie con la resistencia, por lo que la misma corriente debe fluir a través de ella. Entonces, para trazar la corriente para R1, escribimos I (Vdummy). Para un circuito más complejo solo nos aseguramos de que se apliquen las mismas condiciones.

Aquí hay un ejemplo "real" de 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

IMAGEN DE CIRCUITO

Circuito Ex

OPCIONES DE PARCELA

(Tenga en cuenta que no hay I (n001), I (n002), etc.)

Opciones de trazado

Oli Glaser
fuente
1
Como jpc acaba de comentar, parece que con ngspice solo puede trazar corrientes a través de fuentes de voltaje. Acabo de descargar ngspice y confirmó esto, es posible poner i (Vx), pero no i (Rx), etc. Así que supongo que necesita agregar una fuente de 0V en cualquier tramo de su circuito que desee trazar la corriente. (digamos que se llama Vx) y poner plot i (Vx).
Oli Glaser
@OliGlaser: En realidad, la mayoría de las horquillas comerciales SPICE se basan en la base de código SPICE2 (en Fortran), mientras que ngspice (y otras versiones de código abierto / freeware) se basan en la reescritura de lenguaje C más nueva (!) Que se llamó SPICE3. Creo que el jurado aún no sabe cuál es mejor. :)
jpc
4

Puede trazar corrientes, pero necesita saber qué corrientes desea saber antes de ejecutar su simulación.

Por ejemplo, si tuviera un diodo D1 y quisiera trazar la corriente a través de él, podría:

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

Más información en la página 519 (Capítulo 31) del manual ngspice en http://ngspice.sourceforge.net/docs/ngspice-manual.pdf

Nigel Williams
fuente
3

En caso de un voltaje de CC de barrido a través de un solo componente, puede trazar la corriente de derivación. Al cargar la siguiente lista de redes

.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

a picante y al mando

dc vin -10 5 0.001
plot -vin#branch

Debería poder obtener un diagrama de trazado de la corriente a través del diodo d1.

gmph
fuente
2

para el trazado actual, agregue una fuente de voltaje cero en esa rama y escriba vlabel # branch en el terminal.

Prasante
fuente
3
Esto no agrega nada que las otras respuestas no hayan dicho ya, y es demasiado breve para ser útil por sí solo.
Dave Tweed
2

Desde NGSpice 27 R2017, colocando esta línea de código:

.options savecurrents

Guarda las corrientes, que pueden ser llamadas a través de @R1[i], @D1[id], etc.

plot @R1[i] vs v(1)

Busque esta opción en el Manual de NGSpice .

Brethlosze
fuente