[SPICE기초] 컨덴서와 코일의 주파수 특성
SPICE 회로 시뮬레이터의 기초 사용법 학습의 두번째로써 회로 내에서 컨덴서와 코일이 어떤 역활을 하는지 알아보자. '봐야 믿는 법(Seeing is Believing)'이라고 하지 않던가. 회로를 꾸며서 시뮬레이션을 통해 그 역활을 눈으로 보자.
첫번째 강의[링크]에서 SPICE 회로 시뮬레이터의 사용법을 조금 배웠다. 내용은 조금일지 모르지만 SPICE로 무엇을 할 수 있는지 거의 배운 셈이다.
- 회로 시뮬레이터 LT-Spice 의 설치
- LT-Spice의 창(Window) 종류별 단축키(Hot-Keys)와 제어키(CTRL, ALT)의 용도
- 회로 그리기 창(Schematic Window)
- 파형보기 창(Wave Window) - SPICE의 언어
- 네트리스트(netlist): 회로 기술(description)
- 시뮬레이션 명령(simulation commands)과 지시자(directives)
- DUT 와 Testbench - 시뮬레이션 지시자(Simulation directives/Dot Commands)
.trans 시간축 상의 시뮬레이션 (transient analysis)
.step 변수 사용 반복 실행(parameter weeps)
.measure 사용자 정의 식 측정(evaluate user-defined electrical quantities) - 사용자 정의식 신호발생기(Bhavioral voltage source)
- 사용자 정의 수식(expression)
- 수학 함수 제공(mathematical functions)
오피스 소프트웨어 패키지의 모든 기능을 다 알고 사용하지 않듯이 SPICE 회로 시뮬레이터도 기초와 그 가능성(이것으로 무엇을 할 수 있는지)만 알아챘다면 그것으로 충분하다. 그 이상은 그저 기법에 불과할 뿐이다. 회로를 그리면서(설계 하면서) 목적에 맞게 무엇을 어떻게 측정할지 질문이 생기면 도움말이 잘 준비되어 있으니 찾아보면 된다. 게다가 인터넷 시대다. 검색창에 무엇을 넣어야 할지 모를 뿐이지 검색하면 다 나온다. 적확한 검색어를 써야 답을 얻을 수 있다. 검색결과를 읽을 줄 알아야 함은 물론이다. 제아무리 훌륭한 답을 앞에 뒀어도 무슨 뜻인지 이해하지 못하면 무슨 소용인가. 전자회로 까막눈은 면해 보자는 것이 이 학습의 목표이기도 하다.
---------------------------------------------------------------------
회로 이해는 저항의 이해다.
전자회로는 전류와 전압으로 말한다. 전류와 전압을 조절하여 의미를 표현한다. 전류와 전압을 조절하는 법칙은 오직 하나다. 옴의 법칙.
V = I * R
저항치를 바꾸면 전압이 변동한다. 저항치를 내리면 전류가 많이 흐르게 되어 고여있던 전압이 떨어진다. 저항치를 올리면 흘러야 할 전류가 한쪽에 여전히 몰려 있으므로 전압이 덜 떨어진다. 결국 전류에 대한 저항의 역활을 이해하는 것이 바로 회로의 이해다. 전압을 조절하여 전류를 통제하는 회로를 전자회로라 한다. 저항체(resistor)는 저항치를 가지고 전류 흐름을 억제 시킬 수 있다. 저항치는 고정되었거나 혹은 물리적, 전기적 힘으로 변경 할 수 있다.
전류는 방향이 있다. 전류는 전압이 높은 곳에서 낮은 곳으로 흐른다. 당연한 이야기지만 낮은 곳이 어딘지 지정하지 않으면 전류는 흐르지 않는다. 즉, 폐회로(closed circuit) 이어야 한다.
[토론] DC(direct current)와 AC(acternating current)의 차이를 설명해 보자.
컨덴서 (Condensor, Capacitor)
컨덴서에 흐르는 전류의 양을 제한하는 요인인은 저항과는 달리 두가지다. 컨덴서 용량 L과 주기의 역수 주파수 f 다. 두가지 요인을 묶어 컨덴서를 통하여 흐르는 전류를 제한하는 저항값이라고 하고 이를 임피던스(impedance)라고 부르자. 단위는 저항과 마찬가지로 옴(Ohm)이다.
직렬연결 된 컨덴서의 용량계산
1/C = 1/C1 + 1/C2 + 1/C3 + ......
병렬연결 된 컨덴서의 용량계산
C = C1 + C2 + C3 + ......
[읽어보기] 컨덴서[링크]
-----------------------------------------------------------------------
코일(Coil, Inductor)
말 뜻대로 전선을 둘둘 말아놓은 것이다. 직류 전원을 넣으면 자기장이 생겨 전자석이 된다. 전류의 흐름 방향이 바뀌면 자기장의 극성도 바뀐다. 이 자기장은 철 성분을 끌어 당기기도 하지만 전류의 흐름도 방해한다. 전류의 방향이 바뀌고 자기장의 극성이 교대로 바뀌면서 교류 전류의 흐름을 맹렬히 억제하는데 그 힘을 역기전력이라고 한다. 코일에 기전력과 역기전력이 생기는 이유는 전류의 방향이 바뀌었기 때문 이라는 점을 기억해 두라.
직렬연결 된 코일의 용량계산
L = L1 + L2 + L3 + ......
병렬연결 된 코일의 용량계산
1/L = 1/L1 + 1/L2 + 1/L3 + ......
-----------------------------------------------------------------------------------
임피던스(Impedance)
전류의 흐름을 제한하는 현상을 통털어 임피던스(impedance)라고 부른다. 저항은 직류든 교류든 상관 없이 동일하게, 방향성도 없이 전류를 제한한다. 저항의 전류제한을 레지스턴스(resistance, 직접저항)라고 한다. 이와 달리 교류에 대한 전류 흐름의 제한을 리액턴스(reactance, 반응저항)라고 부른다. 리액턴스는 전류가 흐르는 방향에 영향을 받는다.
컨덴서는 전류가 고이고 빠짐에 의해 전류 흐름이 제한 된다. 컨덴서 처럼 전류를 고였다 빼기를 반복하면서 전류흐름을 제한하는 현상을 용량성 리액턴스(capacitive reactance)라고 한다.
코일에 전류를 흘리면 자기장이 유도(induct)된다. 이 자기장의 극성이 바뀌면서 전류를 제한하므로 유도성 리액턴스(inductive reactance)라고 한다.
옴의 법칙은 컨덴서와 코일에도 동일하게 적용된다.
V = I * |Z|
[토론] 임피던스 |Z|에 절대값을 취한 이유를 설명해 보자. 음의 저항치?
[문제] 아래 세가지 분압 회로에서 Vout을 계산하라.
[문제] 위의 분압 회로에서 전압원에 사인파를 적용해 보고 코일과 컨덴서의 경우 위상차 변화를 설명해 보라.
-----------------------------------------------------------------------------------
- Resistance(R): constant resistivity, independent to frequency, voltage form in amplitude
- Reactance(X): instant resistivity, dependent to frequency, voltage form in amplitude & phase
- Capacitive: Negative Reactance, Phase Lag
- Inductive: Positive Reactance, Phase Lead
[잠깐!] 갑자기 복소수. 이게 다~ 2차 미분 방정식의 해를 파동함수로 구하려다 보니 이렇게 된 것은 다~~ 아시죠~~~?
읽어보기:
1] 공학도를 위한 미분 방정식: 응용 RLC 회로 [링크]
-----------------------------------------------------------------------------------
컨덴서의 시간축 시뮬레이션: .tran (Transient analysis)
컨덴서는 일종의 축전지다. 전자회로에 쓰이는 컨덴서는 모아 둘 수 있는 전하의 양이 매우 작고 담아두는 기간도 매우 짧다. 외부에서 충전(charge)해 주지 않으면 이내 방전(dis-charge)한다. 용량이 작기 때문에 충전은 순식간에 일어난다. 그리고 충전은 시간상 선형적이 아니다.
컨덴서는 직류에 대한 분압회로에 아무런 영향을 주지 못하는 것처럼 보인다. 분압 회로의 Vout에 지속적으로 전압이 걸려 있으므로 C1이 충전되면 더이상 전류가 흐르지 못하기 때문이다. 컨덴서가 완전히 충전되면 더이상 전류가 흐르지 않는다. 이를 두고 '컨덴서는 직류를 흐르지 못하게 한다'고 말한다. (직류는 주파수가 0에 가까운 신호다. 직류에 대한 컨덴서의 임피던스는 무한대에 근접한다.)
C1이 충전되는 모습을 보기위해 시뮬레이션 명령을 실행 할 때 처음부터 전압원(voltage source) V1에 전압이 걸려 있지 않고 서서히 증가하도록 지정할 수 있다.
.tran 0.5 startup
[문제] C1의 용량을 바꿔가며 충전되는 모습을 관찰하고 충전시간과 컨덴서의 용량 관계를 설명하라. 컨덴서 용량 변화에 시뮬레이션 명령 .step 을 사용할 것
-----------------------------------------------------------------------------------
컨덴서와 코일의 주파수 축 시뮬레이션: .ac (AC analysis)
회로 시뮬레이터의 상이한 관찰방식이 있다. 시간상 변화 '관찰'과 주파수 성분 '분석'이다.
[주] 전자 계측기 중, 시간상 변화 '관찰'하는 장치를 오실로스코프(osciloscope)라 하고 주파수 성분을 '분석'하는 장치를 스펙트럼 아날라이져(spectrum analyzer)라고 한다.
시뮬레이션 명령 .tran 은 회로에 인가된 전압(DC operating voltage)에 대해 시간상 변화를 관찰 하는 것이었다. 가로축이 시간, 세로축은 전압(또는 전류)이다[오실로스코프].
시뮬레이션 명령 .ac 는 주기적으로 변하는 교류 신호에 회로가 어떻게 반응 하는지 관찰할 때 사용한다. 가로축은 주파수 이며 세로축은 이득(gain)이다[스펙트럼 아날라이져]. 이 시뮬레이션 작동을 AC 분석(AC analysis)라고 한다. 언뜻 감이 잘 안온다면 도움말에서 찾아보자.
LT-Spice는 도움말이 잘 정리되어 있고 수많은 예제들을 제공한다. 'F1' 키를 눌러 도움말 창을 열어 .ac를 검색하면 아래와 같은 설명을 볼 수 있다.
.AC -- Perform an Small Signal AC Analysis Linearized About the DC Operating Point
The small signal(linear) AC analysis of LTspice computes the AC complex node voltages as a function of frequency.
설명이 '도움'이 되기는 커녕 오히려 난감하다. 사실 이 도움말을 이해하고 설명할 수 있는 사람이 몇이나 될지 의문 스럽다. 이럴때 경험에 기반한 직관이 필요한 때다. 위의 설명문에서 밑줄 친 '주파수의 함수로' 라는 문구에 주목하자. 주파수를 변경해 가면서 그 반응을 살펴보겠다는 뜻이다.
컨덴서와 코일의 저항(임피던스)는 전압 신호원의 주파수에 따라 달라진다는 점은 이미 알고 있다. 주파수에 대해 어떻게 반응 하는지 알아보기 위해 .ac 시뮬레이션 명령을 사용해 보자.
.ac <oct, dec, lin> <Nsteps> <StartFreq> <EndFreq>
시뮬레이션은 시작 주파수 <StartFreq> 에서 <EndFreq> 까지 훑어가며 회로의 반응을 보겠다는 뜻이다. 회로에 인가할 주파수 구간의 등분은 <Nsteps> 다. 등분하는 방식은 <oct, dec, lin> 이중 하나를 고를 수 있다. 시뮬레이션 동작 명령에서 .tran 과 .ac 는 동시에 줄 수 없다. (당연!) 컨덴서와 코일의 주파수 특성을 AC 분석 시뮬레이션으로 알아보자.
쉽게 예상되었던 결과다. 컨덴서는 주파수가 낮은 쪽에서 임피던스가 커지므로 소멸(shunt)되지 않는다. 따라서 저역 필터(Low-Pass Filter)로 작동한다. 코일은 높은 주파수에서 임피던스 역시 높아져 소멸되지 않는다. 따라서 고역 필터(High-Pass Filter)로 작동한다.
[참조] RC Circuit [Link] / RL Circuit [Link] / LC Circuit [Link] / RLC Circuit [Link]
컨덴서와 코일을 모두 동원하면 좀더 극적인 모습을 볼 수 있다. 컨덴서의 용량성 리약턴스와 코일의 유도성 리액턴스가 일치하는 지점의 주파수에서 차단과 통과의 극대점이 있다. 컨덴서와 코일의 조합 방법에 따라 각각 대역 통과, 대역 차단 필터의 기능을 한다. 대역 통과 필터는 공진회로의 원리 이기도 하다.
데시벨(dB, decibel): 이득의 표현법
주파수 분석에서 가로축은 주파수 세로축은 이득(gain)이다. '이득'이라는 표현이 얼른 와닿지 않는 것을 보면 적절한 표현인지 모를 일이다. 그렇다고 달리 내세울 말도 없다. 백여년 내외의 짧은 역사를 가진 공학 분야의 용어들이 대부분 이렇게 기존의 단어에서 적당히 차용해온 데다 우리말로는 더욱(일본이나 한자를 거쳐 들어왔으니 더욱더!) 난감하다.
한마디로 '이득'은 전압의 비율이다. 아무런 방해를 받지 않았을 경우를 1로 잡고 방해를 받았을 경우 감쇄된 전압을 비율을 보여준다. 전자회로에서 다루는 비율치가 워낙 편차가 크다. 비율을 "원래 신호의 전압대비 천분의 일" 또는 "영쩜 영영일" 이라고 하려니 번거롭기도 하고 어쩐지 모양이 안선다. 그래서 "이 회로의 이득은 -30dB" 라고 표현하면 뭔가 멋져 보인다. 데시벨은 편의상 정한 표기법 일 뿐이다.
[참조] https://math-mass-goodkook.blogspot.com/2023/04/1.html
[참조] Gain(Electronics) [Link]
[주] 데시벨 표현에 무슨 심오한 뜻이 있는 것이 아니다! "리튬 건전지 전압은 3.7볼트"라는 이야길 들었을 때 태연 하듯이 이 "송신기 출력은 10dBm"이라고 한다면 그런가 보다 하자. 10mW 니까 쫄지말자.
------------------------------------------------------------------------------------
컨덴서에 구형파 흘리기
전압원을 고정 전압 대신 구형파 펄스로 변경하여 충전과 방전을 반복시켜보자.
컨덴서의 용량에 따라 충전과 방전의 모습이 달라진다. 또한 전하를 담아두는 컨덴서는 전류를 제한하는 저항에 의해 충방전 시간이 변화한다.
[문제] 컨덴서에 흐르는 전류를 함께 관찰하라. 구형파의 각진 부분이 일그러지는 이유를 컨덴서의 주파수 특성과 연관하여 정성적으로 설명 하라.
[문제] 컨덴서 용량이 늘면서 전압의 최대점이 낮아지는 이유를 설명하라.
[문제] 분압 저항을 바꿔가며 전압 변화를 관찰 하라. 저항의 역활을 설명하라.
[문제] 구형파 펄스와 정현파 펄스에 대한 컨덴서의 반응을 시뮬레이션으로 비교해 보라.
[문제] 컨덴서를 흐르는 교류 신호의 위상 지연 현상을 설명하라.
[문제] 교류 정현파에 대한 컨덴서의 반응을 정현파 펄스와 비교하라.
--------------------------------------------------------------------------------
박산달 음색 조절회로(Baxandall Tone Control)
Baxandall 회로는 컨덴서의 주파수 특성을 활용해 음향 증폭기(오디오 앰프)의 음색 제어용(audio tone control)으로 널리 사용된다[링크]. 따져보면 저항과 컨덴서를 결합한 필터다.
이 회로의 주파수 특성을 살펴보기로 하자. SPICE는 VR1과 VR2 같은 가변저항(포텐쇼메터)의 모델이 없다. [SPICE 뿐만 아니라 대부분 전자회로 시뮬레이터 들은 대화형 인터페이스를 가지고 있지 않다.]
위의 회로에서 포텐쇼메터(potentiometer) 대신 두개의 저항을 두고 비율로 조절한다. 가변하는 저항치를 .param 지시자를 사용하였다.
.PARAM -- User-Defined Parameters
The .param directive allows the creation of user-defined variables. This is useful for associating a name with a value for the sake of clarity and parameterizing subcircuits so that abstract circuits can be saved in libraries.
이 지시자는 사용자 변수를 정의 할 수 있다. 수식표현 뿐만 아니라 하위 회로(sub-circuit)에 전달할 인수의 정의도 가능하다. 단, 이 변수는 고급 프로그래밍 언어처럼 지역변수와 전역변수를 구분하지 못하므로 동일한 이름이 있으면 오류를 내므로 주의하자. [단순한 SPICE 문법에 모듈화 개념은 없다.] 수식에 LT-SPICE에서 제공하는 각종 수학 함수들(mathmatical functions)을 사용하여 표현할 수 있다. 회로 내의 각 부품에 대한 시정수 값을 변수로 지정하려면 중괄호 않에 이름을 {parameter_name} 선언한다. 인수(변수)는 .step 지시자를 통해 회로의 시정수 값을 바꿔가며 반복 실행시키는데 활용된다.
.STEP -- Parameter Sweeps
This command causes an analysis to be repeatedly performed while stepping the temperature, a model parameter, a global parameter, or an independent source. Steps may be linear, logarithmic, or specified as a list of values.
위의 예에서 사용자 정의 인수 Pot1_Tot 는 변수를 정의 했다. 이 변수를 활용하여 부품 R2와 R3의 시정수 값 {Pot1_Lo}와{Pot1_Hi}을 수식으로 변경 시킨다. 지시자 .param 과 함께 사용하면 .step 은 프로그래밍 언어의 반복문과 같다. SPICE도 단순하지만 프로그래밍 언어로서 면모를 갖추고 있다. 테스트 환경을 SPICE 코딩으로 구현해 보자.
수식으로 기술한(Behavioral description) AM 변복조기 모형의 예 [링크]
-----------------------------------------------------------------------------------
퓨리어 분석(Fourier Analysis)
시간의 흐름에 따라 요동치는 전압을 관찰(transient simulation) 하면서 의문을 품기 마련이다. (전류량이 요동친다는 의미로 맥동류라고 하자.) 저 요동치는 신호는 어디서 왔을까? 저 요동을 제압 혹은 증폭 할 수 있을까? 컨덴서와 코일이 주파수에 관계되었다고 했으므로 요동치는 전압을 제어할 수 있겠다. 그러려면 먼저 요동치는 전압의 모습을 분석 해보기로 하자. 우리는 테일러 급수(Taylor seriese)를 배우면서 변화하는 모든 것은 주기함수의 급수합으로 근사 될 수 있다고 배웠다. 달리 말하면 시간상 전압 변화는 주파수상 성분으로도 표현 할 수 있다는 뜻이다.
아래와 같은 DC 구형파 신호에 대한 LPF를 적용한 회로에 대해 퓨리어 변환과 분석 시뮬레이션을 보고 물음에 답하라.
[문제] 시뮬레이션 옵션 .options 의 역활에 대해 설명 하시오.
[문제] C4의 용도에 대해 설명 하시오.
[문제] 구형파 발생기 V1의 주파수를 2Mhz 로 변경하고 LPF를 적용한 후 정현파 왜곡율을 계산 하시오. 시뮬레이션 명령 .four (Fourier Analysis)를 변경 할 것.
[문제] 고주파(전파)에 대하여 구형파에 LPF를 적용하여 정현파로 변환하는 필요성에 대해 토론해 보자.
----------------------------------------------------------------------------------
SPICE 기초 사용법 <목차>