[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