Como traçar a corrente no ngspice?


11

Desejo traçar a corrente e a potência em Ngspice. No caso de tensão, por exemplo, se eu quisesse plotar a tensão no nó 1, usaria:

plot v(1)

O problema é que, quando tento i (1), o vetor não é reconhecido. Alguém poderia fornecer alguns exemplos de como fazer isso?


Respostas:


8

Oli deu uma resposta correta, mas o I (element_name) é uma extensão adicionada apenas às versões comerciais do SPICE.

No ngspice (baseado no Berkeley Spice 3), você só pode plotar correntes através de fontes de tensão (independentes). Essas são as únicas correntes que aparecem nas equações de circuito das quais o SPICE trabalha.

Em uma sessão interativa do Spice ou de um bloco especial no script (consulte também esta pergunta ), você pode usar expressões como (v(1)-v(2))/1kquando a corrente passa por um resistor de 1kΩ entre os nós 1 e 2. Para elementos reativos (como um capacitor de 1μF), algo como (v(1) - v(2))/(2*pi*frequency*1u)deveria também funciona.


Minha segunda solução (com expressões) não deve ser muito difícil de aplicar. Você pode ver no manual se o ngspice tem alguma maneira de obter o valor e talvez até os nomes dos nós de um componente. Eu tenho certeza que existem vetores fictícios com parâmetros de modelo.
JPC

6

Eu não usei o ngspice (eu uso o LTSpice, mas pelo que entendi praticamente todas as SPICEs são baseadas na sintaxe original de Berkeley e funcionam da mesma forma), mas geralmente você plota a corrente através de um componente ou, por exemplo, na base de um transistor, do que em um nó, de acordo com a primeira lei de Kirchoff (a soma das correntes reunidas em um ponto é zero)

EDIT - como jpc apontou, para ngspice (e provavelmente a maioria das outras variantes não comerciais / iniciais) as coisas são um pouco diferentes, pois você só pode plotar correntes através de uma fonte de tensão. Portanto, seria necessário adicionar uma fonte de 0V na parte do circuito de interesse e traçar a corrente através disso. Eu adicionei um exemplo abaixo.

Portanto, se você tiver um circuito simples que consiste em um resistor (R1) com uma fonte de tensão (V1) através dele (eu não sou um especialista no netlist, tome um exemplo aproximado):

V1 1 0 5

R1 1 0 1000

(1, 0 são os nós, 5 (V) e 1000 (Ohms) são os respectivos valores)

Você pode plotar a corrente com I (R1) ou I (V1), não com I (1). No entanto, você pode plotar V (1) para a tensão.

Versão NGSPICE (testada e confirmada)

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

Observe que o Vdummy está em série com o resistor, portanto a mesma corrente deve fluir através dele. Então, para plotar a corrente para R1, escrevemos I (Vdummy). Para um circuito mais complexo, garantimos apenas as mesmas condições.

Aqui está um exemplo "real" do LTspice:

NETLIST

V1 V + 0 24 Rser = 0
V2 SIG 0 SINE (-1,44563 1m 1000 0 0 0 0) CA 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

IMAGEM DO CIRCUITO

Circuito Ex

OPÇÕES DE LOTE

(Observe que não há I (n001), I (n002) etc.)

Opções de plotagem


1
Como o jpc acabou de comentar, parece que com o ngspice você só pode plotar correntes através de fontes de tensão. Acabei de baixar o ngspice e confirmei isso, é possível colocar i (Vx), mas não i (Rx), etc. Então, acho que você precisa adicionar uma fonte de 0V em qualquer parte do circuito em que deseja traçar a corrente. (diga que se chama Vx) e coloque o gráfico i (Vx).
Oli Glaser

@OliGlaser: Na verdade, a maioria dos garfos comerciais do SPICE são baseados na base de código SPICE2 (no Fortran), enquanto o ngspice (e outras versões de código-fonte aberto / freeware) é baseado na nova reescrita da linguagem C! Eu acredito que o júri ainda está em dúvida sobre qual é o melhor. :)
JPC

4

Você pode plotar correntes, mas precisa saber sobre quais correntes deseja saber antes de executar sua simulação.

Por exemplo, se você tivesse um diodo D1 e desejasse plotar a corrente através dele, poderia:

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

Mais informações estão na página 519 (capítulo 31) do manual ngspice em http://ngspice.sourceforge.net/docs/ngspice-manual.pdf


3

No caso de varrer a tensão CC em um único componente, você pode plotar a corrente de derivação. Ao carregar a seguinte netlist

.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

para ngspice e comandando

dc vin -10 5 0.001
plot -vin#branch

você deve obter um diagrama de plotagem de corrente no diodo d1.


2

para plotagem de corrente, adicione a fonte de tensão zero nessa ramificação e digite vlabel # branch no terminal.


3
Isso não acrescenta nada que as outras respostas ainda não disseram e é muito conciso para ser útil por si só.
Dave Tweed

2

Desde o NGSpice 27 R2017, colocando esta linha de código:

.options savecurrents

Salva as correntes, que podem ser chamados através de @R1[i], @D1[id], etc.

plot @R1[i] vs v(1)

Procure essa opção no Manual do NGSpice .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.