M1 · 벅 컨버터 유도와 검증
- 벅 컨버터의 CCM 변환비를 전압-초 평형(volt-second balance)으로, 손 계산과 sympy로 각각 유도합니다.
- 온 구간(on-interval) 동안의 전류 기울기로 인덕터 전류 리플을 유도합니다.
- 식 하나가 사이트의 검사를 거치는 과정을 따라갑니다:
equations.yaml의 항목, 그 테스트 값, 그 식을 재현해야 하는 sympy 유도, 그리고 생성기(generator). 각각을 일부러 망가뜨려 어떤 검사가 실패하는지 봅니다.
시작하기 전에
섹션 제목: “시작하기 전에”- 전압-초 평형과 전하 평형과 벅 컨버터를 읽습니다.
- 저장소를 클론하고 Python 패키지를 설치해 둡니다(README에 있는 대로
pip install -e "python[dev,figures]"). 아래 명령은 클론의 최상위 폴더에서 실행합니다. - 이 사이트에서 은 Erickson과 같이 인덕터 전류의 피크-피크 리플의 절반입니다.
1. 손으로 풀기
섹션 제목: “1. 손으로 풀기”CCM에서 스위치는 동안 인덕터를 에 연결하고, 주기의 나머지 동안에는 다이오드가 인덕터를 접지에 연결합니다. 출력 전압 를 일정하다고 보고(소리플 근사, small-ripple approximation) 각 구간의 인덕터 전압을 식으로 씁니다. 한 주기에 걸쳐 평균하고, 그 평균을 0으로 놓은 뒤 에 대해 풉니다. 를 벅 변환비와 비교합니다.
2. sympy로 풀기
섹션 제목: “2. sympy로 풀기”같은 계산을 sympy에 맡깁니다. 두 인덕터 전압을 채웁니다.
import sympy as sp
D, Vg, V = sp.symbols('D V_g V', positive=True)v_on = ... # 스위치가 켜져 있는 동안의 인덕터 전압v_off = ... # 다이오드가 도통하는 동안의 인덕터 전압print(sp.solve(sp.Eq(D * v_on + (1 - D) * v_off, 0), V))저장소의 유도는 python/pe_core/derive/ccm_ratios.py에 있고,
유도 페이지에서 단계별로 볼 수 있습니다.
3. 리플
섹션 제목: “3. 리플”온 구간 동안 인덕터 전류는 일정한 기울기로 오릅니다. 동안 오른 양이 피크-피크 리플이고, 그 절반이 입니다. 결과를 벅 인덕터 리플과 비교합니다.
4. 예제의 값
섹션 제목: “4. 예제의 값”벅 예제는 = 24 V, = 0.5, = 100 µH, = 100 kHz입니다. 이 예제의 출력 전압과 을 계산해 완료 기준에 입력합니다. 그런 다음 수식 탐색기에서 리플을 열고 인덕턴스를 바꿔 보면, 리플이 에 비례해 줄어듭니다.
▶ 수식 탐색기에서 열기: 벅 인덕터 전류 리플(피크-피크의 절반), CCM
초기값을 가져온 예제 buck-basic
5. 검사 통과 확인
섹션 제목: “5. 검사 통과 확인”클론에서 python scripts/gen_equations.py, pytest, python scripts/mathlint.py를
실행합니다. 세 가지 모두 통과하고, git status를 보면 생성기가
packages/pe-core/equations/를 바꾸지 않았습니다.
6. 테스트 값 망가뜨리기
섹션 제목: “6. 테스트 값 망가뜨리기”packages/pe-core/equations/equations.yaml에서 buck.ccm.M의 tests 중 첫
번째 기댓값을 바꿉니다. python scripts/gen_equations.py를 실행하면 생성기가
거부하고, 메시지에 항목, 테스트, 식이 실제로 주는 값이 나옵니다.
git checkout -- packages/pe-core/equations/로 되돌립니다.
7. 식을 일관되게 망가뜨리기
섹션 제목: “7. 식을 일관되게 망가뜨리기”이번에는 buck.ccm.M의 식과 두 기댓값을 서로 맞도록 함께 바꿉니다(예를 들어
셋 다 절반으로). 생성기는 이것을 받아들이지만, pytest는
test_derivation_reproduces_yaml[buck.ccm.M]에서 실패합니다. sympy 유도는
여전히 1단계에서 구한 변환비를 주기 때문입니다. 앞에서처럼 되돌리면, 같은
checkout이 생성기가 다시 쓴 파일도 함께 되돌립니다.
완료 기준
섹션 제목: “완료 기준”예제의 값 보기
12 V (출처
buck-basic: 벅 예제)예제의 값 보기
300 mA (출처
buck-basic: 벅 예제)
체크 표시는 이 브라우저에만 저장됩니다. 계정이 필요 없고 아무것도 전송되지 않습니다.
주의할 점
섹션 제목: “주의할 점”- 여기서 은 피크-피크 리플의 절반입니다. 전류의 피크-피크 변화폭은 확인 칸이 기대하는 값의 두 배입니다.
- 이 변환비는 CCM에서만 성립합니다. 주기가 끝나기 전에 인덕터 전류가 0에 닿으면 출력은 보다 올라갑니다(CCM과 DCM, 그리고 미션 M2).
pytest는pe_core가 설치된 Python으로 실행합니다. 다른 인터프리터로 실행하면 검사가 시작되기도 전에 import에서 실패합니다.- 생성기가 받아들인 실험은 생성기의 출력 파일도 다시 씁니다.
git checkout -- packages/pe-core/equations/는 YAML과 그 파일들을 함께 되돌립니다.
더 알아보기
섹션 제목: “더 알아보기”- 도서 챕터 Principles of Steady-State Converter Analysis (Ch. 2)
전압-초·전하 평형, 소리플 근사, 인덕터·커패시터 리플을 다루는 표준 유도. - 강좌 Introduction to Power Electronics
CU Boulder 전문 과정의 첫 강좌: 정상상태 해석, 손실과 효율.
정상상태에서 한 스위칭 주기 동안 평균한 인덕터 전압이 0인 이유는 무엇입니까?
정답과 해설
정답: B 한 주기 동안 인덕터 전류의 변화는 평균 전압에 주기를 곱하고 인덕턴스로 나눈 값입니다. 주기마다 반복되는 전류는 변화가 0이므로 평균 전압도 0입니다. 이것이 전압-초 평형입니다.
CCM 벅 컨버터가 48 V에서 듀티비 0.25로 동작합니다. 출력 전압은 얼마입니까?
정답과 해설
정답: C 변환비가 듀티비이므로 0.25 × 48 V = 12 V입니다.
벅의 인덕터 전류가 1.0 A와 1.6 A 사이를 오갑니다. 이 사이트의 규약으로 은 얼마입니까?
정답과 해설
정답: B 피크-피크 리플은 0.6 A이고, 은 Erickson과 같이 그 절반인 0.3 A입니다. 평균 전류는 1.3 A입니다.
CCM 벅의 인덕턴스를 두 배로 하고 나머지는 그대로 둡니다. 은 어떻게 됩니까?
정답과 해설
정답: A 온 구간 동안 전류의 기울기는 인덕터 전압을 인덕턴스로 나눈 값이므로, 같은 시간 동안 오르는 양이 절반이 됩니다.
equations.yaml에서 어떤 식의 테스트 하나의 기댓값만 바꾸고 식은 그대로 둡니다. 어떻게 됩니까?
정답과 해설
정답: C 카탈로그를 불러올 때 모든 테스트를 식으로 계산해 보므로, 생성기와 pytest는 첫 불일치에서 멈추고 그 위치를 알려 줍니다.
식과 기댓값을 서로 맞도록 함께 바꿉니다. 이것을 여전히 잡아내는 검사는 무엇입니까?
정답과 해설
정답: B 테스트 값은 식을 그 자신과 비교할 뿐입니다. python/pe_core/derive/의 유도는 YAML과 독립적이고, pytest가 둘을 비교합니다.
이 사이트의 예제, 프리셋, 연습 문제에 나오는 수치는 교육용으로 만든 어림수(합성 값)이며, 실제 설계의 데이터가 아닙니다.