[Battery Test] Processing OCV(2) - Compute Coulombic efficiency ($\eta$) & Capacity ($Q$)
2021. 1. 18. 20:43ㆍ[Battery is my Life]
readme
- df1 : discharge
- df2 : soak down to 0 soc (at $25^{\circ}C$)
- df3 : charge
- df4 : soak up to 100 soc (at $25^{\circ}C$)
code
# find the last element of discharge Ah (instantaneous)
def tot_Dischg_Ah(data) :
last_index = data.index.tolist()[-1]
return data.loc[last_index,'Discharge_Capacity(Ah)']
# find the last element of charge Ah (instantaneous)
def tot_Chg_Ah(data) :
last_index = data.index.tolist()[-1]
return data.loc[last_index,'Charge_Capacity(Ah)']
- if testing at $25^{\circ}C$
# summing up
totDisAh = tot_Dischg_Ah(df1) + tot_Dischg_Ah(df2) + tot_Dischg_Ah(df3) + tot_Dischg_Ah(df4)
totChgAh = tot_Chg_Ah(df1) + tot_Chg_Ah(df2) + tot_Chg_Ah(df3) + tot_Chg_Ah(df4)
# compute coulombic efficiency at 25 degrees celsius
eta25 = totDisAh/totChgAh
# effective charge capacity
df1['Charge_Capacity(Ah)'] = df1['Charge_Capacity(Ah)'] * eta25
df2['Charge_Capacity(Ah)'] = df2['Charge_Capacity(Ah)'] * eta25
df3['Charge_Capacity(Ah)'] = df3['Charge_Capacity(Ah)'] * eta25
df4['Charge_Capacity(Ah)'] = df4['Charge_Capacity(Ah)'] * eta25
# compute total capacity at 25 degrees celsius
Q25 = tot_Dischg_Ah(df1) + tot_Dischg_Ah(df2) - tot_Chg_Ah(df1) - tot_Chg_Ah(df2)
- if testing at other temperatures
if value != 'P25' :
# S2 & S4 is tested at 25 degrees celsius
df2['Charge_Capacity(Ah)'] = df2['Charge_Capacity(Ah)'] * eta25
df4['Charge_Capacity(Ah)'] = df4['Charge_Capacity(Ah)'] * eta25
# compute coulombic efficiency at not 25 degrees celsius
eta = ((tot_Dischg_Ah(df1) + tot_Dischg_Ah(df2) + tot_Dischg_Ah(df3) +
tot_Dischg_Ah(df4)) - (tot_Chg_Ah(df2)+tot_Chg_Ah(df4))) /
(tot_Chg_Ah(df1) + tot_Chg_Ah(df3))
# S1, S3 Charge_Capacity에 eta 적용
df1['Charge_Capacity(Ah)'] = df1['Charge_Capacity(Ah)'] * eta25
df3['Charge_Capacity(Ah)'] = df3['Charge_Capacity(Ah)'] * eta25
# Compute total capacity at not 25 degrees celsius
Q = tot_Dischg_Ah(df1) + tot_Dischg_Ah(df2) - tot_Chg_Ah(df1) -
tot_Chg_Ah(df2)
[Explanation]
Compute Coulombic Efficiency $\eta$ at other temperatures (not 25$^{\circ}$C)
- 한 cycle 동안의 전류의 합은 0 이다 (total charging current + total discharging current = 0)
- 아래와 같은 equation이 성립된다
$
0 = \sum_{discharge}i[j] + \sum_{charge \ at \ T}\eta[k]{\cdot}i[j] + \sum_{charge \ at \ 25^{\circ}C}\eta[k]{\cdot}i[j]
$
즉, 말로 써보자면 :
$
{\eta}(T) = \frac{total \ absolute \ Ah \ discharged}{total \ absolute \ Ah \ charged \ at \ T} - {\eta(25^{\circ}C) \frac{total \ absolute \ Ah \ charged \ at \ 25^{\circ}C}{total \ absolute \ Ah \ charged \ at \ T}}
$
[Conclusion]
- at 25$^\circ$C testing
- coulombic efficiency에 맞게 표현하기 위해 모든 $Charge \ Capacity $ 에 $\eta_{25^{\circ}C}$를 곱함
- at other temperatures
- coulombic efficiency에 맞게 표현하기 위해 $s_2$ 와 $s_4$ $Charge \ Capacity $ 에 $\eta_{25^{\circ}C}$를 곱함
- $s_1$ 와 $s_3$ 는 해당 온도에 맞는 $\eta_T$를 $Charge \ Capacity$ 에 곱해준다
- $s_1$ 과 $s_2$ 마지막 단계에서 $Discharge \ Capacity$에 영향을 미쳤을 수도 있는 (매우 적거나 아예 없거나) $ Charge \ Capacity$ 값을 빼줌
728x90
'[Battery is my Life]' 카테고리의 다른 글
[Battery Test] Processing OCV(5) - Modeling Temperature Dependence (0) | 2021.01.23 |
---|---|
[Battery Test] Processing OCV(4) - Compensate for Steady State Resistance (0) | 2021.01.23 |
[Battery Test] Processing OCV(3) - Compute $R_0$ estimates (0) | 2021.01.18 |
[Battery Test] Processing OCV(1) - Data 불러오기 (0) | 2021.01.18 |
[Battery Test] Block-Diagram (0) | 2021.01.18 |