ML 연구자를 위한 배터리 기초
배터리 데이터는 겉보기에 평범한 시계열이다. 시각, 전류, 전압, 온도 네 열이면 대부분이 끝난다. 그런데 이 네 열로 만든 "용량", "SOH", "사이클 수" 같은 지표는 정의와 측정 조건에 따라 같은 셀에서도 값이 달라진다. 2C로 잰 용량과 0.2C로 잰 용량은 다르고, 공칭 용량으로 나눈 SOH와 첫 측정 용량으로 나눈 SOH는 다르며, 전류 부호 규약을 반대로 읽으면 방전 용량 자리에 충전 용량이 들어간다. ML 모델은 이런 차이를 알아서 바로잡지 않는다. 오히려 그 차이를 패턴으로 학습한다.
이 장은 30부의 나머지 장(모델, 데이터, 상태·수명 예측, 파라미터 추정, 충전 최적화)이 공통으로 쓰는 말과 단위를 정한다. 전기화학을 깊이 다루지 않는다. 대신 ML 연구자가 배터리 데이터를 받았을 때 무엇을 확인해야 숫자를 믿을 수 있는지를 계산으로 보인다. 이 장의 수치는 모두 설명을 위해 만든 가상의 예시 셀의 값이다.
학습 목표
- 셀의 구성과 상태 지표(용량·C-rate·SOC·SOH·EFC·내부저항)를 정의하고 계산한다
- 시험 프로토콜과 측정 신호를 단위·부호 규약과 함께 해석한다
- 주요 열화 기작과 용량 곡선의 knee를 구별하고 EOL을 해석한다
셀의 구조와 화학
왜 필요한가. 데이터셋을 고를 때 가장 먼저 보는 메타데이터가 화학(chemistry)이다. 화학이 다르면 전압 범위, OCV 곡선의 모양, 주된 열화 기작이 다르다. 한 화학에서 학습한 모델을 다른 화학에 적용하는 것은 분포 이동(21.4장)의 대표적인 예다.
정의. 리튬이온 셀(cell)은 네 부분으로 이루어진다.
- 음극(negative electrode, 방전 시 anode): 대부분 흑연(graphite). 충전하면 리튬이온이 흑연 층 사이에 들어간다(intercalation).
- 양극(positive electrode, 방전 시 cathode): 리튬 전이금속 산화물이나 인산염. 셀의 전압 범위와 에너지 밀도를 크게 좌우한다.
- 전해질(electrolyte): 리튬염을 녹인 유기 용매. 이온은 통과시키고 전자는 통과시키지 않는다.
- 분리막(separator): 두 전극이 닿지 않게 막는 다공성 막. 전해질이 스며 있어 이온은 지나간다.
방전할 때 리튬이온은 전해질을 통해 음극에서 양극으로, 전자는 외부 회로를 통해 같은 방향으로 이동한다. 충전은 그 반대다. 여러 셀을 직렬·병렬로 묶은 것이 모듈(module)과 팩(pack)이고, 팩의 상태는 셀 사이의 편차 때문에 셀 하나의 상태와 다를 수 있다.
주요 양극재. 화학 이름은 양극재로 부르는 것이 관행이다. 아래 값은 대략적인 범위이고, 제품마다 다르므로 실제 값은 각 셀의 데이터시트로 확인한다.
| 양극재 | 공칭 전압(대략) | OCV 곡선 | ML 관점에서 주의할 점 |
|---|---|---|---|
| LFP (LiFePO₄) | 약 3.2–3.3 V | 넓은 평탄 구간 | 전압으로 SOC를 읽기 어렵다 |
| NMC (Li(Ni,Mn,Co)O₂) | 약 3.6–3.7 V | 완만한 기울기 | 조성 비율(예: 니켈 함량)에 따라 거동이 다르다 |
| NCA (Li(Ni,Co,Al)O₂) | 약 3.6 V | 완만한 기울기 | NMC와 비슷하지만 별개의 화학으로 취급한다 |
같은 "NMC"라도 니켈·망간·코발트의 비율과 제조사에 따라 열화 거동이 다르다. 데이터셋을 합칠 때 화학 이름 하나로 묶지 말고 셀 모델명까지 기록한다(30.3장).
상태 지표
왜 필요한가. 배터리 ML의 예측 대상(SOC 추정, SOH 추정, 수명 예측)은 모두 아래 지표로 정의된다. 정의가 흔들리면 정답 label이 흔들린다.
용량과 C-rate. 용량(capacity) 는 셀이 정해진 조건에서 내보낼 수 있는 전하량으로, 단위는 Ah(암페어시)다. (쿨롱)이다. 제조사가 정한 기준값을 공칭 용량(nominal capacity) 이라 한다. 전류의 크기는 흔히 C-rate로 나타낸다.
C는 "공칭 용량을 시간에 내보내는 전류"다. 셀이 늙어 실제 용량이 줄어도 C-rate는 보통 공칭 용량 기준으로 계산하므로, 같은 "1C"가 열화된 셀에게는 더 가혹한 조건이 된다.
에너지. 에너지는 전하량이 아니라 전력의 적분이다.
는 단자 전압(terminal voltage), 은 공칭 전압이다. 단자 전압은 전류가 흐르면 내부저항 때문에 개방 전압(OCV, open-circuit voltage)에서 벗어난다. 방전 중에는 이다. 그래서 방전 전류가 클수록 (1) 평균 전압이 낮고 (2) 정해진 하한 전압(컷오프, cut-off)에 일찍 닿는다. 용량도 에너지도 측정 조건의 함수다.
가상의 예시 셀(공칭 3.0 Ah, 3.6 V, 직류 저항 35 mΩ, 컷오프 3.4 V)을 네 C-rate로 정전류 방전한다. RC 응답과 온도는 무시하고 OCV에서 만 뺀 단순한 모델이다(30.2장에서 확장한다).
import numpy as np
Q_NOM_AH, V_NOM_V, R_DC_OHM, V_CUT_V = 3.0, 3.6, 0.035, 3.4 # 가상의 예시 셀
def ocv_v(soc): # 가상의 예시 셀의 OCV-SOC 곡선 [V]
return 3.5 + 0.55 * soc + 0.04 * np.log((soc + 0.02) / (1.02 - soc))
def discharge(c_rate, dt_s=1.0):
i_a = c_rate * Q_NOM_AH # 1C = 공칭 용량을 1시간에 내보내는 전류
t_s = np.arange(0, 3600 / c_rate, dt_s) # (T,)
soc = 1.0 - i_a * t_s / 3600 / Q_NOM_AH # (T,) 정전류 방전
v_v = ocv_v(soc) - i_a * R_DC_OHM # (T,) 단자 전압 = OCV - IR 강하
n = np.argmax(v_v < V_CUT_V) if np.any(v_v < V_CUT_V) else len(t_s)
q_ah = i_a * n * dt_s / 3600 # 컷오프까지 내보낸 전하량
e_wh = np.sum(v_v[:n] * i_a) * dt_s / 3600 # 컷오프까지 내보낸 에너지
return i_a, n * dt_s / 3600, q_ah, e_wh
print(f"공칭 에너지 = {Q_NOM_AH} Ah x {V_NOM_V} V = {Q_NOM_AH * V_NOM_V:.1f} Wh")
for c in [0.2, 1.0, 2.0, 3.0]:
i_a, t_h, q_ah, e_wh = discharge(c)
print(f"{c:3.1f}C: I = {i_a:3.1f} A, 시간 {t_h:4.2f} h, 용량 {q_ah:4.2f} Ah, "
f"에너지 {e_wh:5.2f} Wh, 평균 전압 {e_wh / q_ah:4.2f} V")공칭 에너지 = 3.0 Ah x 3.6 V = 10.8 Wh 0.2C: I = 0.6 A, 시간 4.76 h, 용량 2.85 Ah, 에너지 10.77 Wh, 평균 전압 3.77 V 1.0C: I = 3.0 A, 시간 0.86 h, 용량 2.59 Ah, 에너지 9.66 Wh, 평균 전압 3.72 V 2.0C: I = 6.0 A, 시간 0.37 h, 용량 2.19 Ah, 에너지 8.04 Wh, 평균 전압 3.67 V 3.0C: I = 9.0 A, 시간 0.20 h, 용량 1.76 Ah, 에너지 6.35 Wh, 평균 전압 3.62 V
0.2C에서 2.85 Ah를 내던 셀이 3C에서는 1.76 Ah만 낸다. 셀이 늙은 것이 아니라, 더 큰 강하 때문에 컷오프에 일찍 닿았을 뿐이다. 0.2C에서도 공칭 3.0 Ah에 못 미치는 것은 이 예시 셀의 OCV가 SOC 0 근처에서 컷오프(3.4 V) 아래로 내려가기 때문이다. 그래서 용량을 보고하거나 비교할 때는 C-rate, 컷오프 전압, 온도를 함께 적는다.
SOC. 충전 상태(SOC, state of charge)는 현재 남은 전하량을 현재의 최대 용량으로 나눈 비율이다.
는 쿨롱 효율(coulombic efficiency)이다. 방전()에서는 1로 두고, 충전()에서는 충전한 전하 중 실제로 저장되는 비율(방전 전하량 / 충전 전하량, 1보다 약간 작다)을 쓴다. 이 적분을 그대로 계산하는 방법이 쿨롱 카운팅이고, 그 한계와 칼만 필터를 이용한 보정은 30.4장에서 다룬다. SOC는 직접 측정할 수 없는 잠재 상태라는 점이 중요하다. 전압은 SOC의 함수(OCV)에 과전압이 더해진 값일 뿐이다.
SOH와 EOL. 건강 상태(SOH, state of health)는 열화의 정도를 하나의 숫자로 요약한 것이다. 가장 흔한 정의는 용량 기준이다.
문제는 이 데이터셋마다 다르다는 점이다. 공칭 용량을 쓰기도 하고, 그 셀의 첫 측정 용량을 쓰기도 한다. 내부저항 증가율로 SOH를 정의하는 경우(전력 기준 SOH)도 있다. 수명 끝(EOL, end of life)은 보통 "SOH가 정해진 값(흔히 80%) 아래로 처음 떨어지는 사이클"로 정의하므로, SOH의 정의가 다르면 같은 셀의 수명도 달라진다.
EFC. 셀마다 충방전 깊이가 다르면 사이클 수로는 사용량을 비교할 수 없다. 등가 완전 사이클(EFC, equivalent full cycles)은 누적 방전 전하량을 공칭 용량으로 나눈 값이다.
같은 RPT 용량 기록에서 두 SOH 정의와, 부분 사이클의 EFC를 계산한다.
cycle = np.array([0, 200, 400, 600, 800]) # RPT를 한 사이클 번호
cap_ah = np.array([3.08, 3.02, 2.93, 2.80, 2.58]) # RPT 용량 [Ah] (가상의 예시)
soh_nom = cap_ah / Q_NOM_AH # 공칭 용량 기준
soh_ini = cap_ah / cap_ah[0] # 첫 측정 용량 기준
for n, a, b in zip(cycle, soh_nom, soh_ini):
print(f"cycle {n:3d}: SOH(공칭 기준) {a:6.1%} SOH(초기 기준) {b:6.1%}")
dsoc = 0.80 - 0.30 # SOC 30% ↔ 80% 부분 사이클
throughput_ah = 800 * dsoc * Q_NOM_AH # 방전 방향 누적 전하량
print(f"부분 사이클 800회의 EFC = {throughput_ah:.0f} Ah / {Q_NOM_AH} Ah = {throughput_ah / Q_NOM_AH:.0f}")cycle 0: SOH(공칭 기준) 102.7% SOH(초기 기준) 100.0% cycle 200: SOH(공칭 기준) 100.7% SOH(초기 기준) 98.1% cycle 400: SOH(공칭 기준) 97.7% SOH(초기 기준) 95.1% cycle 600: SOH(공칭 기준) 93.3% SOH(초기 기준) 90.9% cycle 800: SOH(공칭 기준) 86.0% SOH(초기 기준) 83.8% 부분 사이클 800회의 EFC = 1200 Ah / 3.0 Ah = 400
첫 측정 용량(3.08 Ah)이 공칭 용량보다 크므로, 공칭 기준 SOH는 처음에 100%를 넘고 이후에도 항상 2%p 남짓 높다. 두 정의를 섞은 데이터로 "SOH 80% 도달 사이클"을 학습하면 정의 차이가 그대로 label 잡음이 된다. 그리고 SOC 30–80% 구간의 부분 사이클 800회는 400 EFC에 불과하다. 사이클 수가 같아도 사용량은 두 배 차이가 날 수 있다.
내부저항. 전류를 갑자기 바꾸면 단자 전압이 즉시 만큼 뛰고, 그 뒤 수십 초에서 수 분에 걸쳐 천천히 더 변한다. 즉시 변하는 몫을 옴 저항(ohmic resistance) , 천천히 변하는 몫을 분극(polarization)이라 한다. 둘 다 열화와 함께 커지고 온도가 낮을수록 커진다. 그래서 "내부저항"이라는 값은 어떤 시간 창에서 쟀는지(예: 펄스 시작 후 0.1 s인지 10 s인지)를 함께 적어야 의미가 있다. 아래 위젯에서 저항과 커패시턴스를 바꾸며 즉시 강하와 느린 응답을 구별해 본다. 이 회로 모델 자체는 30.2장에서 다룬다.
시험 프로토콜
왜 필요한가. 같은 셀에서 나온 데이터라도 어떤 시험에서 나왔는지에 따라 신호의 의미가 다르다. 사이클링 도중의 방전 용량과 정기 성능 시험의 용량은 같은 이름의 다른 양이다.
사이클링. 열화 시험의 본체다. 전형적인 충전은 CC-CV(정전류 후 정전압)다. 상한 전압까지 일정 전류로 충전하고, 상한 전압에 닿으면 전압을 유지한 채 전류가 정해진 값까지 줄어들 때까지 기다린다. 방전은 정전류이거나, 실제 사용을 흉내 낸 동적 프로파일(주행 사이클 등)이다. 충전 프로토콜 자체가 열화를 바꾸므로 프로토콜은 실험 조건 변수다(30.6장).
RPT. 정기 성능 시험(RPT, reference performance test)은 사이클링을 잠시 멈추고 정해진 표준 조건(낮은 C-rate, 일정 온도)에서 용량과 저항을 재는 시험이다. 사이클링 중의 용량은 사이클링 조건(높은 C-rate, 셀 온도 상승)의 영향을 받으므로, 셀 사이 또는 시점 사이를 비교할 때는 RPT 값이 기준이 된다.
HPPC. 하이브리드 펄스 출력 특성 시험(HPPC, hybrid pulse power characterization)은 여러 SOC에서 짧은 방전·충전 펄스를 걸어 전압 응답을 잰다. 펄스 전후의 전압 변화에서 SOC별 저항과 출력 능력을 계산한다. 등가회로 모델의 파라미터를 추정하는 기본 데이터다(30.2장, 30.5장).
GITT. 정전류 간헐 적정법(GITT, galvanostatic intermittent titration technique)은 짧은 정전류 펄스와 긴 휴지를 반복한다. 휴지 끝의 전압은 OCV에 가깝고, 펄스 동안의 전압 변화에서 고체 내 확산 계수를 추정할 수 있다. 시간이 오래 걸린다.
EIS. 전기화학 임피던스 분광법(EIS, electrochemical impedance spectroscopy)은 작은 교류 신호를 여러 주파수로 걸어 복소 임피던스를 잰다. 시간 영역에서 섞여 보이는 과정(옴 저항, 전하 전달, 확산)이 주파수 영역에서는 서로 다른 대역에 나타난다.
용량 시험. 정해진 낮은 C-rate(예: C/20)로 완전 충방전해 용량을 잰다. 이때의 전압 곡선은 OCV 곡선의 근사로도 쓰인다. 충전 곡선과 방전 곡선의 평균을 쓰기도 한다(히스테리시스가 있기 때문이다).
| 시험 | 측정 대상 | 시간 규모 | ML에서의 쓰임 |
|---|---|---|---|
| 사이클링 | 사이클별 용량·에너지·전압 곡선 | 수 주–수 개월 | 수명 예측의 입력과 label |
| RPT·용량 시험 | 표준 조건의 용량, OCV 근사 | 수 시간 | SOH label의 기준 |
| HPPC | SOC별 저항·출력 | 수 시간 | ECM 파라미터, 저항 기준 SOH |
| GITT | OCV, 확산 계수 | 수십 시간 | 물리 모델 파라미터 |
| EIS | 주파수별 임피던스 | 수십 분 | 열화 진단의 특징 |
열화 메커니즘
왜 필요한가. 수명 예측 모델이 어떤 정보를 쓸 수 있고 어디서 실패할지는 열화가 어떻게 진행되는지에 달려 있다. 특히 열화 속도가 중간에 바뀌는 현상(knee)은 초기 데이터로 수명을 예측하는 일을 근본적으로 어렵게 만든다.
주요 기작. 셀 안의 열화 과정은 많지만, ML 연구자가 알아 둘 것은 다음 셋이다.
- SEI 성장. 흑연 음극 표면에는 전해질이 분해되어 생긴 고체-전해질 계면층(SEI, solid electrolyte interphase)이 있다. SEI는 첫 충전 때 만들어져 전해질의 추가 분해를 막지만, 사이클과 시간이 지나면서 조금씩 두꺼워진다. 두꺼워지는 데 리튬이 쓰이므로 사용 가능한 리튬이 줄어든다(리튬 재고 손실, LLI). 높은 온도와 높은 SOC에서 빨라지고, 사이클이 없어도 진행된다(달력 열화의 주원인).
- 리튬 석출(lithium plating). 충전 중 리튬이온이 흑연 안으로 들어가는 속도보다 빨리 도착하면, 흑연 표면에 금속 리튬으로 쌓인다. 저온, 높은 충전 전류, 높은 SOC에서 잘 일어난다. 석출된 리튬의 일부는 다시 쓰이지 못하고 SEI를 추가로 만든다. 고속 충전 연구의 핵심 제약이다.
- 활물질 손실(LAM, loss of active material). 입자 균열, 전극에서의 이탈, 양극재 구조 변화로 리튬을 담을 수 있는 자리 자체가 줄어든다.
knee. 용량 곡선은 흔히 처음에는 완만하게 줄다가, 어느 시점부터 감소율이 급격히 커진다. 이 꺾이는 지점을 knee라 한다. 가능한 경로는 여러 가지다. 예를 들어 리튬 재고가 줄어 전극의 작동 범위가 바뀌면서 어느 순간부터 리튬 석출이 시작되고, 석출이 다시 리튬 손실을 키우는 양의 되먹임이 생길 수 있다. knee의 원인과 경로는 Attia 외(2022)의 리뷰가 정리하고 있다.
수식으로 보는 knee. 완만한 선형 감소에 지수적으로 커지는 항을 더한 가상의 용량 곡선으로, 초기 구간의 직선 외삽이 얼마나 틀리는지 본다.
은 사이클 수, 는 초기 감소율, 와 는 가속이 시작되는 시점과 그 빠르기다.
n = np.arange(0, 1501) # 사이클
cap = 3.08 - 2.0e-4 * n - 0.02 * np.exp((n - 900) / 120) # 가상의 예시 셀 [Ah]
eol_cap = 0.8 * Q_NOM_AH # EOL: 공칭 용량의 80%
eol_true = n[np.argmax(cap < eol_cap)]
slope, icpt = np.polyfit(n[:400], cap[:400], 1) # 처음 400 사이클로 직선 맞춤
eol_lin = (eol_cap - icpt) / slope
print(f"EOL 기준 {eol_cap:.2f} Ah, 실제 EOL {eol_true} 사이클")
print(f"처음 400 사이클의 기울기 {slope * 1e3:.3f} mAh/사이클 → 선형 외삽 EOL {eol_lin:.0f} 사이클")
print(f"cycle 800·1000·1100 용량: {cap[800]:.3f}, {cap[1000]:.3f}, {cap[1100]:.3f} Ah")EOL 기준 2.40 Ah, 실제 EOL 1268 사이클 처음 400 사이클의 기울기 -0.201 mAh/사이클 → 선형 외삽 EOL 3389 사이클 cycle 800·1000·1100 용량: 2.911, 2.834, 2.754 Ah
처음 400 사이클의 기울기는 사이클당 0.2 mAh로, 직선으로 연장하면 3,389 사이클까지 버틸 것처럼 보인다. 실제 EOL은 1,268 사이클이다. 1,000 사이클까지는 감소율이 서서히 커지다가 그 뒤 빠르게 떨어진다. knee 이전 구간에는 knee가 언제 올지에 대한 정보가 거의 없다. 이것이 30.4장의 조기 수명 예측이 용량 곡선 대신 전압 곡선의 미세한 변화 같은 다른 신호를 찾는 이유다.
측정 데이터
왜 필요한가. 모든 지표는 결국 측정 신호에서 계산된다. 신호의 단위와 부호를 잘못 읽으면 이후의 모든 계산이 조용히 틀린다. 오류가 나지 않고 그럴듯한 숫자가 나온다는 점이 위험하다.
신호. 사이클러(cycler)는 보통 다음을 기록한다.
| 신호 | 단위(흔한 예) | 확인할 것 |
|---|---|---|
| 시각 | s, 또는 날짜·시각 문자열 | 기록 간격이 일정한가, 시험 중단으로 생긴 공백이 있는가 |
| 전류 | A 또는 mA | 부호 규약(방전 +인가 충전 +인가), 단위 |
| 단자 전압 | V 또는 mV | 측정 위치(셀 단자인가 지그인가) |
| 온도 | °C 또는 K | 셀 표면인가 챔버 공기인가 |
| 사이클·스텝 번호 | 정수 | 사이클의 시작이 충전인가 방전인가, 휴지 스텝이 포함되는가 |
| 누적 용량·에너지 | Ah, Wh | 스텝마다 0으로 초기화되는가, 충전·방전이 따로 누적되는가 |
부호 규약. 방전 전류를 양수로 기록하는 장비도, 충전 전류를 양수로 기록하는 장비도 있다. 이 책은 방전을 양수로 쓴다(위의 위젯과 같다). 문서를 읽고도 확인할 방법이 있다. 정전류 방전 중에는 SOC가 줄어 전압이 내려가고, 충전 중에는 올라간다. 따라서 "전류가 양수인 구간에서 전압이 내려가는가"를 보면 규약을 데이터에서 확인할 수 있다.
def record(discharge_sign): # 휴지 → 2C 방전 → 휴지 → 1C 충전, 1 s 간격
i_a = np.r_[np.zeros(60), np.full(600, 6.0), np.zeros(60), np.full(900, -3.0)] # (T,) 방전 +
soc = 0.9 - np.cumsum(i_a) / 3600 / Q_NOM_AH
v_v = ocv_v(soc) - i_a * R_DC_OHM
return discharge_sign * i_a, v_v # 데이터셋이 쓰는 부호로 저장
for name, sign in [("데이터셋 A (방전 +)", +1), ("데이터셋 B (방전 -)", -1)]:
i_a, v_v = record(sign)
dvdt = np.gradient(v_v) # (T,) [V/s]
pos = i_a > 0.1 # 양의 전류가 흐르는 구간
naive_ah = np.sum(i_a[pos]) / 3600 # "양의 전류 = 방전"이라 가정한 방전 용량
print(f"{name}: I>0 구간의 평균 dV/dt {np.mean(dvdt[pos]) * 1e3:+.3f} mV/s, "
f"I>0을 방전으로 본 용량 {naive_ah:.2f} Ah")데이터셋 A (방전 +): I>0 구간의 평균 dV/dt -0.424 mV/s, I>0을 방전으로 본 용량 1.00 Ah 데이터셋 B (방전 -): I>0 구간의 평균 dV/dt +0.263 mV/s, I>0을 방전으로 본 용량 0.75 Ah
두 데이터셋은 같은 시험을 반대 부호로 기록했다. 데이터셋 B를 "양수 = 방전"으로 읽으면 방전 용량 자리에 충전 용량(0.75 Ah)이 들어가고, 오류는 나지 않는다. 양의 전류 구간에서 가 양수라는 점이 규약이 반대라는 신호다.
단위와 샘플링. 전류가 mA로, 용량이 mAh로 기록된 데이터와 A·Ah 데이터를 합치면 1000배 차이가 난다. 정규화를 하면 이런 차이가 눈에 덜 띄므로 정규화 전에 셀별 요약 통계(용량의 중앙값 등)를 확인한다. 기록 간격도 장비와 스텝마다 다르다. 많은 사이클러는 일정 시간 간격과 함께 "전압이 일정량 이상 변했을 때"에도 기록하므로, 전압이 빠르게 변하는 구간에서 샘플이 촘촘하다. 적분할 때는 균일 간격을 가정하지 말고 실제 시각 차이를 쓴다(아래 연습문제).
실습
측정 기록에서 지표를 계산하는 함수를 직접 만든다. 영차 유지(측정값이 다음 측정까지 유지된다고 보는 것)로 전류와 전력을 적분해 방전·충전 전하량, 방전 에너지, EFC를 구하고, 부호 규약과 불균일한 기록 간격을 처리한다. 테스트가 바로 채점한다.
이어서 공개 사이클링 데이터 하나를 내려받아(어떤 데이터가 있는지는 30.3장) 다음을 해 본다. 데이터를 저장소에 넣지 않는다.
- 문서에서 화학, 공칭 용량, 컷오프 전압, 온도, 충방전 프로토콜, 전류 부호 규약을 찾아 적는다.
- 한 셀에 대해 부호 규약을 데이터로 확인한다(정전류 구간의 ).
- 사이클별 방전 용량과(있으면) 저항을 그리고, RPT 값이 따로 있으면 사이클링 중 용량과 겹쳐 그린다.
- SOH 정의를 하나 정해 EOL(80%) 사이클을 구하고, knee가 보이는지 판단한다.
실패 사례
- 전류 부호 규약을 확인하지 않는 것. 문서와 실제 데이터가 다를 수 있다. 부호를 반대로 읽으면 방전 용량에 충전 용량이 들어가고, 쿨롱 카운팅의 SOC가 반대로 움직이며, 오류 메시지는 하나도 나오지 않는다.
- SOH 정의를 데이터셋마다 다르게 쓰는 것. 공칭 용량 기준과 첫 측정 용량 기준을 섞으면 같은 열화가 수 %p 다른 SOH로 기록되고, EOL label도 달라진다. 통합 데이터셋에는 SOH의 분자(어느 시험의 용량인가)와 분모(무엇을 기준으로 했는가)를 열로 남긴다.
- 조건이 다른 용량을 비교하는 것. 2C 사이클링 중 용량과 C/20 RPT 용량, 25 °C와 10 °C의 용량은 다른 양이다. 용량 차이를 열화로 해석하기 전에 측정 조건이 같은지 확인한다.
- 사이클 수로 사용량을 비교하는 것. 방전 깊이가 다른 셀끼리는 EFC나 누적 전하량으로 비교한다.
통과 기준
- 주어진 셀의 C-rate별 전류, 방전 시간, 공칭 에너지를 계산하고, 측정 용량이 C-rate·컷오프·온도에 따라 달라지는 이유를 설명한다.
- 원시 측정 기록에서 부호 규약을 데이터로 확인하고, 방전·충전 전하량과 에너지, EFC를 계산한다(연습문제
charge-throughput통과). - 용량 곡선에서 SOH 정의를 명시해 EOL을 구하고, knee가 있을 때 초기 구간의 외삽이 왜 실패하는지 설명한다.
참고 문헌
- Attia, P. M. 외 (2022). Review—"Knees" in Lithium-Ion Battery Aging Trajectories. Journal of The Electrochemical Society, 169(6), 060517. — knee의 정의, 원인 경로, 예측의 어려움을 정리한 리뷰