I am trying to find the state of charge (SOC) of some batteries
I have 3 LiFePO4 batteries, these are the ones I have purchased:
I have them connected in parallel. For each battery I can measure their individual voltage and I can individually discharge each one through a resistor.
The two methods I have found online to find the SOC (state of charge) of each battery are called coulomb counting and the second one is a voltage look up table.
This method involves integrating the current over time to find out how much charge is given to the batteries.
This only measures the difference in state of charge. Since you do not know how much charge is already in each battery you cant actually find the state of charge, how do you overcome this problem?
I only know how much current is going into the whole parallel connection and not into each battery, so that gives the SOC change across all of them and not each one. Is there a safe way to find the current going into each battery. Do we even need to find the current going into each one, if they are in parallel would they not just distribute this evenly between them?
Voltage look up table
This seems to be the easier method. If you have a graph of voltage VS SOC you can find how much charge is in each battery by simply measure the voltage on each battery and then comparing to the voltage values from the graph/look up table - The issue is
I looked at the data sheet as shown in the link and I cannot find anything like this. Therefore I would would need to find this myself. This leaves the question of how I could possibly do this?
When I do find this graph, then can I use the look up table for all the batteries, as in are the differences between them negligible enough to use the same graph for all or would I need to produce a different graph for each one?
I am thankful for any help and appreciate your time reading this.
To add: I would not like to use any pre made BMS systems online as I am trying to learn about this. I am currently using
- Arduino nano every
- SMPS for DC-DC conversion it can be a buck or boost
- I have designed a circuit for the batteries that can measure their voltages and discharge them individually.
Answering some questions ( I will edit this later with answers and everything If I am able to obtain them )
Just a note Russel, when you say 1%, what exactly do you refer to ?
To give an idea, this project uses an SMPS, Arduino and a circuit board.
Q1 - The current is measured using the ina219 current sensor. These values are taken every 1s and stored using the Arduino to an SD card.
Q2 - The batteries are connected in parallel using power cables. Each battery is in a circuit board which is this:
Using the relay, I can stop charging it and measure the voltage of each cell seperately and discharge them. It has an opto to isolate the cell from connections a relay to change pins for measuring and a pos and neg port which are used to connect the batteries together. The mosfet and resistor are only used when dischargining.
Q3 - For the integration, what I am doing is on the Arduino it collects the current measured every second. so its currentx1 second and I just add all the current basically since that find the area, AKA integration. ( yes it does assume the current is constant for that one second but the current is regulated by a PID controller so it has a very very small error).
As for SOH(state of health), temperature etc I will focus on these later, I am trying to implement SOC, balancing and charging first.