Как построить ток в ngspice?


11

Я хочу изобразить ток и силу в ngspice. Например, в случае напряжения, если бы я хотел построить график напряжения в узле 1, я бы использовал:

plot v(1)

Проблема в том, что, когда я пытаюсь i (1), вектор не распознается. Может ли кто-нибудь привести несколько примеров, как это сделать?


Ответы:


8

Оли дал правильный ответ, но I (element_name) - это расширение, добавленное только в коммерческие версии SPICE.

В ngspice (который основан на Berkeley Spice 3) вы можете отображать токи только через (независимые) источники напряжения. Это единственные токи, которые появляются в схемах уравнений, от которых работает SPICE.

В интерактивной сессии специй или из специального блока в сценарии (см также этот вопрос ) , вы можете использовать такие выражения , как , (v(1)-v(2))/1kкогда ток через резистор 1кОм между узлами 1 и 2. Для реактивных элементов (как конденсатор 1 мкФ) что - то вроде (v(1) - v(2))/(2*pi*frequency*1u)должно также работа.


Мое второе решение (с выражениями) не должно быть очень сложным для применения. В руководстве вы можете увидеть, есть ли у ngspice какой-либо способ получить значение и, возможно, даже имена узлов компонента. Я точно знаю, что существуют фиктивные векторы с параметрами модели.
jpc

6

Я не использовал ngspice (я использую LTSpice, но, насколько я понимаю, почти все SPICE основаны на оригинальном синтаксисе Беркли и работают аналогично), но обычно вы прокладываете ток через компонент или, например, в базу транзистора, скорее чем в узле, согласно первому закону Кирхгофа (сумма токов, встречающихся в точке, равна нулю)

РЕДАКТИРОВАТЬ - как указал jpc, для ngspice (и, вероятно, большинства других некоммерческих / ранних вариантов) все немного отличается, так как вы можете прокладывать токи только через источник напряжения. Таким образом, нужно было бы добавить источник 0 В на участке интересующей цепи, и проследить ток через это. Я добавил пример ниже.

Так что, если у вас есть простая схема, состоящая из резистора (R1) с источником напряжения (V1) через него (я не эксперт по списку цепей, поэтому возьмем пример грубый):

V1 1 0 5

R1 1 0 1000

(1, 0 - узлы, 5 (В) и 1000 (Ом) - соответствующие значения)

Вы можете построить график с I (R1) или с I (V1), а не с I (1). Однако вы можете построить график V (1) для напряжения.

Версия NGSPICE (проверена и подтверждена)

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

Обратите внимание, что Vdummy подключен последовательно с резистором, поэтому через него должен течь один и тот же ток. Таким образом, чтобы построить ток для R1 мы пишем I (Vdummy). Для более сложной схемы мы просто следим за тем же условием.

Вот «реальный» пример из 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 мкФ
R3 N004 0 3K9
R4 N002 0 22K
C1 N002 SIG 100 мкФ

ФОТО ЦЕПИ

Circuit Ex

ВАРИАНТЫ УЧАСТКА

(Обратите внимание, что нет I (n001), I (n002) и т. Д.)

Варианты сюжета


1
Как только что прокомментировал jpc, с помощью ngspice вы можете отображать токи только через источники напряжения. Я только что скачал ngspice и подтвердил это, можно поставить i (Vx), но не i (Rx) и т. Д. Итак, я думаю, вам нужно добавить источник 0 В на любом участке вашей цепи, через которую вы хотите построить ток (скажем, это называется Vx) и поставить сюжет я (Vx).
Оли Глейзер

@OliGlaser: На самом деле большинство коммерческих форков SPICE основаны на базе кода SPICE2 (на Фортране), в то время как ngspice (и другие версии с открытым исходным кодом / бесплатные программы) основаны на более новой (!) Переписке языка C, которая называлась SPICE3. Я верю, что жюри все еще не знает, кто из них лучше. :)
jpc

4

Вы можете строить токи, но вам нужно знать, о каких токах вы хотите знать, прежде чем запускать симуляцию.

Например, если у вас был диод D1 и вы хотите провести ток через него, вы можете:

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

Более подробная информация находится на странице 519 (глава 31) руководства ngspice по адресу http://ngspice.sourceforge.net/docs/ngspice-manual.pdf.


3

В случае скачкообразного постоянного напряжения на одном компоненте, вы можете построить график ответвления тока. Загружая следующий список соединений

.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
Это не добавляет ничего, что другие ответы еще не сказали, и слишком кратко, чтобы быть полезным само по себе.
Дэйв Твид

2

Начиная с NGSpice 27 R2017, разместив эту строку кода:

.options savecurrents

Сохраняет токи, которые могут быть вызваны через для @R1[i], @D1[id]и т.д.

plot @R1[i] vs v(1)

Ищите эту опцию в Руководстве NGSpice .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.