The working demo of my prototype is added in the below YouTube link, Kindly watch it before the detailed documentation.
Faulty Lithium ion Cell BMS Pack:
This prototype uses Wio terminal and Edge Impulse tool to predict the over heated faulty cell in the BMS pack. For this project, I used Thermal Camera MLX 90640 with Wio terminal to collect the thermal data of the BMS pack.
Problem Statement:In an existing BMS pack, the temperature sensor is integrated with cell pack(14cells) for identifying the overheated cell pack. But there is no system to identify the individual faulty cell (over heated) in BMS pack.
•Only One Temperature sensor is deployed to detect the overall temperature of Battery packs (14 * Li-ion Cells)
•So Identifying the individual cell temperature is challenging due to Infrastructure cost for BMS pack
Cost for deploying Temperature sensor for each cell:
Number of cells in BMS pack : 112
Cost of Temperature sensor : 500 INR ( 0.75 USD)
Total cost : 112 * 500 = 56000 INR (760 USD) *approx
Also There is no interface support in microcontroller to support 112 Temperature sensor reading.Solution Using TinyML model
I have developed a prototype by using thermal camera MLX90640 and Wio terminal to collect the thermal data of the BMS pack and uploaded the data sets ( Label : Faulty Battery 1.....6 and normal to the Edge Impulse tool)
Hardware setup:In this prototype, 6 Lithium ion cells are connected to the Load (Rheostat) and the MLX90640 and Wio Terminal is attached to the stand where the MLX90640 thermal camera is facing downwards the Lithium Ion Cells.
The MLX90640 sends 32x24 thermal data to the Wio Terminal through I2C.
Since the project focus on identifying the overheated cell in the pack. I have used simple simple filtering logic to filter out the normal cell temperature by setting it to zero.
Upload the datasets created for this project from the below link.
Go to Edge Impulse -> data acquisition and uploader option to upload the datasets.
In case, If you want to develop new datasets from scratch. Flash the below code in Wio Terminal using arduino IDE.
For that, you need to configure wio terminal setup in arduino IDE. Please follow the below link before data acquisition.
Arduino setup for Wio Terminal
This code will print the Thermal data in array format, later it can be converted to csv format as mentioned in the above datasets.
Ideally the csv data looks like this.
Once the datasets are uploaded, then in create impulse section change the window and window size as 768 ( 24*32 = 768 ).
Then in feature explorer, we can see the generated raw features of thermal data.
I have used reshape to change the 1D data to 2D data with 24 columns (due to placement of Thermal camera), in some cases it might be 32 to get best accuracy.
Then I have included couple of 2D conv layers with pool layers, followed by Flatten layer. Then 2 DNN ( 30 neurons, 10 neurons ) in sequential is used.
In deployment section, select Arduino code and download it.
Then add the zip file as library in arduino IDE.
Once it is added, download the final application code from the below github link. Add flash it in Wio terminal.
Output:In a model training, 100% accuracy with 0.01 loss is achieved and in model testing 87.5 % accuracy is achieved.
In normal case, when all the battery in the pack is operating in normal temperature.
In faulty battery condition, the model will predict the cell location index and display it with predicted value. In the setup, the faulty cell is placed in location - 5 and discharge it for 1 hour of time, then the cell gets over heated. The model predicts the overheated cell location - 5 in the pack.
Incase, if you can not arrange faulty cell for testing, you can simulate it by the below method.
Place the heated soldering iron on top of the battery cell but do not touch the battery cell, and move towards battery cell index from 1 to 6 in pack. The model will predict the overheated cell location as 1 to 6 as the soldering iron move from 1 to 6. In this way, we can simulate the faulty battery condition and test it.
Comments