콘텐츠로 이동

LTspice로 보는 컨버터

  • SPICE 라이브러리의 LTspice 회로도를 열어 실행하고, README가 제시하는 파형을 그립니다.
  • 정지 상태에서 시작한 시뮬레이션이 마지막 주기에서 정상상태(steady state)를 보여 주려면 얼마나 오래 실행해야 하는지 계산합니다.
  • 회로도에 어떤 지시문(directive)이 들어 있고 왜 필요한지 압니다.

저장소의 sim/ltspice/ 폴더에는 다섯 가지 기본 컨버터가 LTspice 회로도(schematic)로 들어 있습니다 [Analog Devices, LTspice simulator]. 컨버터마다 폴더가 하나씩 있고, 무엇을 그려야 하는지와 어떤 결과가 나와야 하는지 적은 README가 함께 있습니다. 각 회로도는 sim/ngspice/에 있는 같은 이름의 ngspice 넷리스트(netlist)와 같은 회로입니다. 라이브러리 스크립트가 회로도를 넷리스트로 다시 읽어 부품과 노드를 하나하나 비교하며, 네트(net)에는 넷리스트의 노드 이름이 붙어 있습니다. 회로도를 열고 Run을 누르면 지시문도 함께 실행됩니다.

  • .param은 시뮬레이터에서 같은 이름의 프리셋이 쓰는 합성(synthetic) 예제의 값을 정합니다.
  • .model은 이상에 가까운 스위치와 다이오드를 정합니다.
  • .tran은 모든 커패시터가 비어 있고 모든 인덕터에 전류가 없는 정지 상태에서 시작해, 한 주기의 200분의 1을 넘지 않는 타임 스텝(time step)으로 사례에 따라 400주기에서 2500주기까지 계산합니다.
  • .options method=gear reltol=1e-4는 적분법(integration method)과 허용오차(tolerance)를 정합니다. 그 이유는 ngspice 페이지에서 설명합니다.

ngspice 넷리스트에는 마지막 주기에 걸쳐 각 양의 평균과 최댓값·최솟값을 구하는 .meas 문도 들어 있습니다. LTspice에서는 마지막 주기를 확대해 보거나, 같은 문을 회로도에 추가합니다.

시뮬레이션을 얼마나 오래 실행해야 하나

섹션 제목: “시뮬레이션을 얼마나 오래 실행해야 하나”

정지 상태에서 시작한 시뮬레이션은 기동 과정 전체를 지나야 마지막 주기가 정상상태를 보여 줍니다. 컨버터가 CCM에 머무는 동안에는 기동한 뒤 출력 필터와 부하가 진동(ring)하며, 이상적인 부품에서 그 진동의 포락선(envelope)은 부하와 커패시턴스만으로 정해지는 시정수(time constant)로 감쇠합니다.

τenv=2RC\tau_\mathrm{env} = 2 R C
τenv\tau_\mathrm{env}
포락선 시정수
CC
커패시턴스(출력 커패시터)
RR
부하 저항
저항 부하가 연결된 L-C 필터 진동의 포락선 시정수✓ 테스트 7개로 검증됨
가정, 표기 규약, 출처
가정
  • 이상적(무손실) 스위치와 수동 소자
  • 연속 전도 모드(CCM)
  • 고정 듀티비, 피드백 루프 없음(개루프)
  • 출력 필터가 진동함: Q가 1/2보다 큼
  • 저항성 부하 R
비고
이상적인 부품에서 벅의 전원 전압이 일정하면 필터는 인덕턴스, 커패시턴스, 부하가 병렬로 연결된 병렬 RLC 회로이며, 그 진동은 인덕턴스와 관계없이 e−t/(2RC)e^{-t/(2RC)}로 감쇠합니다. 부하가 가벼울수록(RR이 클수록) 오래 진동합니다. 부스트와 벅-부스트의 평균화 모델도 같은 감쇠율 ω0/(2Q)=1/(2RC)\omega_0/(2Q) = 1/(2RC)를 줍니다. 실제 부품은 감쇠를 바꿉니다. 권선과 스위치의 저항은 언제나 진동을 더 빨리 감쇠시키고, 커패시터의 직렬 저항은 Q가 1보다 클 때 그렇게 하며, 그때는 인덕턴스도 영향을 줍니다. CCM에서 개루프 컨버터의 출력은 기동이나 계단 변화 뒤 이렇게 정착합니다. 피드백 루프가 있으면 루프가 정착을 정하고, 인덕턴스가 한 주기에서 다음 주기로 에너지를 넘기지 않는 DCM에서는 출력이 정상상태 근처에서 하나의 시정수로 정착합니다
출처
Alexander & Sadiku 2017, Ch. 8 (Second-Order Circuits: the source-free parallel RLC circuit); derived here; Erickson & Maksimović 2020, Ch. 8 (Converter Transfer Functions: the boost and buck-boost resonances, whose omega_0/(2Q) is also 1/(2RC)); Erickson & Maksimović 2020, Ch. 15 (AC and DC Equivalent Circuit Modeling of the Discontinuous Conduction Mode: a single low-frequency pole)
유도
sympy 단계별 유도
수식 id
filter.tau_env · equations.yaml 항목

기동 뒤에 남은 오차는 포락선 시정수마다 같은 비율로 줄어듭니다. 이를 처음 오차의 일정 비율까지 줄이려면 다음 주기 수가 필요합니다.

Nset=τenvln⁡(1εr)TsN_\mathrm{set} = \frac{\tau_\mathrm{env} \ln{\left(\frac{1}{\varepsilon_r} \right)}}{T_s}
NsetN_\mathrm{set}
정착까지의 주기 수
TsT_s
스위칭 주기
εr\varepsilon_r
남은 시작 오차의 비율
τenv\tau_\mathrm{env}
포락선 시정수
시작 오차가 줄어들 때까지의 스위칭 주기 수✓ 테스트 8개로 검증됨
가정, 표기 규약, 출처
가정
  • 시작 오차가 가장 느린 모드의 시정수 하나로 감소함
비고
e−t/τenve^{-t/\tau_\mathrm{env}}로 감쇠하는 오차는 τenvln⁡(1/εr)\tau_\mathrm{env} \ln(1/\varepsilon_r) 뒤에 비율 εr\varepsilon_r까지 줄어들고, 이를 TsT_s로 나누면 주기 수가 됩니다. 정확도를 10배 높일 때마다 ln⁡10\ln 10, 곧 포락선 시정수의 약 2.3배가 더 듭니다. 정지 상태에서 시작하는 과도 시뮬레이션은 적어도 이만큼 실행해야 마지막 주기들이 정상상태를 보여 줍니다
출처
Alexander & Sadiku 2017, Ch. 8 (Second-Order Circuits: the natural response decays as the exponential of minus the neper frequency times t); derived here
유도
sympy 단계별 유도
수식 id
sim.periods_settle · equations.yaml 항목

부하가 가벼울수록 오래 진동하고, 정확도를 10배 높일 때마다 같은 수의 주기가 더 듭니다. 실제 부품은 진동을 조금 더 감쇠시킵니다. 권선과 스위치의 저항은 언제나, 커패시터의 직렬 저항은 품질 계수(quality factor)가 1보다 클 때 그렇습니다. 기동 과정이 잠시 CCM을 벗어날 수도 있습니다. 라이브러리의 벅에서는 출력이 처음 오버슈트한 뒤, 처음 20주기 가운데 여러 주기에서 인덕터 전류가 0까지 떨어집니다. 그러면 식은 정확한 주기 수가 아니라 추정값이 됩니다. DCM에서는 인덕터 전류가 매 주기 0으로 돌아가므로 인덕터가 한 주기에서 다음 주기로 아무것도 넘기지 않습니다. 그래서 필터가 L-C 쌍으로 진동하지 않고, 정상상태 근처에서 출력은 대신 하나의 시정수로 정착합니다 [Erickson & Maksimović 2020, Ch. 15].

라이브러리는 각 사례를 가장 느린 시정수의 여러 배만큼 실행하고, 스크립트는 실행이 끝날 때마다 정착을 확인합니다. 마지막 주기의 출력 평균이 그 앞 주기의 평균과 1만분의 1 이내로 같아야 하며, 그렇지 않으면 정착하지 않은 것으로 보고 실패 처리합니다. 이 검사는 지나치게 짧은 실행만 잡아냅니다. 한 주기 동안 감쇠하는 오차가 줄어드는 비율은 주기를 시정수로 나눈 값 정도에 불과합니다. 그래서 라이브러리의 DCM 플라이백처럼 시정수가 100주기이면, 1만분의 1의 변화로도 약 1 %의 오차가 남을 수 있습니다. 출력이 진동하는 경우에는 진동의 피크 근처, 곧 출력 평균이 오르기를 멈추고 내려가기 시작하는 곳에서 진동이 아직 큰데도 연이은 두 평균이 서로 맞을 수 있습니다. SPICE 자체의 정확도도 한계를 정합니다. 라이브러리의 ngspice 실행에서는 기동 과정이 끝나고 한참 뒤에도 평균이 최대 1000분의 1~2만큼 튑니다.

LTspice의 기본 설정에서는 라이브러리의 DCM 플라이백 드레인 전압에 0보다 수십 볼트 낮은 딥(dip)이 나타납니다. 회로에는 없는 딥입니다. 기본 허용오차에서 기어(Gear) 방법을 쓴 ngspice가 그리는 딥과 비슷한 깊이이며, 약 1킬로볼트에 이르는 ngspice 사다리꼴 규칙(trapezoidal rule)의 링잉과는 다릅니다. .options 줄은 ngspice에서와 마찬가지로 이를 없앱니다. 라이브러리는 LTspice 26.1.1로 한 번 확인한 결과를 기록하고 있으며, 그 확인에서 LTspice가 만든 넷리스트는 라이브러리의 넷리스트와 같았고 결과는 각 양의 최대 크기 대비 0.3 % 안에서 ngspice와 맞았습니다. ngspice 페이지에서 두 효과를 모두 설명합니다. 스텝마다 빠른 모드에 곱해지는 배율(사다리꼴 규칙의 배율)과, 느슨한 허용오차에서 다이오드 전류가 0을 지나치는 현상입니다.

벅 예제의 필터, 부하, 스위칭 주파수로 정지 상태에서 시작해, 시작 오차가 1000분의 1만 남을 때까지 실행합니다.

벅 정착 예제
기호값구하는 방법
fsf_s 스위칭 주파수100 kHz주어진 값
LL 인덕턴스100 µH주어진 값
CC 커패시턴스(출력 커패시터)10 µF주어진 값
RR 부하 저항10 Ω주어진 값
εr\varepsilon_r 남은 시작 오차의 비율0.001주어진 값
TsT_s 스위칭 주기10 µs스위칭 주기
QQ 품질 계수(quality factor)3.16벅: LC 극점의 품질 계수
τenv\tau_\mathrm{env} 포락선 시정수200 µs저항 부하가 연결된 L-C 필터 진동의 포락선 시정수
NsetN_\mathrm{set} 정착까지의 주기 수138시작 오차가 줄어들 때까지의 스위칭 주기 수

품질 계수는 3.16이며 1/2보다 훨씬 크므로 필터가 진동합니다. 포락선 시정수는 200 µs, 곧 20주기이며, 출력이 1000분의 1까지 정착하려면 138주기가 필요합니다. 1000분의 1은 라이브러리의 1 % 안에 넉넉히 들고, 라이브러리의 ngspice 실행이 구별하는 한계와 비슷합니다. 라이브러리의 벅 사례는 400주기를 실행한 뒤 마지막 주기를 측정합니다.

▶ 수식 탐색기에서 열기: 시작 오차가 줄어들 때까지의 스위칭 주기 수
초기값을 가져온 예제 sim-settle

남는 비율을 바꿔 봅니다. 10배마다 같은 수의 주기가 듭니다.

▶ 수식 탐색기에서 열기: 저항 부하가 연결된 L-C 필터 진동의 포락선 시정수
초기값을 가져온 예제 sim-settle

부하를 바꿔 봅니다. 부하가 가벼울수록 오래 진동합니다. 이 사이트의 시뮬레이터는 기동 과정 없이 정상상태를 찾습니다.

▶ 시뮬레이터에서 열기: 벅
초기값을 가져온 예제 buck-basic

벅을 피드백 루프 없이 고정 듀티비로 저항 부하에 연결해 기동하고, 스위칭을 시작하는 순간부터 출력을 캡처합니다. 처음 몇 주기에 인덕터 전류가 0에 닿는다면 더는 닿지 않게 된 뒤에, 알려진 시간만큼 떨어진 진동의 두 피크로 포락선의 감쇠를 측정해, 그 시정수를 부하 저항과 출력 커패시턴스의 곱의 두 배와 비교합니다. 권선과 스위치의 저항이 진동을 더 감쇠시키고, 품질 계수가 1보다 크면 커패시터의 직렬 저항도 그러므로 조금 더 짧은 값을 예상합니다. 출력이 최종값의 1 % 안에 머물 때까지의 주기를 세어, 남는 비율이 1 %일 때의 식과 비교합니다. 그런 다음 같은 값과 같은 기동 조건으로 라이브러리의 회로도를 실행합니다.

  • 정착하지 않은 주기에 걸친 측정은 기동 과정을 측정합니다. 식이 요구하는 주기만큼 실행한 뒤, 라이브러리처럼 출력 평균이 주기마다 더는 바뀌지 않는지 확인합니다. 변화가 작다는 것만으로는 느린 진동이 정착했다고 할 수 없습니다.
  • 포락선 식은 이상적인 부품으로 피드백 루프 없이 필터가 진동하는 CCM에서 성립합니다. DCM이거나, 감쇠가 커서 필터가 진동하지 않거나, 폐루프 제어를 하면 출력은 다른 방식으로 정착합니다(포락선 시정수).
  • 회로가 만들 수 없는 스파이크는 수치적인 것일 때가 많습니다. 회로에서 원인을 찾기 전에 .options 줄을 확인합니다.
  • 동영상 LTspice Basics (video series) — Analog Devices · 확인일 2026-09-24
    LTspice에서 첫 회로도, 과도·AC 시뮬레이션, 파형 뷰어를 다루는 짧은 동영상.
  • 도구 LTspice — Analog Devices · 확인일 2026-09-24
    Analog Devices의 무료 SPICE 시뮬레이터.
  1. 이상적인 부품에서 벅의 출력 필터가 10 ohm 부하, 10 µF 커패시터와 함께 진동합니다. 진동 포락선의 시정수는 얼마입니까?

    1. 100 µs
    2. 200 µs
    3. 31.6 µs
    4. 인덕턴스에 따라 다르다
    정답과 해설

    정답: B 포락선은 인덕턴스와 관계없이 부하 저항과 커패시턴스의 곱의 두 배로 감쇠합니다. 2 × 10 ohm × 10 µF는 200 µs입니다.

  2. 포락선 시정수가 스위칭 주기의 20배입니다. 정지 상태에서 시작한 시뮬레이션에서 시작 오차가 100분의 1만 남으려면 대략 몇 주기가 필요합니까?

    1. 20
    2. 46
    3. 92
    4. 2000
    정답과 해설

    정답: C 오차는 포락선 시정수마다 e배 줄어듭니다. 100분의 1까지는 ln 100, 곧 시정수의 약 4.6배이므로 약 92주기입니다.

  3. 시작 오차를 100분의 1에서 1만분의 1까지 더 줄이려면 얼마가 더 듭니까?

    1. 처음 100분의 1까지 든 만큼이 한 번 더
    2. 100배
    3. 더 들지 않는다. 오차가 이미 작다
    4. 10분의 1만큼
    정답과 해설

    정답: A 10배마다 드는 양, 곧 ln 10(포락선 시정수의 약 2.3배)이 같으므로, 두 자릿수를 더 줄이는 데는 처음 두 자릿수만큼이 듭니다.

  4. 포락선 식으로 DCM 사례를 얼마나 오래 실행해야 하는지 알 수 없는 이유는 무엇입니까?

    1. DCM 사례에는 정상상태가 없다
    2. LTspice는 DCM을 시뮬레이션할 수 없다
    3. DCM에서는 커패시터가 충전되지 않는다
    4. DCM에서는 인덕터가 한 주기에서 다음 주기로 아무것도 넘기지 않아 필터가 L-C 쌍으로 진동하지 않는다
    정답과 해설

    정답: D 인덕터 전류가 매 주기 0으로 돌아가므로 포락선을 정하는 L-C 진동이 없고, 정상상태 근처에서 출력은 대신 하나의 시정수로 정착합니다.

  5. 라이브러리의 검사는 실행이 정착했다고 인정하기 전에 무엇을 요구합니까?

    1. 출력이 이상적인 식과 정확히 같을 것
    2. 타임 스텝이 다른 두 실행 결과가 서로 맞을 것
    3. 마지막 주기의 출력 평균이 그 앞 주기의 평균과 1만분의 1 이내로 같을 것
    4. 실행이 1000주기 동안 계속될 것
    정답과 해설

    정답: C 아직 정착 중인 실행에서는 출력이 주기마다 바뀌므로, 검사는 마지막 두 주기의 평균을 비교합니다. 느린 진동은 주기마다 조금만 바뀌어 이 검사는 지나치게 짧은 실행만 잡아내므로, 라이브러리는 각 사례를 시정수의 여러 배만큼 실행합니다.

  6. DCM 플라이백을 실행했더니 드레인이 회로에서는 일어날 수 없을 만큼 0보다 훨씬 아래로 떨어집니다. 무엇을 먼저 확인합니까?

    1. .options 줄: 적분법과 허용오차
    2. 권선비
    3. 부하 저항
    4. 스위칭 주파수
    정답과 해설

    정답: A 기본 설정에서는 ngspice와 LTspice 모두 라이브러리의 DCM 플라이백에 이런 딥을 그립니다. 기어 방법과 더 엄격한 허용오차가 이를 없앱니다.

이 사이트의 예제, 프리셋, 연습 문제에 나오는 수치는 교육용으로 만든 어림수(합성 값)이며, 실제 설계의 데이터가 아닙니다.