ngspice에서 전류를 그리는 방법은 무엇입니까?


11

ngspice의 현재와 힘을 그려보고 싶습니다. 예를 들어 전압의 경우 노드 1에서 전압을 플롯하려면 다음을 사용하십시오.

plot v(1)

문제는 i (1)을 시도 할 때 벡터가 인식되지 않는다는 것입니다. 누군가이 작업을 수행하는 방법에 대한 몇 가지 예를 제공 할 수 있습니까?


답변:


8

Oli는 정답을 제공했지만 I (element_name)은 상용 SPICE 버전에만 추가 된 확장입니다.

ngspice (Berkeley Spice 3 기반)에서는 (독립적 인) 전압 소스를 통해서만 전류를 플롯 할 수 있습니다. SPICE가 작동하는 회로 방정식에 나타나는 유일한 전류입니다.

대화식 Spice 세션 또는 스크립트의 특수 블록 ( 이 질문 참조 ) (v(1)-v(2))/1k에서 전류가 노드 1과 2 사이의 1kΩ 저항을 통과 할 때 와 같은 표현식을 사용할 수 있습니다 . 1μF 커패시터와 같은 반응성 요소의 (v(1) - v(2))/(2*pi*frequency*1u)경우 또한 작동합니다.


두 번째 해결책 (표현식)을 적용하기가 어렵지 않아야합니다. ngspice가 컴포넌트의 값과 노드 이름을 얻는 방법이 있다면 매뉴얼에서 볼 수 있습니다. 모델 매개 변수가있는 더미 벡터가 있음을 확실히 알고 있습니다.
JPC

6

나는 ngspice를 사용하지 않았습니다 (LTSpice를 사용하지만 거의 모든 SPICE는 원래 버클리 구문을 기반으로하고 비슷하게 작동합니다). 그러나 일반적으로 구성 요소를 통해 또는 트랜지스터의 기본으로 전류 플로팅합니다. Kirchoff의 첫 번째 법칙 에 따르면 노드에서보다 (한 지점에서 만나는 전류의 합은 0입니다)

편집-jpc가 지적했듯이 ngspice (및 아마도 대부분의 다른 비상업적 / 초기 변형)의 경우 전압 소스를 통해서만 전류를 플롯 할 수 있기 때문에 약간 다릅니다. 따라서 관심있는 회로의 레그에 0V 소스를 추가하고이를 통해 전류를 플로팅해야합니다. 아래에 예를 추가했습니다.

따라서 전압 소스 (V1)가있는 저항 (R1)으로 구성된 간단한 회로가 있다면 (넷리스트의 전문가가 아니므로 대략적인 예를 들어보십시오.)

V10 5

R110 1000

(1, 0은 노드, 5 (V) 및 1000 (Ohms)는 각각의 값입니다)

I (1)이 아니라 I (R1) 또는 I (V1)로 전류를 플로팅 할 수 있습니다. 그러나 전압에 대해 V (1)을 플로팅 할 수 있습니다.

NGSPICE 버전 (테스트 및 확인)

V1 5 5
R12 2 1000 Vdummy 200

Vdummy는 저항과 직렬로 연결되어 있으므로 동일한 전류가 저항을 통과해야합니다. R1의 전류를 플로팅하기 위해 I (Vdummy)를 씁니다. 더 복잡한 회로의 경우 동일한 조건이 적용되는지 확인하십시오.

LTspice의 "실제"예제는 다음과 같습니다.

넷리스트

V1 V + 0 24 Rser = 0
V2 SIG 0 SINE (-1.4563 1m 1000 000) AC 2 Rser = 0
V3 V-
024 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

회로 사진

회로 예

플롯 옵션

(I (n001), I (n002) 등은 없습니다)

플롯 옵션


1
jpc가 방금 언급했듯이 ngspice와 함께 전압 소스를 통해서만 전류를 플롯 할 수 있습니다. 방금 ngspice를 다운로드하여 확인했습니다 .i (Vx)를 넣을 수는 있지만 i (Rx) 등을 넣을 수는 없습니다. 따라서 회로의 모든 구간에 0V 소스를 추가해야합니다. (Vx라고 함) 플롯 i (Vx)를 넣으십시오.
Oli Glaser

@OliGlaser : 실제로 대부분의 상용 SPICE 포크는 SPICE2 코드베이스 (Fortran)를 기반으로하는 반면 ngspice (및 기타 오픈 소스 / 프리웨어 버전)는 SPICE3이라는 최신 (!) C 언어 재 작성을 기반으로합니다. 배심원은 아직 어느 쪽이 더 낫다고 생각합니다. :)
jpc

4

전류를 플로팅 할 수 있지만 시뮬레이션을 실행하기 전에 알고 싶은 전류를 알아야합니다.

예를 들어 다이오드 D1이 있고이를 통해 전류를 플로팅하려는 경우 다음을 수행 할 수 있습니다.

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

자세한 내용은 http://ngspice.sourceforge.net/docs/ngspice-manual.pdf 의 ngspice 설명서 519 페이지 (31 장)에 있습니다.


3

단일 구성 요소에서 DC 전압을 스위핑하는 경우 분기 전류를 플로팅 할 수 있습니다. 다음 넷리스트를로드하여

.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
이것은 다른 답변이 아직 말하지 않은 것을 추가하지 않으며 너무 유용하여 자체적으로 유용하지 않습니다.
데이브 트위드

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.