Ngspice'de akım nasıl çizilir?


11

Akım ve gücü ngspice'de çizmek istiyorum. Voltaj durumunda, örneğin, voltajı 1 nolu düğümde çizmek istersem:

plot v(1)

Sorun, i (1) 'i denediğimde vektör tanınmıyor. Birisi bunun nasıl yapılacağı hakkında birkaç örnek verebilir mi?


Yanıtlar:


8

Oli doğru bir cevap verdi, ancak I (element_name) sadece ticari SPICE sürümlerine eklenen bir uzantı.

Ngspice'de (Berkeley Spice 3 tabanlı) akımları yalnızca (bağımsız) voltaj kaynakları üzerinden çizebilirsiniz. SPICE'ın çalıştığı devre denklemlerinde görünen tek akım bunlar.

İnteraktif Baharat oturumda veya komut dosyası özel bir bloktan (ayrıca bkz bu soruyu sizin gibi ifadeleri kullanabilirsiniz) (v(1)-v(2))/1kgibi bir şey mevcut düğümlerinin 1 (a 1μF kondansatör gibi) reaktif elemanlar için 2 arasında bir 1kQ direnç üzerinden olduğunda (v(1) - v(2))/(2*pi*frequency*1u)gerektiği ayrıca çalışır.


İkinci çözümümün (ifadelerle) uygulanması çok zor olmamalı. Kılavuzda, ngspice'in bir bileşenin değerini ve hatta düğüm adlarını almanın bir yolu olup olmadığını görebilirsiniz. Model parametreleri olan kukla vektörler olduğundan eminim.
jpc

6

Ben ngspice kullanmadıysanız, ancak genellikle akımı çizmek (ı LTspice kullanın, ancak hemen hemen bütün baharatlar orijinal Berkeley sözdizimi dayanmaktadır anlamak ve çalışma benzer şeyden) aracılığıyla daha doğrusu, bir bileşen veya bir transistörün örn üssü haline Kirchoff'un ilk yasasına göre, bir düğümden ziyade (bir noktada toplanan akımların toplamı sıfırdır)

EDIT - jpc'in işaret ettiği gibi, ngspice (ve muhtemelen diğer ticari olmayan / erken varyantların çoğu) için, akımları sadece bir voltaj kaynağı aracılığıyla çizebileceğiniz için biraz farklıdır. Bu yüzden, ilgilenilen devrenin bacağına 0V kaynağı eklemek ve akımı bu şekilde çizmek gerekir. Aşağıya bir örnek ekledim.

Bu nedenle, üzerinde bir voltaj kaynağı (V1) olan bir direnç (R1) içeren basit bir devreniz varsa (netlist'de uzman değilim, bu yüzden kaba örnek alın):

V1 1 0 5

R1 1 0 1000

(1, 0 düğümlerdir, 5 (V) ve 1000 (Ohm) ilgili değerlerdir)

Akımı I (1) ile değil I (R1) veya I (V1) ile çizebilirsiniz. Ancak voltaj için V (1) çizebilirsiniz.

NGSPICE sürümü (test edildi ve onaylandı)

V1 1 0 5
R1 1 2 1000 Vdummi 2 0 0

Vdummy'nin dirençle seri olduğunu unutmayın, bu yüzden aynı akım içinden akmalıdır. Yani R1 için akımı çizmek için I (Vdummy) yazıyoruz. Daha karmaşık bir devre için sadece aynı koşulların geçerli olduğundan emin oluruz.

İşte LTspice'den "gerçek" bir örnek:

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

DEVRE RESİMİ

Devre Örneği

ARSA SEÇENEKLERİ

(I (n001), I (n002) vb. Olmadığını unutmayın)

Çizim Seçenekleri


1
JPC'nin sadece yorumladığı gibi, ngspice ile sadece voltaj kaynakları üzerinden akımları çizebilirsiniz. Sadece ngspice indirdim ve bunu doğruladım, i (Vx) koymak mümkün, ama i (Rx) vb. Koymak mümkün değil. (Vx olarak adlandırılır) ve i (Vx) çizimini koy.
Oli Glaser

@OliGlaser: Aslında ticari SPICE çatallarının çoğu SPICE2 kod tabanına (Fortran'da), ngspice (ve diğer açık kaynak / ücretsiz sürümler) ise SPICE3 adı verilen daha yeni (!) C dili yeniden yazımına dayanır. Jüri hala hangisinin daha iyi olduğuna inanıyorum. :)
jpc

4

Akımları çizebilirsiniz, ancak simülasyonunuzu çalıştırmadan önce hangi akımları bilmek istediğinizi bilmeniz gerekir.

Örneğin, bir D1 diyotunuz varsa ve içinden akım çizmek istiyorsanız, şunları yapabilirsiniz:

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

Daha fazla bilgi http://ngspice.sourceforge.net/docs/ngspice-manual.pdf adresindeki ngspice kılavuzunun 519. sayfasında (Bölüm 31) bulunmaktadır.


3

DC voltajını tek bir bileşende süpürme durumunda dal akımını çizebilirsiniz. Aşağıdaki netlist'i yükleyerek

.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 ve komuta

dc vin -10 5 0.001
plot -vin#branch

diyot d1 boyunca bir akım grafiği çizebilmelisiniz.


2

akım çizimleri için o branşa sıfır gerilim kaynağı ekleyin ve terminale vlabel # branşını yazın.


3
Bu, diğer cevapların daha önce söylemediği hiçbir şey eklemez ve kendi başına yararlı olamayacak kadar kısa.
Dave Tweed

2

NGSpice 27 R2017'den beri, bu kod satırını yerleştirmek:

.options savecurrents

İçin içinden çağrılabilir akımları, kaydeder @R1[i], @D1[id]vb

plot @R1[i] vs v(1)

Bu seçeneği NGSpice Kılavuzunda arayın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.