top of page

Research Blog

Search

In our previous blogs, we explored the concept of State of Health (SoH) and the underlying aging mechanisms that affect electric motorbike batteries. We also touched upon the importance of everyday practices like charging habits in influencing battery health. But how can we objectively assess battery health and predict its remaining useful life? This blog dives into the technical world of health indicators for data-driven battery diagnostics.


Health Indicators: Unveiling the Battery's Voice:


Batteries don't speak, but they do communicate their health status through a multitude of measurable parameters. These parameters, known as health indicators, provide valuable insights into the battery's internal state and potential degradation. Here are some of the key health indicators for Li-ion batteries in electric motorbikes:


Voltage based features


The voltage of a battery cell or pack is one of the most straightforward and vital indicators of its health. Voltage measurements can provide insights into the state of charge (SoC), and abnormal voltage levels can indicate potential issues such as cell imbalance or degradation. Let’s revisit the cycle aging test of NMC/Graphite battery cell that we saw in previous blog (Click here to read).

import pandas as pd
import matplotlib.pyplot as plt

# Import the data file with information of time, voltage, cycles, SOH
df = pd.read_csv('battery data.csv')

#Visualising the trend of SOH with cycles
plt.plot(data['Cycles'], data['SOH'], linewidth = 3, color = 'r')
plt.xlabel("Cycles")
plt.ylabel("SOH(%)")
plt.title("Sample Battery degradation over charge/discharge cycles")
plt.grid(True)
plt.show()

Visualizing Voltage Trends During Aging


To start, we can visualize the trend of voltage over time during charging and discharging for different cycles. For simplicity, let’s observe the charging data first. The straightforward observation that we can make is that the overall charging time decreases because of decrease in capacity, and in the constant current (CC) phase, the rate of change of voltage (dv/dt) increases with aging.

selected_cycles = [2, 50, 150, 200, 500, 1000]

# Filter data to include only selected cycles
filtered_data = df[df['Cycle number'].isin(selected_cycles)]
# Group by Cycles
grouped = filtered_data.groupby('Cycle number')
# Plot Voltage Profiles for aging cycles
for name, group in grouped:
  group = group.reset_index(drop=True)
   plt.plot(group.index, group['Voltage(V)'], label=f'Cycle {name}')
plt.xlabel('Time (minutes)')
plt.ylabel('Voltage')
plt.title('Voltage vs Time for across Cycles')
plt.legend()
plt.grid(True)
plt.show()

Output:

Investigating Voltage Stochasticity


A closer look at this data motivates us to investigate the stochasticity of the data. To do that, we can divide the data into different voltage windows, for instance, 3.0V – 3.2V, 3.2V – 3.4V, 3.4V – 3.6V, etc. and then study the behavior across different aging cycles. Analyzing smaller chunks of data provides a more granular view of voltage behavior. Moreover, real-world usage patterns may involve incomplete charging or discharging cycles. Analyzing smaller windows helps account for this as well.

One useful health indicator we can look at is the standard deviation of voltage within these windows. As the data points within these windows will decrease because the charging time is reduced, the standard deviation with aging will change.


Lets see an example code to visualize the trend of the discussed health indicators with aging cycles now.

import numpy as np

# Select smaller chunk of the data between any voltage range
filtered_df1 = df[(df['Voltage(V)'] >= 3.3) & (df['Voltage(V)'] <= 3.8)]

grouped_df = filtered_df1.groupby('Cycle number')

#Calculate Charging time
time = grouped_df['Test time'].agg([lambda x: pd.to_datetime(x.iloc[-1]) - pd.to_datetime(x.iloc[0])])
Charging_time = time['<lambda>'].dt.total_seconds()

#Standard Deviation in Voltage
std_dev_voltage = grouped_df['Voltage(V)'].std()

#Calculate dv/dt
voltage_slope = grouped_df.apply(lambda x: np.polyfit(x.index, x['Voltage(V)'], 1)[0])

# Prepare dataframe for health indicators
features_df = pd.DataFrame({
      'Cycle ID': std_dev_voltage.index,
      'Charging Time (s)': Charging_time,
      'Voltage Slope': voltage_slope,
      'Voltage Std Deviation': std_dev_voltage
})
features_df = features_df.reset_index(drop = True)

Sample code to plot the health indicators

plt.plot(features_df['Cycle ID'], features_df['Charging Time (s)']. linewidth = 3)
plt.xlabel("Cycles")
plt.ylabel("Charging time (s)")
plt.title("Charging time with cycles")
plt.grid(True)
plt.show()

The Road Ahead

By understanding the different health indicators and their significance, we can develop strategies to monitor and maintain battery health more effectively. This translates to a more enjoyable riding experience for electric motorbike owners, with longer range, better performance, and ultimately, a greener future for transportation.


Stay tuned for our next blog post, where we will explore more health indicators and delve into the use of machine learning for SoH estimation. In the meantime, share your thoughts on battery health indicators in the comments below.


References



 
 

In the previous blog, "From Data to Insights: Understanding EV Battery State of Health" we explored the critical role of State of Health (SoH) in maximizing the performance, safety, and lifespan of your electric motorbike battery. We also discussed the challenges associated with accurately estimating SoH.

But the story doesn't end there! To effectively manage battery health, we need to understand the culprits behind degradation – the aging mechanisms themselves. This blog dives deeper into the two main types of Li-ion cell degradation – calendar aging and cycle aging – and the stress factors that accelerate them. We'll also explore various aging modeling techniques.


Types of Li-ion Cell Degradation


Calendar Aging: This insidious degradation occurs even when the battery isn't in use. It's a slow and steady decline caused by the inherent thermodynamic instability of the battery materials.  Think of it like a cake slowly going stale over time, even if it's left untouched on the counter. The primary stress factors governing calendar aging are:

  • Temperature: Extreme temperatures, both hot and cold, can significantly accelerate calendar aging. Just like extreme heat can spoil food faster, high temperatures can degrade battery materials more rapidly.

  • State of Charge (SoC): Leaving a battery at a high or low SoC for extended periods can worsen calendar aging. Imagine storing your cake in a hot oven or a damp fridge - both extremes would accelerate spoilage. Similarly, keeping your EV battery at a full or very low charge for long periods can be detrimental.


Cycle Aging: This degradation is a more direct consequence of the battery's charge and discharge cycles. With each cycle, the battery undergoes physical and chemical changes that can reduce its capacity and performance. The key stress factors influencing cycle aging include:

  • Temperature: Similar to calendar aging, high temperatures during charging and discharging cycles can exacerbate degradation.

  • C-rate: This refers to the charging or discharging rate relative to the battery's capacity. Faster charging/discharging (higher C-rate) can put additional stress on the battery and accelerate cycle aging.

  • Depth of Discharge (DoD): The deeper you discharge a battery (higher DoD), the more stress it experiences, leading to faster cycle aging. Imagine using most of the cake batter each time you bake, compared to using only a small portion. The more you use the batter, the less remains for future baking.


Aging Modeling Techniques:


Understanding and predicting battery aging is crucial for optimizing EV performance and ensuring safety. Researchers employ various modeling techniques to simulate and forecast battery degradation under different operating conditions. Here are a few common approaches:


Electrochemical Models: These models delve into the complex electrochemical reactions occurring within the battery during charging and discharging cycles. They can be highly detailed but computationally expensive.


Empirical Models: These data-driven models are based on real-world battery data and can be more practical for implementation in BMS. They may not capture the underlying mechanisms as precisely as electrochemical models, but they can be computationally efficient and provide valuable insights.


Equivalent Circuit Models: They model the transient response of the battery using passive circuit components such as resistances, capacitances, and inductances. More complex models can also be used to simulate the internal diffusion and charge transfer processes. And based on impedance data, ageing can be incorporated using variable components.


Machine Learning Models: As the field of artificial intelligence advances, machine learning algorithms are increasingly used for battery aging prediction. These models can learn from vast datasets and identify complex relationships between various factors influencing degradation.

Modelling Approach

Amount of Data

Complexity

Accuracy

Electrochemical

Low

High

High

Empirical

High

Low

Low-Medium

Equivalent Circuit

High

Medium

Medium

Machine Learning

High

Medium-High

Medium

The Road Ahead


By understanding the different types of aging, their stress factors, and employing sophisticated modeling techniques, we can develop strategies to mitigate degradation and extend battery lifespan. This translates to a more enjoyable riding experience for electric motorbike owners, with longer range, better performance, and ultimately, a greener future for transportation.

 

Stay tuned for our next blog post where we explore some health signatures to maximize the lifespan of your electric motorbike battery!  In the meantime, share your thoughts on battery aging in the comments below.


References:

 
 

As a data scientist at an electric motorbike company, I'm passionate about the role EVs play in combating climate change. By reducing reliance on fossil fuels, electric vehicles offer a powerful solution for curbing greenhouse gas emissions. But for EVs to reach their full potential, we need to understand and manage battery health effectively.

This blog post dives into the concept of State of Health (SoH) and why it's crucial for EV batteries.


What is SoH?

SoH reflects the overall condition of a battery compared to its brand new state. It essentially tells you how much capacity the battery retains and how well it performs compared to when it was fresh off the production line.


Why is SoH Important?


Range and Performance: Lower SoH means reduced battery capacity, impacting your electric motorbike's driving range and overall performance. Imagine planning a scenic weekend ride, only to find your battery can't take you as far as expected due to decreased SoH.


Safety: Degraded batteries can become unstable, posing potential safety risks. Just like with any critical component on your motorbike, ensuring battery health is paramount for safe riding.


Cost Management: Replacing an EV battery is expensive. SoH monitoring helps predict when a replacement might be needed, allowing for better financial planning. Nobody wants surprise repair bills!


Challenges in SoH estimation


While SoH is critical, accurately estimating it can be tricky. Here's why:


Missing Holistic Definition: Currently, there's no single, universally accepted definition of SoH for EV batteries. Most methods rely on battery capacity, which is ideal but impractical to measure in real-world conditions.

Lab to Life Gap: Existing SoH estimation algorithms are often based on lab data collected at the cell level. However, real-world factors like temperature variations significantly impact battery health, making lab-to-life application challenging. Imagine testing a battery in a perfectly controlled lab environment, only to find it performs differently on a hot summer day due to temperature variations.

Cell-to-Pack Discrepancies: Batteries consist of multiple cells. During operation, these cells can experience different temperatures and aging rates. This variability makes it difficult to predict overall battery health based solely on cell-level data. Think of your battery pack as a team of riders. If some riders are facing tougher conditions (higher temperatures), they'll tire faster, impacting the overall performance of the entire team.


Visualizing Battery Degradation with Python


While there's no single perfect solution for SoH estimation, data science can help us understand battery health trends. Let's take an example of NMC 21700 Li ion cell and try to visualize the degradation in SOH over number of charge/discharge cycles. Here's a simple Python code snippet demonstrating how we can visualize battery degradation over time:

import matplotlib.pyplot as plt
# Sample data (replace with actual battery health data)
data = pd.read_excel("Battery data.xlsx")
plt.plot(data['Cycles'], data['SOH'], linewidth = 3, color = 'r')
plt.xlabel("Cycles")
plt.ylabel("SOH(%)")
plt.title("Sample Battery degradation over charge/discharge cycles")
plt.grid(True)
plt.show()

Output:

Future of SoH in EVs


As the EV industry continues to evolve, SoH will play a critical role in ensuring the safety, performance, and affordability of electric vehicles. By overcoming the current challenges and embracing new technologies like machine learning, we can unlock the full potential of EVs and contribute to a cleaner, greener future.


Stay tuned for more in-depth tutorials and case studies on the amalgamation of battery technology and data science!




 
 
bottom of page