컨버터 시뮬레이터
토폴로지(topology)나 프리셋을 고르고 부하를 정한 뒤 파라미터를 SI 단위로 입력하십시오. 접두어를 붙여도 됩니다. 100u와 0.0001은 같은 인덕턴스이고, 200k와 200000은 같은 주파수입니다. 값을 직접 입력하거나 슬라이더를 움직이면 됩니다. 슬라이더의 범위는 현재 값의 위아래로 한 디케이드씩이며, 듀티비(duty ratio)의 슬라이더는 0에서 1까지입니다. 숫자가 아닌 값이 든 칸은 빨갛게 표시됩니다. 부하를 바꾸거나 전원을 켜면 새로 나타나는 칸마다 예제의 값이 채워지며, 그 값은 다시 바꿀 수 있습니다. 시뮬레이터는 주기적 정상상태(periodic steady state)의 한 주기를 계산하여 다음을 보여 줍니다.
- 파형: 인덕터 전류와 전압, 다이오드 전류, 스위치 전압, 출력 전압, 그리고 배터리가 있으면 배터리 전류
- 검출한 전도 모드(conduction mode)와 ,
- 같은 동작점(operating point)에서 시뮬레이션한 값과 카탈로그 수식의 값
- 파형으로 계산한 손실과 효율(efficiency), 그리고 부하의 전력이 어디로 가는지
회로에 주기적 정상상태가 없으면 그 이유를 알리고, 대신 정지 상태에서 시작한 기동 과정(start-up)을 보여 줍니다(아래).
모든 계산은 테스트 스위트가 검증하는 pe-core 엔진으로 브라우저에서
실행됩니다. URL에 전체 상태가 담기며, 학습 페이지의 “직접 해 보기”
링크는 프리셋을 채운 채로 시뮬레이터를 엽니다.
모델링 범위
섹션 제목: “모델링 범위”각 컨버터는 스위칭 주기의 구간마다 하나씩, 여러 선형 회로로 이루어집니다. 스위치 온 구간, 스위치가 꺼지고 다이오드가 도통(conduction)하는 구간, 그리고 DCM에서는 휴지 구간(idle interval)이 있습니다 [Erickson & Maksimović 2020, Ch. 2], [Erickson & Maksimović 2020, Ch. 5].
- 스위치와 다이오드. 트랜지스터는 이상적인 스위치이며, 온 저항(on-resistance)을 줄 수 있고, 양단에 이상적인 바디 다이오드(body diode)가 있습니다. 다이오드는 일정한 순방향 전압 강하(forward drop)를 가지며 이상적으로 차단(blocking)하고, 역회복(reverse recovery)은 없습니다. 인덕터에는 권선 저항(winding resistance)을 줄 수 있습니다. 다이오드를 거꾸로 흐르려는 전류는 흐르지 않습니다. 포워드 컨버터의 정류 다이오드(rectifier diode)는 출력이 에서 다이오드 전압 강하를 뺀 값보다 높은 동안 차단합니다. 스위치를 거꾸로 흐르는 음수 전류는 전압 강하 없이 도통하는 바디 다이오드로 흐릅니다. 턴오프 뒤에는 전류가 0이 될 때까지 흐르고, 스위치가 켜져 있는 동안에도 다이오드가 온 저항 대신 그 전류를 넘겨받습니다.
- 변압기. 자화 인덕턴스(magnetizing inductance)를 제외하면 이상적입니다 (1:n, 은 2차 턴 수를 1차 턴 수로 나눈 값). 누설 인덕턴스(leakage inductance)는 없습니다.
- 천이(transition). 스위치 양단에 커패시턴스가 없으면 천이는 순간적입니다. 커패시턴스를 두면 턴오프 뒤에 인덕터 전류가 다이오드가 도통할 때까지 그 커패시턴스를 충전합니다. 다이오드가 도통하는 동안 커패시턴스는 출력과 입력의 리플에 따라 움직이는 스위치 전압을 따라가므로, 그 커패시터들의 전류 중 자기 몫을 가져갑니다. 다이오드 전류가 0에 도달하면 인덕턴스가 커패시턴스와 함께 링잉(ringing)합니다(링잉 주파수). 스위치의 바디 다이오드는 스위치 전압 0에서 링잉을 클램프하며, 커패시턴스에 저장된 에너지는 턴온할 때마다 손실됩니다(용량성 턴온 손실). 따라서 커패시턴스가 있어도 입력 에너지는 출력 에너지와 손실의 합과 같습니다.
- 전원 구동 모드(source-driven mode). 입력을 고정 전압 대신 버스 커패시터를 충전하는 테브난 전원(Thevenin source)으로 둘 수 있습니다. 출력과 듀티비가 고정되어 있으면, 이 모드는 플라이백의 정전압 싱크(constant-voltage sink) 동작을 재현합니다(고정되는 입력 전압).
출력 커패시터 양단에는 다음 중 하나가 연결됩니다.
- 저항
- 배터리: 개방 전압(open-circuit voltage) 와 직렬 내부 저항(internal resistance) , 즉 Rint 모델 [He et al. 2011, Sec. 2.1]
- 배터리와 저항
- 아무것도 없음: 커패시터가 시작 전압 부터 충전됩니다.
또는 출력을 커패시터 없는 이상적 고정 전압 (내부 저항이 무시할 만큼 작은 배터리나 정전압 버스)로 둘 수 있습니다. 배터리 전류는 다음과 같습니다.
- 배터리 전류(충전 방향이 양)
- 배터리 내부 저항(internal resistance)
- 출력 전압
- 배터리 개방 전압(open-circuit voltage)
가정, 표기 규약, 출처
- 가정
- 배터리를 내부 저항 뒤의 개방 전압으로 모델링(Rint 모델)
- 비고
- 단자 전압이 개방 전압보다 높으면 배터리가 충전되고 낮으면 방전됩니다. 개방 전압과 저항은 충전 상태(state of charge), 건강 상태(state of health), 온도에 따라 달라지며, 시뮬레이터는 계산하는 주기 동안 이 값들을 상수로 둡니다
- 출처
- He et al. 2011, Sec. 2.1 (The Rint Model)
- 수식 id
bat.rint· equations.yaml 항목
배터리가 충전되는 동안 양수입니다. 실제 배터리에서는 저항과 개방 전압이 충전 상태(state of charge), 건강 상태(state of health), 온도에 따라 달라지지만 [He et al. 2011, Sec. 2.1], 시뮬레이터는 둘 다 상수로 둡니다. 즉 한 충전 상태에 있는 배터리입니다. 시뮬레이터가 계산하는 주기(정상상태를 찾는 데 몇 주기, 기동 과정은 많아야 수백 주기) 동안 배터리가 받는 전하는 실제 어떤 배터리의 용량에 비해서도 아주 작습니다. 그래프 아래의 부하 표는 배터리의 전력을 개방 전압이 가져가는 몫(와 배터리 평균 전류의 곱)과 내부 저항이 소산하는 몫(와 그 전류 제곱의 평균의 곱)으로 나누어 보여 줍니다.
정상상태가 없을 때
섹션 제목: “정상상태가 없을 때”주기적 정상상태가 되려면 모든 상태가 주기 끝에 시작 값으로 돌아와야 합니다. 인덕터에서는 전압-초 평형(전압-초 평형), 커패시터에서는 전하 평형(전하 평형)입니다 [Erickson & Maksimović 2020, Ch. 2]. 이를 만족할 수 없는 회로도 있습니다. 그러면 시뮬레이터는 어느 상태가 주기마다 얼마씩 계속 변하는지 알리고, 정상상태 한 주기 대신 정지 상태(전류 0, 커패시터는 시작 전압이나 배터리 전압)에서 시작한 기동 과정을 보여 줍니다.
- 계속 커지는 인덕터 전류. 고정 입력에서 CCM으로 고정 출력을 구동하면 인덕터의 전압-초는 하나의 듀티비에서만 평형을 이룹니다. 그보다 크면 한 주기 동안 인덕턴스에 걸리는 전압의 평균이 양수이므로 전류가 매 주기 같은 양만큼 커집니다(한 주기 동안의 변화). 그보다 작으면 전류가 주기 안에서 0까지 떨어지고, 컨버터는 DCM에 자리 잡습니다. 안내문은 주기당 변화량과 그 평균 전압, 그리고 이상적 부품일 때 평형을 이루는 듀티비를 알려 줍니다. 이 듀티비는 고정 출력을 입력으로 나눈 값을 변환비로 두고(출력이 반전되는 벅-부스트에서는 음수) 카탈로그의 CCM 변환비를 에 대해 푼 값입니다. 예를 들어 고정 출력에 연결된 플라이백은 온 구간마다 DCM에서 자화 전류가 0부터 오르는 만큼 (온 구간의 상승폭) 전류를 얻고, 오프 구간에는 1차로 반사된 출력 전압이 남은 시간 동안 가져가는 만큼만 잃습니다. 포워드 컨버터의 자화 전류도 리셋 한계 (최대 듀티비)를 넘으면 같은 식으로 주기마다 커지며, 안내문은 이 한계를 알려 줍니다. 이상적 부품이고 듀티비가 정확히 평형 듀티비이면 전류가 얼마이든 전압-초가 평형을 이루므로, 주기의 시작과 끝이 같은 값인 전류는 모두 정상상태입니다. 시뮬레이터는 시작점에서 출발해 도달하는 정상상태를 보여 줍니다. 평형 듀티비에 아주 가까워서 주기마다 전류가 변하는 양이 주기 안에서 전류가 움직이는 양의 백만분의 1보다 적은 듀티비는 아래의 수렴 검사를 통과하므로 평형으로 봅니다.
- 한없이 충전되는 커패시터. 양단에 아무것도 없으면 출력 커패시터는 매 주기 전달된 전하를 그대로 쌓습니다. 스위치 양단 커패시턴스가 없는 부스트, 벅-부스트, 플라이백은 출력 전압과 상관없이 매 주기 인덕턴스에 에너지를 저장했다가 넘겨주므로, 커패시터가 한없이 충전됩니다. 안내문은 도달한 전압과 주기당 상승분을 알려 줍니다.
- 그 밖에 주기 한도 안에서 자리 잡지 못한 경우(예: 감쇠 없는 L-C 링잉).
그 밖의 컨버터 뒤에서는 커패시터만 있어도 자리를 잡습니다.
- 벅 뒤에서는 스위치가 양방향으로 도통하므로, 아래에서 시작하든 위에서 시작하든 입력 전압에 자리 잡습니다. 탐색도 그 전압에서 시작합니다.
- 포워드 컨버터 뒤, 그리고 스위치 양단 커패시턴스가 있는 부스트, 벅-부스트, 플라이백 뒤에서는 더 이상 전하가 들어오지 않는 곳에서 멈춥니다. 포워드 컨버터는 정류기가 전류를 되돌려 보내지 않으므로 대략 에서 다이오드 전압 강하를 뺀 값(이 있으면 그보다 조금 아래)이나 그 위에서, 나머지는 인덕턴스가 노드 커패시턴스를 더는 끌어올릴 수 없는 전압에서 멈춥니다. 그보다 높은 전압도 모두 정상상태이며, 커패시터가 그중 어느 전압에 머무는지는 기동 과정이 정합니다. L-C 충전은 오버슈트한 뒤 그 피크 값을 유지할 수 있고, 정지 상태에서 시작한 처음 몇 주기는 주기적인 링잉보다 에너지가 커서 더 높이 충전할 수 있으며, 처졌다가 회복하는 입력 버스는 그 과정에서 전압을 바꿉니다. 그래서 시뮬레이터는 에서 시작한 기동 과정을 따라가다가 커패시터의 충전이 멈추는 곳(연속 50주기 동안, 또는 다른 모든 상태가 되풀이되는 가운데 3주기 동안 전하가 들어오지 않는 곳)에서 탐색합니다. 이렇게 멈췄다가 나중에 다시 충전되는 기동 과정은 보여 주는 전압보다 높은 곳에서 끝납니다. 반대로 다른 모든 상태가 되풀이되는 가운데 주기당 전하가 한 극한값을 향해 꾸준히 줄어들면, 그 극한, 즉 전하가 들어오지 않는 가장 낮은 전압을 탐색합니다. 점점 작은 계단으로 충전되는 기동 과정은 그보다 조금 위에서 멈춥니다(시험한 경우에서 전압의 약 1억분의 1). 기동 과정은 최대 4000주기, 하위 스텝(sub-step) 200만 개까지 따라갑니다. 링잉 때문에 하위 스텝이 더 많이 필요한 노드 커패시턴스가 있으면 100~1000주기이며, 무작위 시험에서 자주 이 한도에 닿습니다. 그때도 아직 충전 중인 기동 과정은 도달한 곳에서 탐색하고, 그 탐색이 실패하거나 기동 과정이 도달한 전압보다 낮은 전압을 찾으면, 전하가 들어오지 않을 만큼 커패시터 전압을 높인 곳에서 정상상태를 찾은 뒤 전하가 들어오지 않는 가장 낮은 전압까지 내려옵니다. 이런 기동 과정은 실제로 멈출 전압보다 낮게 나오며(무작위 시험에서 최대 약 0.07 %), 위에서 찾은 정상상태는 그보다 백만분의 몇만큼 높을 수 있습니다. 따라간 주기도 결과가 알려 주는 주기 수에 포함됩니다.
정상상태가 없으면 전도 모드, 수식과의 비교, 부하와 손실의 표를 보여 주지 않습니다. 이들은 모두 주기적 정상상태를 나타내기 때문입니다.
동작 모드
섹션 제목: “동작 모드”그래프 아래에서는 정상상태 한 주기를 모드(mode)별로 나누어 보여 줍니다. 각 모드는 주기 가운데 하나의 선형 회로가 유지되는 구간입니다(스위치 온, 다이오드 도통, DCM의 휴지 구간 [Erickson & Maksimović 2020, Ch. 5], 노드 커패시턴스의 전압 상승과 링잉, 포워드 컨버터의 리셋). 버튼으로 모드를 고르거나 그래프를 클릭하면 그래프에 그 구간이 음영으로 표시됩니다. 선택한 모드에 대해 다음을 보여 줍니다.
- 회로도. 그 모드에서 전류가 흐르는 가지는 색으로, 흐르지 않는 가지는 회색으로 그립니다. 색칠된 가지마다 전류가 흐르는 방향으로 화살표를 그리며, 모드 안에서 전류 방향이 바뀌면 양쪽 화살표를 그립니다. 스위치는 게이트가 켜져 있는 동안 닫힌 모양으로 그리고, 스위치 양단의 바디 다이오드는 전류가 흐를 때 색칠합니다. 각 소자 옆에는 이름과 상태를 적습니다.
- 동작 설명. 먼저 그 모드에서 어느 부분이 도통하고 어떻게 연결되는지를 설명합니다. 이어서 전류가 흐르는 인덕터마다 모드 동안 그 양단에 걸린 평균 전압을 표의 값 그대로 적고(권선 저항이 있으면 저항에 걸린 전압 강하와 인덕턴스 자체에 걸린 전압으로 나누어), 그 전류가 어떻게 변하는지 적습니다. 포워드 컨버터의 자화 인덕턴스에는 전류가 0으로 돌아왔는지(코어 리셋), 또는 스위치가 다시 켜질 때까지 돌아오지 못했는지를 덧붙입니다. 그다음 출력 커패시터, 배터리나 고정 출력, 입력이나 전원과 그 버스 커패시터마다 한 문장씩, 표에 있는 그 소자의 상태에서 쓴 설명이 붙습니다.
- 표. 모든 소자의 상태, 모드 시작과 끝의 전류와 모드 동안의 평균(주기 평균처럼, 모드 전체에 걸친 정확한 적분을 모드 길이로 나눈 값이며 전압의 평균도 마찬가지), 그리고 시뮬레이터가 전압을 구하는 소자는 그 전압을 보여 줍니다. 각 전류는 회로도에서 그 소자의 화살표 방향, 즉 모드 안 평균 전류의 방향이 양수이며, 음수는 화살표 반대 방향으로 흐르는 전류입니다. 인덕터 전압도 화살표 방향으로 잡으므로, 인덕턴스 양단 전압이 양수이면 화살표 방향의 전류가 커집니다. 인덕터 전압에는 권선 저항의 전압 강하가 포함됩니다. 다른 전압은 소자 자신의 방향을 따릅니다.
상태는 가정하지 않고 모드 동안의 시뮬레이션 파형에서 읽습니다. 인덕터는 전류의 크기가 커지는 동안 에너지를 저장하고 작아지는 동안 방출하며, 모드 안에서 커졌다가 줄어드는(또는 그 반대인) 전류는 그렇게 알려 줍니다. 커패시터나 배터리는 전류가 + 단자로 들어가는 동안 충전됩니다. 전원은 전류가 + 단자에서 나가는 동안 전력을 공급하며, 모드 안에서 전류 방향이 바뀌는 전원이나 고정 출력은 전력이 양방향으로 흐른다고 알려 줍니다. 한 번 부호가 바뀌는 전류는 방향이 바뀌는 시각과 함께 알려 줍니다. 모드의 이름도 도통하는 부분으로 정합니다. 포워드 컨버터에서 스위치가 켜진 구간이라도 정류 다이오드에 셀 만한 전류가 없으면 정류 다이오드 차단 모드이고, 스위치가 꺼진 구간에서 다이오드에 전류가 없으면 휴지 모드, 노드 커패시턴스가 있으면 링잉 모드입니다. 상태는 시뮬레이터가 그 모드에서 기록한 샘플, 곧 모든 하위 스텝(주기의 2000분의 1)과 모든 이벤트(event)의 앞뒤에서 읽습니다. 그래서 몇 나노초짜리 노드 커패시턴스 전압 상승처럼 하위 스텝보다 짧은 모드는 양 끝 값으로 읽습니다. 인덕터의 상태에는 샘플 사이까지 포함한 모드 안 전류의 정확한 극값도 반영됩니다. 그래서 노드 커패시턴스의 전압 상승 직후 첫 하위 스텝 안에서 전류가 최댓값에 이르면, 인덕터는 에너지를 저장한 뒤 방출하는 것으로 읽힙니다.
전류가 그 기준값(scale)의 1000분의 1보다 작으면 회로도, 상태, 표 모두에서 흐르지 않는 것으로 봅니다. 기준값은 그 모드 동안 함께 흐르는 소자들의 가장 큰 전류입니다. 스위칭 셀(스위치, 다이오드, 권선, 인덕턴스, 노드 커패시턴스, 직접 연결된 입력. 변압기의 1차 측과 2차 측은 권선비가 서로의 크기를 바꾸므로 따로 묶습니다), 부하를 포함한 출력 커패시터, 전원을 포함한 버스 커패시터가 각각 한 묶음입니다. 그래서 다이오드가 암페어 단위의 전류를 흘리는 동안 노드 커패시턴스가 입력을 통해 끌어 쓰는 마이크로암페어는 전류 경로로 보지 않지만, 링잉이 다이오드를 몇 나노초 동안 다시 켜서 흐르는 전류는 주기의 최대 전류에 비해 아무리 작아도 그 모드에서 일어나는 일의 전부입니다. 인덕터의 기준값은 한 주기 동안 자신의 최대 전류를 넘지 않습니다. 부하 전류의 1000분의 1인 포워드 컨버터의 자화 전류도 자기 크기를 기준으로 봅니다. 커패시터의 기준값은 부하나 전원이 끌어가는 전류보다 작지 않습니다. 메가옴 저항에 혼자 전류를 대는 커패시터는 전류가 흐르는 것으로 보지만, 암페어를 받는 배터리로 나노암페어를 흘려 보내는 커패시터는 그렇지 않습니다. 저항, 배터리, 고정 출력, 전원과 그 저항은 어느 모드에서나 본래 전류가 흐르므로, 한 주기 동안 자신의 최대 전류를 기준값으로 씁니다. 그다음 각 노드에서 셀 만한 전류들이 평형을 이루어야 합니다. 그렇지 않으면(배터리가 충전 펄스 사이에 저항에 전류를 대는데, 그 전류가 펄스의 1000분의 1에도 못 미치는 경우) 그 노드에서 세지 않은 전류 가운데 가장 큰 전류를 가진 소자를, 셀 만한 전류 가운데 가장 큰 전류를 기준으로 다시 재며, 모든 노드가 평형을 이룰 때까지 반복합니다. 배선은 양쪽 소자들 사이에 전달하는 전류가 양쪽 소자 가운데 기준값이 가장 작은 소자에게 셀 만한 크기이면 색칠합니다. 그래서 색칠된 경로는 노드에서 끊기지 않습니다. 셀 만한 전류가 커지는지 줄어드는지는 기준값의 백만분의 1부터 더 세밀하게 읽습니다.
반올림 오차는 이 모든 것보다 아래에 있습니다. 회로 고유 전류(가장 큰 전압이 한 주기 동안 인덕턴스에 만드는 전류)의 10억분의 1보다 작은 전류는 세지 않고, 주기의 10억분의 1보다 짧은 모드(반올림으로 남은 A의 전류가 스위치를 s 동안 바디 다이오드로 보내는 경우)는 옆 모드에 합치며, 모든 전류가 반올림 오차 수준인 회로(정상 전압에 이른 커패시터만 있는 부하)는 모드 없이, 그래프에도 모드 구간 없이 정지 상태로 보여 줍니다.
회로도와 표는 같은 전류를 쓰며, 그 전류는 모델이 소자마다 내는 출력에서
옵니다. 그려진 회로의 모든 노드에서 주기 안의 모든 시점에 키르히호프 전류
법칙이 성립합니다. 모든 토폴로지, 부하, 노드 커패시턴스, 전원에 대해
그렇습니다(sim-schematic.test.ts).
다이오드나 인덕터의 전류가 끝나는 모드 경계 부근에서, 그 전류가 주기 평균의
5 %를 마지막으로 지나 떨어지는 시각은 아래 SPICE 비교의 모든 회로에서
ngspice와 3 ns 이내(최악 2.1 ns)로 일치합니다.
모드 보기 아래의 모든 모드 한눈에 보기는 한 주기 전체를 그립니다. 먼저 주요 파형을 하나의 시간 축에 쌓아 보여 줍니다. 게이트, 인덕터 전류, 스위치 전류(바디 다이오드의 전류를 음의 값으로 포함)와 다이오드 전류, 스위치 전압, 인덕터 전압입니다. 포워드 컨버터는 인덕터 전압 대신 자화 전류와 두 출력 다이오드의 전류를 보여 줍니다. 모드 사이의 경계 , , …은 점선으로 표시하고, 각 행의 최댓값은 오른쪽에, 최솟값은 자리가 있으면 그 아래에 적습니다. 이어서 모든 모드의 회로를 순서대로 (a), (b), …로 보여 주며, 색과 화살표와 설명은 모드 보기와 같습니다. 페이지의 다른 모든 것처럼 입력한 값을 따릅니다. 토폴로지 페이지들은 각자의 예제로 이 그림을 보여 줍니다. 벅 컨버터가 그 예입니다.
계산 방법
섹션 제목: “계산 방법”아래 내용의 바탕이 되는 개념은 풀이 예제와 함께 브라우저 시뮬레이터의 동작 원리 페이지에 있습니다.
-
한 구간 안에서 상태(인덕터 전류, 커패시터 전압)는 선형 미분방정식을 따릅니다. 시뮬레이터는 스위칭 주기의 2000분의 1인 하위 스텝마다 그 방정식의 정확한 해(행렬 지수 함수)로 상태를 계산합니다. 회로에서 가장 빠른 링잉의 한 주기가 하위 스텝 20개 이상에 걸치도록, 필요하면 스텝을 주기의 2만분의 1까지 더 짧게 합니다. 가장 빠른 링잉은 모든 구간 방정식의 고윳값(eigenvalue)에서 구합니다. 스위치 양단 커패시턴스, 인덕턴스와 함께 링잉하는 작은 출력 커패시터, 입력 버스가 그런 예입니다. 하위 스텝을 가장 짧게 해도 링잉 한 주기가 하위 스텝 3개에 못 미칠 만큼 빠르게 링잉하는 회로는 받지 않습니다. 다이오드가 두 하위 스텝 사이에서 켜졌다가 꺼져도 보이지 않을 수 있기 때문입니다. 정상상태가 없을 때 그리는 기동 과정도 같은 규칙을 따릅니다. 행렬 지수 함수는 파데 근사(Padé approximant)를 쓰는 스케일링·제곱법(scaling and squaring)으로 구하며 [Higham 2005], 단위행렬을 뺀 형태로 구하고 제곱합니다. 그 전에 각 상태의 배율을 2의 거듭제곱으로 조정해, 한 상태가 다른 상태들과 주고받는 결합의 크기를 양방향으로 비슷하게 맞춥니다(균형화, balancing [Parlett & Reinsch 1969]). 이 조정은 정확합니다. 그렇게 하지 않으면 작지 않은 전원 저항 뒤의 아주 작은 버스 커패시턴스가 행렬을 가장 빠른 모드보다 훨씬 크게 만들고, 근사 안의 연립방정식 풀이가 그 큰 결합을 피벗(pivot)으로 골라 느린 상태들이 유효 숫자를 잃습니다. 균형화 덕분에 하위 스텝보다 훨씬 짧은 시정수가 있어도 느린 상태들은 유효 숫자를 잃지 않습니다.
-
다이오드 전류가 0에 도달하거나 클램프가 도통하기 시작하는 것 같은 이벤트는 같은 정확한 해를 써서, 이분법(bisection)처럼 이벤트를 구간 안에 가두는 탐색으로 하위 스텝 안에서 위치를 찾습니다(이분법보다 훨씬 적은 단계로 끝나는 일리노이(Illinois) 변형의 가위치법(regula falsi)). 한 이벤트가 하위 스텝을 일찍 끝내면 다른 조건들을 그 순간에 다시 확인합니다. 하위 스텝 안에서 먼저 충족되었다가 스텝 끝에서는 더 이상 성립하지 않는 조건은 먼저 일어난 것으로 봅니다. 예를 들어 노드 커패시턴스의 전압이 오르다가, 피크에 이르러 전류가 0이 되기 직전에 다이오드의 턴온 전압을 지나는 경우입니다. 게이트 에지는 주기의 시작과 듀티비 지점에 정확히 놓입니다.
-
평균값, 전력, 극값. 한 구간 안에서 페이지가 보여 주는 모든 물리량은 상태 변수의 일차(아핀, affine) 함수이고, 두 샘플 사이에서 상태는 그 구간의 방정식을 정확히 따릅니다. 그래서 평균값, 전력, 그리고 rms 값과 도통 손실의 바탕인 제곱 평균은 샘플을 직선으로 이은 값이 아니라, 하위 스텝마다 그 해를 정확히 적분한 값입니다. 이 적분은 구간의 방정식으로 만든 더 큰 행렬의 지수 함수로 구하며 [Van Loan 1978], 스텝처럼 배율을 조정하고 단위행렬을 뺀 형태로 계산합니다. 또 각 상태를 그 주기에서 그 구간의 첫 상태에 대한 편차로 계산하고, 그 첫 상태에서의 변화율은 두 배 정밀도로 더합니다. 그래서 작은 저항 뒤의 배터리 전류처럼 상수 부분이 변하는 부분보다 훨씬 큰 물리량도 샘플이 주는 유효 숫자를 잃지 않습니다. 그 한계는 배터리 전압의 마지막 자리 하나를 저항으로 나눈 값이며, 배터리 옆 커패시터의 전류도 같은 분해능을 가집니다. 하위 스텝보다 훨씬 짧은 시정수처럼 하위 스텝보다 빠른 과도 현상도 느린 현상과 똑같이 정확하게 적분됩니다. 같은 샘플에서 60자리 정밀도로 적분한 결과와 비교하면, 시정수가 하위 스텝보다 수천억 배 짧은 회로를 포함해 시험한 회로에서 결과는 각 물리량 크기의 1조분의 몇 이내로 일치하고, 하위 스텝 격자를 바꾸어도 약 100억분의 1 이내로 일치합니다. 무작위 회로 수백 개에서도 같은 시작 상태에서 출발한 두 격자는, 같은 이벤트를 보는 한 회로의 가장 큰 전류나 전압에 대해 그만큼 가깝게(배터리 전류의 분해능까지) 일치합니다. 안정된 커패시터만 있는 부하처럼 전류 자체가 반올림 오차뿐이면, 두 격자는 그 반올림 오차 수준으로 일치합니다. 한 격자는 하위 스텝 안에서 다이오드가 잠깐 도통하는 것을 보고 다른 격자는 보지 못하면, 두 결과는 그 도통이 흘리는 만큼 달라집니다(아래 ‘모델 밖’ 참고). 각 물리량의 최댓값과 최솟값에는 두 샘플 사이의 피크도 들어갑니다. 하위 스텝 안에서 기울기의 부호가 바뀌는 곳, 그리고 기울기가 한 하위 스텝 안에서 0을 지나 내려갔다가 되돌아오는 곳(더 가파른 경사 위에 얹힌 링잉)을 찾습니다. 빠른 과도 현상이 감쇠하는 하위 스텝 시작 부근도 따로 확인합니다. 기울기 자체의 반올림 오차 안에 드는 방향 전환은 탐색하지 않지만, 자기 값의 반올림 오차 수준에서만 움직이는 물리량은 기울기의 부호가 바뀌는 곳마다 탐색하므로 몇몇 회로는 몇 배 느려집니다. 기울기는 샘플에서의 변화율을 두 배 정밀도로 더한 뒤 상태와 같은 방법으로 하위 스텝을 따라 옮겨 구합니다. 그래서 아주 작은 전원 저항과 커패시턴스 뒤의 입력 버스처럼, 기울기가 그보다 몇 자릿수나 큰 항들이 상쇄되고 남은 값인 경우에도 피크의 위치를 반올림 오차 이내로 찾습니다. 그래프는 샘플을 그리므로, 하위 스텝보다 좁은 피크는 수치에는 있어도 그래프에는 보이지 않을 수 있습니다.
-
반올림 오차. 한 주기 안에서 시뮬레이터는 각 상태가 주기 시작 값에서 벗어난 편차를 따라갑니다. 그러면 반올림 오차가 상태의 크기가 아니라 상태가 움직인 양에 비례하므로, 아주 큰 커패시터라도 한 주기 동안의 변화량이 반올림 수준까지 정확합니다.
-
주기적 정상상태는 한 주기의 초기 상태를 다음 주기의 초기 상태로 보내는 사상(map)에 대한 뉴턴 반복(Newton iteration)으로 찾으며, 이때 사상의 정확한 도함수를 씁니다. 이 도함수는 하위 스텝 행렬들의 곱이며, 시각이 상태에 따라 달라지는 이벤트마다 보정됩니다. 시뮬레이터는 도함수에서 단위 행렬을 뺀 값을 누적하므로, 하위 스텝 행렬이 1로 반올림되는 아주 느린 상태도 감쇠를 잃지 않습니다. 최대 2000주기 안에서 모든 상태가 다음 두 검사를 통과하면 수렴으로 판정합니다.
- 한 주기 동안의 변화량이 그 상태가 주기 안에서 움직인 양의 백만분의 1보다 작아야 합니다. 상태의 최댓값을 기준으로 삼으면 매 주기 같은 양씩 커지는 전류도 충분히 커진 뒤에는 수렴으로 판정되므로 그렇게 하지 않습니다.
- 남은 뉴턴 스텝, 즉 정상상태까지의 추정 거리가 상태 크기의 백만분의 1보다 작아야 합니다. 변화량만으로는 부족합니다. 아주 큰 커패시터는 정상상태에서 아직 멀리 떨어져 있어도 주기마다 조금밖에 변하지 않기 때문입니다.
정상상태가 한 점이 아니면 도함수에 그것이 드러납니다. 정확히 평형 듀티비인 고정 출력이나, 더 이상 전하가 들어오지 않는 커패시터만 있는 경우에는, 다른 상태에 영향을 주지도 받지도 않고 어떤 값에서 시작하든 그 값으로 돌아오는 상태가 있습니다. 뉴턴 스텝은 그 상태를 그대로 두고 나머지 상태에 대해 풉니다. 그 상태가 아직 변하는지는 첫 번째 검사만으로 판단합니다.
0에 머무는 상태는 주변 전압의 반올림 오차를 받아들이며(회로 전압이 수십 볼트일 때 A의 전류), 그 잔여가 주기 안에서 그 상태가 움직인 양의 전부가 됩니다. 그래서 각 상태에는 회로 안의 고유 크기를 둡니다. 전압에는 회로에 주어진 가장 큰 전압(입력이나 전원의 개방 전압, 배터리 전압, 고정 출력, 시작 전압)을, 전류에는 그 전압이 한 주기 동안 그 상태의 인덕턴스에 만드는 전류를 씁니다. 이 크기의 반올림 수준 안에 드는 변화나 뉴턴 스텝은 변화로 보지 않으며, 두 번째 검사는 각 상태의 스텝을 그 상태의 값, 주기 안에서 움직인 양, 이 고유 크기 가운데 가장 큰 것에 견주어 봅니다.
-
모드는 인덕터 전류가 주기의 일부 동안 0에 머물면 DCM, 0에 닿기만 하면 BCM, 그 밖에는 CCM입니다. 전류가 거꾸로 흘러 스위치의 바디 다이오드로 계속 흐르는 경우도 CCM입니다.
테스트 스위트(packages/pe-core/test/sim.test.ts)는 시뮬레이터를 수식과
비교하여 검사합니다.
-
검증 격자(validation grid). 벅, 부스트, 벅-부스트, 플라이백에 대해, 듀티비와 양쪽에 걸친 값의 격자에서 다음을 확인합니다.
- 시뮬레이션한 변환비(conversion ratio)와 인덕터 리플의 피크-피크 값이 수식과 2 % 이내로 일치합니다.
- 검출한 모드가 와 의 비교 결과와 일치합니다.
-
에너지 평형. 손실이 있을 때 주기당 입력 에너지는 출력 에너지와 계산한 손실의 합과 같습니다. 스위치 양단 커패시턴스가 있고 리플이 수십 볼트인 경우에도 마찬가지입니다.
-
뉴턴 반복의 도함수. 주기 사상의 정확한 도함수에서 단위 행렬을 뺀 값이 한 주기 동안의 변화량의 중심 유한 차분(central finite difference)과 일치하며, 아주 느린 상태에서도 그렇습니다.
-
아주 큰 커패시터. 시정수가 수십억 주기에 이르는 버스 커패시터도 무손실 저항(loss-free resistor) 분압 값에 자리 잡고, 아주 큰 출력 커패시터도 훨씬 작은 커패시터와 같은 출력 전압을 냅니다.
-
링잉. DCM의 링잉 주파수가 L-C 수식과 일치합니다.
-
전원 구동 플라이백. 전원이 임계 전압(critical voltage)에서의 DCM 전력보다 많은 전력을 공급할 수 있으면 입력을 임계 전압에 묶어 두고, 그렇지 못하면 DCM에서 그보다 낮은 전압에 자리 잡습니다.
-
정상상태 없음. 평형 듀티비보다 큰 듀티비로 고정 출력에 연결된 벅은 주기당 전류 변화, 인덕터 전압의 평균, 평형을 이루는 듀티비를 정확히 알려 줍니다. 그보다 작거나 같은 듀티비에서는 벅과 부스트가 자리 잡습니다. 평형 듀티비보다 10억분의 1 큰 벅은 평형으로 보고, 10만분의 1 크면 전류가 계속 커진다고 알립니다. 벅-부스트의 평형 듀티비는 반전된 변환비에서 구합니다. 리셋 한계를 넘은 포워드 컨버터는 고정 출력이나 커패시터만 있는 경우에도 자화 전류가 계속 커진다고 알립니다.
-
커패시터만 있는 부하. 부스트 뒤에서는 한없이 충전됩니다. 벅 뒤에서는 아래와 위 어느 쪽에서 시작해도 입력 전압에 자리 잡으며, 스위치 양단 커패시턴스, 손실, 전원이 있어도 마찬가지입니다. 포워드 컨버터 뒤에서는 보다 높은 시작 전압, 오버슈트한 L-C 충전의 피크 값, 그리고 리셋 한계를 넘었지만 스위치 저항이 자화 전류를 붙잡아 둘 때 기동 과정이 멈추는 전압을 유지합니다. 스위치 양단 커패시턴스가 있는 부스트와 벅-부스트는 기동 과정이 멈추는 곳에서 멈춥니다. 턴온 때 남은 전류가 주기마다 번갈아 바뀌는 동안에도, 주기적인 링잉이 멈출 더 낮은 전압을 기동 과정이 지나친 뒤에도, 입력 버스가 아직 회복하는 동안에도 그렇습니다. 탐색이 중간에 끝나면 커패시터가 아직 자리 잡지 않았다고 알립니다.
-
전류 0에서의 바디 다이오드. 다이오드 전류가 끝나는 순간 출력이 입력보다 높으면(L-C 오버슈트, 저항 뒤의 배터리) 벅의 전류는 곧바로 스위치의 바디 다이오드를 통해 음수가 되고, 스위치 전압은 0 아래로 내려가지 않습니다.
-
모델 밖. 모델은 각 다이오드를 그것이 도통하는 구간 밖에서는 꺼 두고, 스위치의 바디 다이오드는 이상적인 다이오드로 봅니다. 페이지가 그리는 파형(샘플 사이의 극값까지 포함한 정상상태 한 주기, 또는 기동 과정 전체)에서 다음 두 가지를 표시합니다.
- 꺼 둔 다이오드가 순방향 전압 강하보다 큰 순방향 전압을 받는 경우. 대상은 두 스위치 컨버터의 다이오드 D, 그리고 포워드 컨버터의 정류 다이오드 , 환류 다이오드 , 리셋 다이오드 입니다. 예를 들어 너무 약한 전원으로 무거운 부하를 구동하는 벅, 벅-부스트, 플라이백, 그런 전원에서 리셋 한계를 넘은 포워드 컨버터, 스위치가 켜진 동안 스위치 강하(과 전류의 곱)가 처진 버스보다 커져 에 순방향 전압이 걸리는(강하가 버스의 배를 넘으면 에도 걸리는) 포워드 컨버터, 그리고 출력이 입력보다 낮아지는 부스트(고정 출력이나 배터리가 출력을 거기에 붙잡거나, 너무 무거운 부하가 끌어내린 경우)에서 스위치가 켜진 동안 을 흐르는 전류가 스위치 노드를 출력보다 높이 들어 올리는 경우가 그렇습니다.
- 스위치 전압이 0 아래로 내려가 이상적인 바디 다이오드가 도통할 경우. 스위치 양단 커패시턴스가 없으면 DCM의 휴지 구간에서 스위치 전압이 입력 버스를 따라가므로, 이때 0 아래로 내려간 버스는 이렇게 표시됩니다. 스위치 양단 커패시턴스가 있으면 대신 모델의 클램프 구간에서 바디 다이오드가 도통합니다.
모델의 전압 강하를 가진 다이오드라면 여기서 도통하는데, 모델은 그것을 넣지 않으므로 페이지는 결과가 성립하지 않을 수 있다고 알립니다. 결과가 얼마나 달라지는지는 넘는 양이 클수록, 그 다이오드가 흘릴 전류가 클수록 커집니다. 그 밖의 곳에서는 버스 전압이 0 아래로 내려가도 다이오드가 켜지지 않습니다. 버스가 0 아래로 처지지만 다이오드는 모두 꺼져 있는 벅-부스트 두 개와 부스트 하나는 표시되지 않으며, 모든 다이오드를 넣은 ngspice도 SPICE 비교의 허용 오차 안에서 이 결과와 일치합니다. 모든 컨버터, 부하, 전원, 노드 커패시턴스에 걸쳐 보통 회로들을 훑어보는 시험에서는 아무것도 표시되지 않습니다. 무작위 회로에서 표시는 대부분 위의 경우, 곧 약한 전원 때문에 버스가 0 아래로 내려가거나 부스트의 출력이 입력보다 낮아지는 경우입니다. 나머지는 스위치 양단 커패시턴스의 링잉이 하위 스텝 안에서 다이오드에 순방향 전압을 걸거나 스위치 전압을 0 아래로 끌어내렸다가 스텝 끝 전에 되돌아가는 경우로, 각 하위 스텝의 끝에서 조건을 확인하는 이벤트 탐색은 이 턴온을 보지 못합니다. 다이오드가 전압 강하를 넘는 양과 스위치 전압이 0 아래로 내려가는 양은 모두 회로의 가장 큰 전압의 1만분의 1부터 셉니다. 그보다 적게 순방향으로 바이어스된 다이오드가 가져갈 전류는 결과를 그만큼 적게 바꾸므로, 페이지가 보여 주는 네 자리 아래에 머뭅니다.
그 밖의 테스트 묶음은 시뮬레이터를 다른 방법으로 검사합니다.
- SPICE와 비교 (
packages/pe-core/test/sim-spice.test.ts). 회로 34개를 회로도로부터 넷리스트(netlist)로 다시 작성하여, 자체 적분기를 가진 독립 솔버인 ngspice [ngspice – open source SPICE simulator]로 정지 상태부터 실행합니다 (scripts/spice_crosscheck.py). 다루는 경우는 다음과 같습니다. 모든 토폴로지의 CCM과 DCM. 포워드 컨버터의 모든 구간(리셋 권선이 1차와 같은 턴 수일 때와 그 절반일 때, 배터리가 정류기를 차단해 둘 때 포함). 노드 커패시턴스의 링잉(배터리가 있을 때 포함). 테브난 전원. 저항이 있거나 없는 배터리와, 전류가 스위치의 바디 다이오드로 되돌아 흐르는 입력보다 높은 배터리. L-C 오버슈트로 출력이 입력보다 높아져, 다이오드 전류가 끝나는 순간 전류가 바디 다이오드로 되돌아 흐르는 경우. 고정 출력. 전류가 계속 커지는 기동. 빈 상태부터 충전되는 커패시터(노드 커패시턴스가 있는 부스트 포함). 노드 커패시턴스가 있는 부스트와 벅-부스트 뒤에서 충전을 멈추는 커패시터만 있는 부하(그중 하나는 주기적인 링잉도 멈출 더 낮은 전압을 기동 과정이 지나친 뒤). 이 경우들에서 마지막 주기의 각 물리량의 평균, 최댓값, 최솟값, 끝값, 그리고 주기 안 40개 시점의 값이 그 물리량의 최대 크기의 0.5 %에, 이상적 부품이 주기 내내 0으로 두는 물리량에 SPICE 부품이 보태는 몫을 더한 범위 안에서 일치합니다. 그 몫은 전압에 5 mV, 전류에 1 µA입니다 [ngspice – open source SPICE simulator]. 이 여유가 필요한 경우는 네 개이며, 도통하는 바디 다이오드 양단의 스위치 전압 3.9 mV와 꺼져 있는 다이오드의 누설 전류 최대 0.5 nA입니다 [ngspice – open source SPICE simulator]. SPICE의 부품은 거의 이상적입니다. 스위치의 온 저항은 사례의 값(주어지지 않으면 1밀리옴)이고 스위칭에 1나노초가 걸리며, 다이오드는 사례의 보다 수 밀리볼트만 더 강하합니다. 작은 로 정해지는 배터리 전류가 이 수 밀리볼트에 가장 민감합니다. 포워드 컨버터의 넷리스트에는 환류 다이오드 양단에 작은 RC 스너버가 있는데, 시뮬레이터에는 없습니다. 이 다이오드가 꺼질 때 ngspice의 적분기를 안정시키기 위한 것입니다. 비교에서 빼는 것은 두 가지입니다. 시뮬레이터의 이벤트에서 20 ns 이내의 값(실제 에지와 이상적 에지는 나노초 단위로 다릅니다), 그리고 노드 커패시턴스가 있을 때 다이오드 전류의 최댓값과, 벅과 플라이백에서는 입력 전류의 극값입니다. 이때 ngspice의 가파른 다이오드가 전류를 넘겨받으며 수 피코초 동안 오버슈트하기 때문입니다. 주기 안에서 전류가 끝나는 경우(DCM의 다이오드나 인덕터 전류, 리셋이 끝날 때의 포워드 컨버터 자화 전류) 그 전류가 주기 평균의 5 %를 마지막으로 지나 떨어지는 시각을 주기 시작에서부터 재면 3 ns 이내로 일치합니다. 최악은 2.1 ns로, ngspice의 다이오드 전압 강하가 조금 더 커서 DCM 플라이백의 자화 해제가 일찍 끝나는 경우입니다. 이 시각은 전류가 0에 이르기 최대 백 나노초쯤 앞이며, 노드 커패시턴스가 있으면 링잉이 그 수준을 지나는 여러 번 가운데 마지막입니다. CI는 변경마다 ngspice를 다시 실행하여 저장된 결과와 비교합니다. - 동작 모드 (
sim-schematic.test.ts,sim-sequence.test.ts,sim-flow.test.ts,src/tools/SequenceView.test.ts,src/lib/seqlayout.test.ts). 모든 토폴로지와 각 부하에 대해, 노드 커패시턴스와 전원이 있을 때와 없을 때 모두, 그려진 회로의 모든 노드에서 모든 샘플마다 키르히호프 전류 법칙이 성립합니다. 모드는 주기의 구간들을 빠짐없이 덮고, 상태는 손으로 확인한 경우와 일치합니다(CCM과 DCM의 벅, DCM의 부스트, 링잉이 남긴 음수 전류가 턴온 때 바디 다이오드로 흐르는 플라이백, 포워드 컨버터의 리셋, 출력이 입력보다 낮은 부스트, 한 모드 안에서 커졌다가 줄어드는 인덕터 전류, 배터리가 일정하게 붙잡아 두는 역전류, 다이오드가 꺼진 채 링잉으로 끝나는 전압 상승, 플라이백의 링잉을 양방향으로 흘리는 입력). 모든 컨버터의 고정 회로와 무작위 회로의 모든 모드에서, 모드 설명이 말하는 도통 부분은 표의 상태와 같고, 상태는 읽는 방식과 상관없이 물리와 맞습니다. 인덕턴스 양단의 평균 전압은 전류 방향으로 보아 전류 변화와 부호가 같고, 커패시터는 충전되는 동안 전압이 오르며, 배터리는 출력이 개방 전압보다 높을 때만 충전됩니다. 각 컨버터와 각 부하(전원과 노드 커패시턴스가 있을 때와 없을 때), 무작위 탐색에서 찾은 회로, 무작위 회로 50개의 모든 모드에서 그려진 경로는 닫혀 있고, 한 노드의 화살표가 모두 들어가거나 모두 나가는 일이 없으며, 색칠된 소자의 전류는 모든 노드에서 평형을 이룹니다. 페이지가 렌더링한 설명은 각 인덕터의 전압을 표의 값 그대로 말하고, 포워드 컨버터의 코어 리셋을 그것이 일어나는 모드에서 말합니다. 정지 상태의 회로는 모드를 보여 주지 않습니다. 모든 모드, 소자, 상태에 사이트의 모든 언어로 된 문구가 있고, 어떤 회로에서도 모든 언어에서 회로도의 라벨, 기호, 배선, 화살표가 겹치지 않습니다. 테스트에서는 추정한 글자 폭으로, CI가 빌드한 사이트에서 실행하는scripts/seq_check.mjs에서는 브라우저가 실제로 그린 글자로 확인하며, 이 검사는 범례와, 1280, 768, 360 픽셀 폭에서 각 모드 버튼의 글자가 버튼 안에 있는지도 확인합니다. - 불변량 (
packages/pe-core/test/sim-invariants.test.ts). 모든 컨버터에 저항, 배터리, 둘 다, 커패시터만, 고정 출력을 연결하여, 이상적인 경우와 손실이 있는 경우 모두 다음을 확인합니다. 정상상태에서 인덕터의 전압-초와 출력 커패시터의 전하가 평형을 이루고, 커패시터 전류가 시뮬레이션한 출력 전압의 기울기에 를 곱한 값과 같으며, 전원의 전력이 저항, 배터리의 개방 전압과 내부 저항, 또는 고정 출력이 가져가는 전력과 손실의 합과 같습니다. 포워드 컨버터의 자화 전압은 자화 전류의 기울기에 을 곱한 값과 같고, 그 전압-초가 평형을 이룹니다. 정지 상태에서 시작한 기동 과정에서도 전원의 에너지는 인덕터와 커패시터에 저장된 에너지, 부하가 가져간 에너지, 손실의 합과 같습니다. 앞의 두 가지는 주기적 정상상태에서 정의상 성립하므로 계산의 일관성을 확인하고, 에너지 평형은 모델 자체를 확인합니다.
LTspice, ngspice, CircuitJS1의 같은 회로
섹션 제목: “LTspice, ngspice, CircuitJS1의 같은 회로”아래 프리셋은 저장소의 SPICE 라이브러리에 같은
값의 LTspice 회로도(schematic)와 ngspice 넷리스트(netlist)로도 있고,
falstad.com에서 열리는 CircuitJS1 회로로도 있습니다(CircuitJS1로 보는 컨버터).
각 폴더의 README에 무엇을 그릴지와 ngspice가 계산한 파형이 있습니다. 거기에
적힌 모든 평균값과 최댓값·최솟값에서 이 시뮬레이터와 ngspice는 1 % 안에서
일치하고(packages/pe-core/test/sim-library.test.ts), ngspice는 식과 1 %
안에서 일치합니다(scripts/sim_library.py). CircuitJS1도 검사가 마지막 두
주기에서 측정하는 평균값과 최댓값·최솟값에서 식과 1 % 안에서
일치합니다(scripts/falstad_check.mjs).
다른 값이라도 저항 부하에 전원이 없으면, 그래프 아래의 이 값으로 CircuitJS1에서
열기 링크가 입력한 값으로 같은 회로를 만듭니다. 라이브러리와 같은 배치와
부품을 쓰고, 스위치의 은 그 칸의 값을 쓰며, 시뮬레이션한 정상상태에서
스위치가 켜지는 순간의 값으로 시작합니다(src/lib/falstadgen.ts).
라이브러리의 일곱 사례에서는 이 생성기가 라이브러리의 파일과 글자 하나까지 같은
회로를 쓰므로(falstadgen.test.ts), 넷리스트와 비교한 배선 검사가 여기에도
그대로 성립합니다. CircuitJS1 회로에는 권선 저항, 다이오드 강하, 노드
커패시턴스가 없으며, 그중 하나라도 입력하면 링크가 그 사실을 알려 줍니다.
풀이 예제: 전원을 한 값에 묶어 두는 플라이백
섹션 제목: “풀이 예제: 전원을 한 값에 묶어 두는 플라이백”고정 듀티비의 플라이백이 전류 제한 전원으로부터 고정 출력을 충전합니다.
| 기호 | 값 | 구하는 방법 |
|---|---|---|
| 출력 전압 | 5 V | 주어진 값 |
| 출력 다이오드 순방향 전압(forward drop) | 500 mV | 주어진 값 |
| 듀티비(duty ratio) | 0.2 | 주어진 값 |
| 권선비(turns ratio), 2차/1차 | 0.1 | 주어진 값 |
| 스위칭 주파수 | 10 kHz | 주어진 값 |
| 자화 인덕턴스(magnetizing inductance), 1차 기준 | 20 mH | 주어진 값 |
| 전원 개방 전압(open-circuit voltage) | 1 kV | 주어진 값 |
| 전원 내부 저항(source resistance) | 10 kΩ | 주어진 값 |
| CCM/DCM 경계의 입력 전압 | 220 V | 플라이백: CCM/DCM 경계의 입력 전압(고정 D, 고정 출력) |
| 최대 가용 전력 | 25 W | 선형 전원의 최대 전력 |
| 가용 전력 중 추출 비율 | 0.686 | 정전압 싱크의 추출 비율 |
| 전력 | 4.84 W | DCM 벅-부스트/플라이백이 끌어오는 전력 |
입력은 CCM이 시작되는 220 V에 자리 잡습니다. 이 전압에서 전원은 가용 최대 전력 25 W의 0.686만큼을 공급할 수 있으며, 이는 컨버터가 DCM에서 끌어갈 4.84 W보다 많습니다. 따라서 자화 전류가 커지다가 CCM이 입력을 임계 전압에 묶어 둡니다. 프리셋을 열고 시뮬레이션한 입력 전압을 수식과 비교하십시오(결과는 아래 스크린샷에 있습니다).
▶ 시뮬레이터에서 열기: 플라이백
초기값을 가져온 예제 flyback-source
풀이 예제: 배터리를 충전하는 벅
섹션 제목: “풀이 예제: 배터리를 충전하는 벅”고정 듀티비의 벅이 배터리를 충전합니다. CCM에서 스위치 노드의 평균은 이고, 인덕터 전압의 평균이 0이므로 출력의 평균도 같습니다. 그러면 배터리의 평균 전류는 Rint 모델로 정해집니다.
| 기호 | 값 | 구하는 방법 |
|---|---|---|
| 입력 전압 | 24 V | 주어진 값 |
| 듀티비(duty ratio) | 0.6 | 주어진 값 |
| 배터리 개방 전압(open-circuit voltage) | 12 V | 주어진 값 |
| 배터리 내부 저항(internal resistance) | 500 mΩ | 주어진 값 |
| 변환비(conversion ratio) | 0.6 | 벅(buck) 변환비, CCM |
| 출력 전압 | 14.4 V | 변환비로 구한 출력 전압 |
| 배터리 전류(충전 방향이 양) | 4.8 A | Rint 모델의 배터리 전류 |
시뮬레이터도 같은 평균 배터리 전류를 내며, 부하 표는 이 4.8 A를 저장되는 전력과 에서 잃는 전력으로 나누어 보여 줍니다. 컨버터에서 이 전류를 제한하는 것은 뿐이므로 가 조금만 바뀌어도 전류가 크게 바뀝니다.
▶ 시뮬레이터에서 열기: 벅
초기값을 가져온 예제 sim-buck-battery
- 천이 파형이 없습니다. 누설 인덕턴스, 역회복, 스위칭 천이가 없으므로 턴오프 스파이크나 겹침 손실(overlap loss)이 나타나지 않습니다.
- 듀티비가 고정입니다. 제어 루프와 코어 손실(core loss)이 없습니다.
- 정상상태가 없으면 표도 없습니다. 회로에 주기적 정상상태가 없으면 (위) 시뮬레이터는 기동 과정과 그 설명만 보여 줍니다. 커지는 전류의 경로에 저항이 있으면 이런 회로도 정상상태에 이르지만, 그 전류는 그 저항만이 제한하므로 매우 클 수 있습니다. 포워드 컨버터의 자화 전류 경로에 있는 저항은 온 저항뿐이며, 권선 저항은 출력 인덕터의 것입니다.
- 한 충전 상태의 배터리. 시뮬레이터는 배터리의 개방 전압과 저항을 상수로 두며, Rint 모델에는 분극(polarization)이 없어 배터리의 손실은 내부 저항뿐입니다.
- 느린 기동 과정. 포워드 컨버터 뒤, 또는 스위치 양단 커패시턴스가 있는 컨버터 뒤의 커패시터만 있는 부하는 탐색 전에 많아야 4000주기, 하위 스텝 200만 개까지 따라갑니다(노드 커패시턴스가 있으면 100~1000주기). 느린 L-C 충전처럼 이보다 느린 기동 과정은 도달한 곳에서 탐색합니다. 그래서 기동 과정이 멈출 전압보다 낮게 나옵니다(무작위 시험에서 최대 약 0.07 %). 위에서 찾은 정상상태는 오히려 그 전압보다 백만분의 몇만큼 높을 수 있습니다. 빠르게 링잉하는 노드 커패시턴스가 있으면 이런 회로는 푸는 데 수십 초가 걸릴 수 있습니다. 탐색이 끝내 자리 잡지 못하면 1분쯤 걸리기도 합니다.
- 예상되는 곳에만 있는 다이오드. 스위치의 바디 다이오드를 포함한 각 다이오드는 그것이 도통하는 구간에서만 모델에 들어 있습니다. 약한 전원이 버스를 처지게 하거나 을 흐르는 큰 전류가 스위치 노드를 들어 올리면, 모델이 꺼 둔 다이오드가 순방향으로 바이어스될 수 있습니다. 전류가 버스보다 큰 스위치 강하를 만들어도 그렇습니다. 그러면 시뮬레이터는 이 결과가 성립하지 않을 수 있다고 알립니다.
스크린샷
섹션 제목: “스크린샷”
이 사이트의 예제, 프리셋, 연습 문제에 나오는 수치는 교육용으로 만든 어림수(합성 값)이며, 실제 설계의 데이터가 아닙니다.