컴퓨터는 적절하게 사용하면 강력한 도구가 될 수 있으며, 특히 과학 및 엔지니어링 분야에서 그렇습니다. 컴퓨터로 전기 회로를 시뮬레이션 하는 소프트웨어가 있으며 , 이러한 프로그램은 회로 설계자가 실제 회로를 구축하기 전에 아이디어를 테스트하는 데 매우 유용하여 많은 시간과 비용을 절약할 수 있습니다.
동일한 프로그램은 전자공학을 처음 공부하는 학생에게 환상적인 도움이 될 수 있으며, 실제 회로를 조립하지 않고도 아이디어를 빠르고 쉽게 탐구할 수 있습니다. 물론 실제 회로를 실제로 조립하고 테스트하는 것을 대체할 수 있는 것은 없지만, 컴퓨터 시뮬레이션은 학생이 변화를 실험하고 회로에 미치는 효과를 볼 수 있도록 하여 학습 과정에 확실히 도움이 됩니다.
이 책 전반에 걸쳐 중요한 개념을 설명하기 위해 회로 시뮬레이션의 컴퓨터 출력물을 자주 통합할 것입니다. 컴퓨터 시뮬레이션의 결과를 관찰함으로써 학생은 추상적인 수학적 분석의 위협 없이 회로 동작을 직관적으로 파악할 수 있습니다.
SPICE를 이용한 회로 시뮬레이션
컴퓨터에서 회로를 시뮬레이션하기 위해, 저는 SPICE 라는 특정 프로그램을 사용합니다 . 이 프로그램은 텍스트 목록을 통해 컴퓨터에 회로를 설명하여 작동합니다. 본질적으로 이 목록은 그 자체로 일종의 컴퓨터 프로그램이며, SPICE 언어의 구문 규칙을 따라야 합니다.
그런 다음 컴퓨터를 사용하여 SPICE 프로그램을 처리하거나 "실행"하는데, 이 프로그램은 회로를 설명하는 텍스트 목록을 해석하고 자세한 수학적 분석 결과를 텍스트 형식으로 출력합니다. SPICE 사용에 대한 많은 세부 사항은 더 많은 정보를 원하는 사람들을 위해 이 책 시리즈의 5권("참고문헌")에 설명되어 있습니다. 여기서는 기본 개념만 소개하고 SPICE를 우리가 읽어온 이 간단한 회로의 분석에 적용하겠습니다.
먼저, 컴퓨터에 SPICE를 설치해야 합니다. 무료 프로그램으로, 인터넷에서 다운로드할 수 있으며, 다양한 운영 체제에 적합한 형식으로 제공됩니다. 이 책에서는 SPICE의 이전 버전 중 하나인 버전 2G6을 사용하는데, 사용하기 간편하기 때문입니다.
다음으로, SPICE가 분석할 회로가 필요합니다. 이 장의 앞부분에서 설명한 회로 중 하나를 시도해 보겠습니다. 다음은 회로도입니다.
이 간단한 회로는 배터리와 저항기가 직접 연결된 것으로 구성되어 있습니다. 우리는 배터리의 전압(10볼트)과 저항기의 저항(5Ω)을 알고 있지만 회로에 대해서는 아무것도 모릅니다. 이 회로를 SPICE에 설명하면 옴의 법칙 (I=E/R)을 사용하여 회로에 얼마나 많은 전류가 있는지(최소한) 알려줄 수 있어야 합니다.
SPICE는 텍스트 기반 프로그램입니다
SPICE는 회로도나 다른 형태의 그래픽 설명을 직접 이해할 수 없습니다. SPICE는 텍스트 기반 컴퓨터 프로그램이며, 회로가 구성 요소와 연결 지점에 따라 설명되어야 합니다. 회로의 각 고유한 연결 지점은 SPICE에 대해 "노드" 번호로 설명됩니다. 시뮬레이션할 회로에서 서로 전기적으로 공통인 지점은 동일한 번호를 공유하여 그렇게 지정됩니다.
이전 섹션에서 정의한 대로, 이 숫자를 "노드" 숫자가 아닌 "와이어" 숫자라고 생각하면 도움이 될 수 있습니다. 컴퓨터는 공통 와이어 또는 노드 숫자를 공유하여 무엇이 무엇에 연결되어 있는지 알 수 있습니다. 예제 회로에서는 상단 와이어와 하단 와이어의 두 개의 "노드"만 있습니다. SPICE는 회로 어딘가에 노드 0이 있어야 하므로 와이어에 0과 1이라는 레이블을 붙입니다.
위의 그림에서, 저는 공통 노드 번호를 공유하는 공통 지점의 개념을 강조하기 위해 각각의 와이어 주변에 여러 개의 "1"과 "0" 라벨을 표시했지만, 여전히 이것은 텍스트 설명이 아닌 그래픽 이미지입니다. SPICE는 분석을 진행하기 전에 텍스트 형태로 구성 요소 값과 노드 번호를 제공해야 합니다.
텍스트 편집기를 사용하여 SPICE 파일 만들기<
컴퓨터에서 텍스트 파일을 만들려면 텍스트 편집기 라는 프로그램을 사용해야 합니다 . 워드 프로세서와 비슷하게 텍스트 편집기를 사용하면 텍스트를 입력하고 입력한 내용을 컴퓨터 하드 디스크에 저장된 파일 형태로 기록할 수 있습니다. 텍스트 편집기는 워드 프로세서의 서식 지정 기능이 없습니다( 기울임꼴 , 굵게 또는 밑줄 문자 없음). SPICE와 같은 프로그램은 이 추가 정보를 어떻게 처리해야 할지 모르기 때문에 좋은 기능입니다. 키보드 문자만 기록하고 아무것도 기록하지 않은 일반 텍스트 파일을 만들려면 텍스트 편집기를 사용하는 것이 좋습니다.
DOS나 Windows와 같은 Microsoft 운영 체제를 사용하는 경우, 시스템에 몇 가지 텍스트 편집기를 쉽게 사용할 수 있습니다. DOS에서는 명령 프롬프트에서 edit을 입력하여 호출할 수 있는 오래된 Edit 텍스트 편집 프로그램이 있습니다. Windows(3.x/95/98/NT/Me/2k/XP)에서는 Notepad 텍스트 편집기가 기본 선택입니다.
다른 많은 텍스트 편집 프로그램이 있으며, 일부는 무료이기도 합니다. 저는 Vim 이라는 무료 텍스트 편집기를 사용 하고 Windows 95와 Linux 운영 체제에서 모두 실행합니다. 어떤 편집기를 사용하든 크게 중요하지 않으므로 이 섹션의 스크린샷이 여러분의 것과 달라 보여도 걱정하지 마십시오. 여기서 중요한 정보는 여러분이 입력하는 내용 이며, 어떤 편집기를 사용하느냐 가 아닙니다 .
이 간단한 2개 구성 요소 회로를 SPICE에 설명하려면 텍스트 편집기 프로그램을 호출하고 회로의 "제목" 줄을 입력하는 것으로 시작합니다.
우리는 "v"(전압 소스)로 시작하는 텍스트 줄을 입력하여 배터리를 컴퓨터에 설명할 수 있습니다. 배터리의 각 단자가 연결되는 와이어(노드 번호)와 배터리 전압을 다음과 같이 식별합니다.
이 텍스트 줄은 SPICE에 노드 1과 0 사이에 전압 소스가 연결되어 있고, 직류(DC), 10볼트가 있다는 것을 알려줍니다. 이것이 컴퓨터가 배터리에 대해 알아야 할 전부입니다. 이제 저항기로 넘어가겠습니다. SPICE는 저항기를 문자 "r", 두 노드(연결 지점)의 숫자, 저항(옴)으로 설명해야 합니다. 이것은 컴퓨터 시뮬레이션이므로 저항기의 전력 정격을 지정할 필요가 없습니다. "가상" 구성 요소의 좋은 점 중 하나는 과도한 전압이나 전류로 인해 손상될 수 없다는 것입니다!
이제 SPICE는 노드 1과 0 사이에 5Ω 값을 가진 저항기가 연결되어 있다는 것을 알게 될 것입니다. 이 매우 짧은 텍스트 줄은 배터리(1과 0)와 같은 두 노드 사이에 5Ω의 저항 값을 가진 저항기("r")가 연결되어 있다는 것을 컴퓨터에 알려줍니다.
이 SPICE 명령 모음에 .end 문을 추가하여 회로 설명의 끝을 나타내면 SPICE에 필요한 모든 정보를 하나의 파일에 수집하여 처리할 준비가 됩니다. 컴퓨터 파일의 텍스트 줄로 구성된 이 회로 설명은 기술적으로 netlist 또는 deck 이라고 합니다 .
텍스트 편집기 파일을 SPICE로 이동
필요한 모든 SPICE 명령을 다 입력했으면, SPICE가 호출될 때 참조할 수 있도록 컴퓨터 하드 디스크의 파일에 "저장"해야 합니다. 이게 제 첫 SPICE 넷리스트이기 때문에 "circuit1.cir"이라는 파일 이름으로 저장하겠습니다(실제 이름은 임의적입니다).
운영 체제의 파일 이름 규칙을 위반하지 않는 한, 첫 번째 SPICE 넷리스트의 이름을 완전히 다른 것으로 지정할 수 있습니다. 예를 들어 DOS에서는 이름에 8자, 확장자에 3자(12345678.123)를 넘지 않아야 합니다.
SPICE를 호출하려면(circuit1.cir netlist 파일의 내용을 처리하도록 지정하려면) 텍스트 편집기를 종료하고 명령 프롬프트(Microsoft 사용자의 경우 "DOS 프롬프트")에 액세스해야 합니다. 여기서 컴퓨터 운영 체제가 따를 텍스트 명령을 입력할 수 있습니다.
프로그램을 호출하는 이런 "원시적인" 방식은 "포인트 앤 클릭" 그래픽 환경에 익숙한 컴퓨터 사용자에게는 고풍스럽게 보일 수 있지만, 매우 강력하고 유연한 작업 방식입니다.
SPICE를 사용하여 여기서 하는 일은 간단한 형태의 컴퓨터 프로그래밍이며, 마우스를 사용하여 아이콘 이미지를 클릭하는 것에 비해 컴퓨터에 텍스트 형태의 명령을 따르는 데 익숙해질수록 컴퓨터를 더 능숙하게 다룰 수 있게 됩니다.
명령 프롬프트에서 이 명령을 입력한 다음 [Enter] 키를 누릅니다. (이 예에서는 circuit1.cir이라는 파일 이름을 사용합니다. 넷리스트 파일에 다른 파일 이름을 선택한 경우 해당 파일 이름으로 대체합니다.)
스파이스 < circuit1.cir
[Enter] 키를 누르기 직전의 컴퓨터(Linux 운영 체제 실행)에서 다음과 같은 모습이 나타납니다.
[Enter] 키를 눌러 이 명령을 실행하자마자 SPICE 출력의 텍스트가 컴퓨터 화면에 스크롤되어야 합니다. 다음은 내 컴퓨터에서 SPICE가 출력하는 내용을 보여주는 스크린샷입니다(전체 텍스트를 보여주기 위해 "터미널" 창을 길게 했습니다. 일반 크기의 터미널에서는 텍스트가 한 페이지 길이를 쉽게 넘습니다):
SPICE는 제목 줄과 .end 문장이 포함된 넷리스트의 반복으로 시작합니다. 시뮬레이션의 중간쯤에서 노드 0을 기준으로 모든 노드의 전압을 표시합니다. 이 예에서 노드 0 외에 노드가 하나뿐이므로 거기에 전압을 표시합니다: 10.0000볼트.
그런 다음 각 전압 소스를 통과하는 전류를 표시합니다. 전체 회로에 전압 소스가 하나뿐이므로 해당 전압 소스를 통과하는 전류만 표시합니다. 이 경우 소스 전류는 2암페어입니다. SPICE가 전류를 분석하는 방식의 이상한 점 때문에 2암페어의 값은 음(-) 2암페어로 출력됩니다.
컴퓨터 분석 보고서의 마지막 텍스트 줄은 "전체 전력 소모"로, 이 경우 "2.00E+01" 와트로 주어집니다. 2.00 x 101 또는 20와트. SPICE는 일반(고정 소수점) 표기법이 아닌 과학적 표기법으로 대부분의 수치를 출력합니다.
처음에는 더 혼란스러울 수 있지만, 실제로 매우 크거나 매우 작은 숫자가 관련되면 덜 혼란스럽습니다. 과학적 표기법에 대한 세부 사항은 이 책의 다음 장에서 다룰 것입니다.
SPICE와 같은 "원시적인" 텍스트 기반 프로그램을 사용하는 이점 중 하나는 처리하는 텍스트 파일이 다른 파일 형식, 특히 다른 회로 시뮬레이션 소프트웨어에서 사용하는 그래픽 형식에 비해 매우 작다는 것입니다.
또한 SPICE의 출력이 일반 텍스트라는 사실은 SPICE의 출력을 추가로 조작할 수 있는 다른 텍스트 파일로 보낼 수 있다는 것을 의미합니다. 이를 위해 컴퓨터 운영 체제에 명령을 다시 내려 SPICE를 호출하고 이번에는 출력을 "output.txt"라고 부르는 파일로 리디렉션합니다.
이번에는 SPICE가 "조용히" 실행되며, 이전처럼 컴퓨터 화면에 텍스트 출력 스트림이 표시되지 않습니다. 새 파일인 output1.txt가 생성되며, 텍스트 편집기나 워드 프로세서를 사용하여 열어서 변경할 수 있습니다. 이 그림에서는 동일한 텍스트 편집기( Vim )를 사용하여 이 파일을 엽니다.
이제 나는 이 파일을 자유롭게 편집하여 날짜와 시간을 표시하는 "배너"와 같은 불필요한 텍스트를 삭제하고 내 회로 분석에 관련이 있다고 생각되는 텍스트만 남겨둘 수 있습니다.
적절하게 편집하고 같은 파일 이름(이 예에서는 output.txt)으로 다시 저장하면, 텍스트를 모든 종류의 문서에 붙여넣을 수 있습니다. "일반 텍스트"는 거의 모든 컴퓨터 시스템에 대한 보편적인 파일 형식입니다. "스크린샷" 그래픽 이미지가 아닌 이 책의 텍스트에 직접 포함할 수도 있습니다. 다음과 같습니다.
내 첫 번째 회로
v 1 0 직류 10
알 1 0 5
.끝
노드 전압
( 1) 10.0000
전압원 전류
이름 현재
브 -2.000E+00
총 전력 소모 2.00E+01 와트
우연히, 이것은 이 책 시리즈의 SPICE 시뮬레이션에서 텍스트 출력을 위한 선호되는 형식입니다. 즉, 그래픽 스크린샷 이미지가 아닌 실제 텍스트로 출력하는 것입니다.
SPICE에서 값 변경
시뮬레이션에서 구성 요소 값을 변경하려면 넷리스트 파일(circuit1.cir)을 열고 회로의 텍스트 설명을 필요한 대로 수정한 다음, 해당 변경 사항을 동일한 파일 이름으로 저장하고 명령 프롬프트에서 SPICE를 다시 호출해야 합니다.
텍스트 파일을 편집하고 처리하는 이 과정은 모든 컴퓨터 프로그래머에게 익숙한 과정입니다. 제가 SPICE를 가르치는 것을 좋아하는 이유 중 하나는 학습자가 컴퓨터 프로그래머처럼 생각하고 일할 수 있도록 준비시켜 주기 때문입니다. 컴퓨터 프로그래밍은 고급 전자 작업의 중요한 분야이기 때문에 좋은 일입니다.
이전에 우리는 옴의 법칙을 사용하여 전기 회로의 세 변수(전압, 전류 또는 저항) 중 하나를 변경하는 결과를 탐구하여 수학적으로 무슨 일이 일어날지 예측했습니다. 이제 SPICE를 사용하여 수학을 대신해 같은 것을 시도해 보겠습니다.
마지막 예제 회로에서 전압을 10볼트에서 30볼트로 세 배로 늘리고 회로 저항은 그대로 둔다면 전류도 세 배로 늘어날 것으로 예상할 수 있습니다. 첫 번째 파일을 덮어쓰지 않도록 넷리스트 파일의 이름을 바꿔서 시도해 보겠습니다.
이렇게 하면 두 버전의 회로 시뮬레이션을 나중에 사용할 수 있도록 컴퓨터의 하드 드라이브에 저장할 수 있습니다. 다음 텍스트 목록은 이 수정된 넷리스트에 대한 SPICE 출력이며, 내 컴퓨터 화면의 그래픽 이미지가 아닌 일반 텍스트로 포맷되었습니다.
두 번째 예제 회로
v 1 0 직류 30
알 1 0 5
.끝
노드 전압
( 1) 30.0000
전압원 전류
이름 현재
브 -6.000E+00
총 전력 소모 1.80E+02 와트
예상했던 대로, 전압이 증가함에 따라 전류가 세 배로 증가했습니다. 전류는 원래 2암페어였지만, 지금은 6암페어로 증가했습니다(-6.000 x 100). 또한 회로의 총 전력 소모가 어떻게 증가했는지 주목하세요. 이전에는 20와트였지만, 지금은 180와트(1.8 x 102)입니다.
전력이 전압의 제곱과 관련이 있다는 것을 상기하면(줄의 법칙: P=E2/R), 이는 말이 됩니다. 회로 전압을 세 배로 늘리면 전력은 9배(32=9) 증가해야 합니다. 9 곱하기 20은 실제로 180이므로 SPICE의 출력은 실제로 전기 회로의 전력에 대해 알고 있는 것과 상관관계가 있습니다.
SPICE에서 주석 만들기
이 간단한 회로가 광범위한 배터리 전압에서 어떻게 반응하는지 보고 싶다면 SPICE 내의 고급 옵션 중 일부를 호출할 수 있습니다. 여기서는 ".dc" 분석 옵션을 사용하여 배터리 전압을 5V 단위로 0~100V로 변경하고 모든 단계에서 회로 전압과 전류를 출력합니다.
별표(”*”)로 시작하는 SPICE 넷리스트의 줄은 주석 입니다 . 즉, 회로 분석과 관련된 작업을 하라고 컴퓨터에 지시하는 것이 아니라, 넷리스트 텍스트를 읽는 모든 사람을 위한 메모 역할을 할 뿐입니다.
세 번째 예제 회로
브이 1 0
알 1 0 5
* ".dc" 명령문은 spice에게 "v" 공급을 쓸어내라고 지시합니다.
*전압은 0~100V까지 5V 단위로 조절 가능합니다.
.dc v 0 100 5
.print dc v(1) i(v)
.끝
인쇄 및 플롯 명령
이 SPICE 넷리스트의 .print 명령은 SPICE에 분석의 각 단계에 해당하는 숫자 열을 인쇄하도록 지시합니다.
vi(v)
0.000E+00 0.000E+00
5.000E+00 -1.000E+00
1.000E+01 -2.000E+00
1.500E+01 -3.000E+00
2.000E+01 -4.000E+00
2.500E+01 -5.000E+00
3.000E+01 -6.000E+00
3.500E+01 -7.000E+00
4.000E+01 -8.000E+00
4.500E+01 -9.000E+00
5.000E+01 -1.000E+01
5.500E+01 -1.100E+01
6.000E+01 -1.200E+01
6.500E+01 -1.300E+01
7.000E+01 -1.400E+01
7.500E+01 -1.500E+01
8.000E+01 -1.600E+01
8.500E+01 -1.700E+01
9.000E+01 -1.800E+01
9.500E+01 -1.900E+01
1.000E+02 -2.000E+01
netlist 파일을 다시 편집하여 .print 명령을 .plot 명령으로 변경하면 SPICE는 텍스트 문자로 구성된 간단한 그래프를 출력합니다.
범례: + = v#branch
------------------------------------- ---------
스윕 v#branch-2.00e+01 -1.00e+01 0.00e+00
---------|------------|--- --------|
0.000e+00 0.000e+00 . . +
5.000e+00 -1.000e+00 . . + .
1.000e+01 -2.000e+00 . . + .
1.500e+01 -3.000e+00 . . + .
2.000e+01 -4.000e+00 . . + .
2.500e+01 -5.000e+00 . . + .
3.000e+01 -6.000e+00 . . + .
3.500e+01 -7.000e+00 . . + .
4.000e+01 -8.000e+00 . . + .
4.500e+01 -9.000e+00 . . + .
5.000e+01 -1.000e+01 . + .
5.500e+01 -1.100e+01 . + . .
6.000e+01 -1.200e+01 . + . .
6.500e+01 -1.300e+01 . + . .
7.000e+01 -1.400e+01 . + . .
7.500e+01 -1.500e+01 . + . .
8.000e+01 -1.600e+01 . + . .
8.500e+01 -1.700e+01 . + . .
9.000e+01 -1.800e+01 . + . .
9.500e+01 -1.900e+01 . + . .
1.000e+02 -2.000e+01 + . .
---------|------------|--- --------|
스윕 v#branch-2.00e+01 -1.00e+01 0.00e+00
두 출력 형식 모두에서 왼쪽 열의 숫자는 각 간격에서 배터리 전압을 나타내며, 0볼트에서 100볼트까지 5볼트씩 증가합니다. 오른쪽 열의 숫자는 각 전압에 대한 회로 전류를 나타냅니다. 이 숫자를 자세히 살펴보면 각 쌍 사이의 비례 관계가 보입니다.
옴의 법칙(I=E/R)은 모든 경우에 적용되며, 각 전류 값은 해당 전압 값의 1/5입니다. 회로 저항은 정확히 5Ω이기 때문입니다. 다시 말하지만, 이 SPICE 분석에서 전류에 대한 음수는 다른 어떤 것보다 더 기발한 것입니다. 달리 명시되지 않는 한 각 숫자의 절대값에만 주의하세요.
SPICE 데이터를 해석하고 변환하는 컴퓨터 프로그램
SPICE에서 출력된 비그래픽 데이터를 해석하고 그래픽 플롯으로 변환할 수 있는 컴퓨터 프로그램도 있습니다. 이러한 프로그램 중 하나는 Nutmeg 라고 하며 출력은 다음과 같습니다.
Nutmeg가 저항 전압 v(1)(노드 1과 노드 0의 암시적 참조점 사이의 전압)을 양의 기울기(좌측 하단에서 우측 상단)를 가진 선으로 그리는 방식에 유의하십시오. SPICE를 사용하는 데 능숙해지든 아니든 이 책에서의 응용과는 관련이 없습니다.
중요한 것은 SPICE에서 생성된 보고서에서 숫자가 의미하는 바를 이해하는 것입니다. 앞으로의 예에서 SPICE의 숫자 결과에 주석을 달아 혼란을 없애고, 이 놀라운 도구의 힘을 활용하여 전기 회로의 동작을 이해하는 데 도움을 드리겠습니다.