Hi there,
this question actually got me to sign up with this forum because it's a topic that very much interests me.
In short: there are two ways to determine a cell's SOC:
1. get your hands on its SOC / OCV curve and use it as a lookup table. Then use the RESTING voltage against that curve to look up your SOC. Resting is somewhat undefined but waiting for at least 1 hour with 0.0mA should yield good results.
Caveats:
- You can only determine your SOC after letting the cell rest.
- You have to fully trust the SOC / OCV curve source. (Best: measure cell yourself and do your own!)
- the OCV can vary depending on cell temperature. At least that's what a good friend of mine (PhD at Porsche for LiIon batteries) says. I still need to confirm myself.
2. Fully carge your cell and then integrate over drawn current using a current sensor.
Caveats:
- offsets in current sensor and noise add up and lead to SOC walking away from true value
- you'll have to know the capacity
The best way is acutally to combine the two by using an (unscented) kalman filter.
This works by applying the following steps:
0. Get Matlab or similar for prototyping the software.
1. create a mathematical description of the cell's behaviour (google: li ion cell model)
(note: add as many RC low pass elements as you think are necessary. 1 is the mininmum, more are more exact but harder to get parameters estimated)
Make sure that your model yield's the expected voltage for the next timestep t+1.
2. measure your cell's OCV curves and store them as lookup table for your dependant voltage source (see model)
3. apply UKF and feed it your cell current as model input directly from your current shunt and the cell voltage + temperature as sensor inputs.
After some tuning of the parameters, the UKF yields not only the SOC, but also the cell's internal resistances (as shown in the applied cell model) and its capacity. You get the full picture and can then make up a definition for your SOH (RI_dc > xx mR or capacity < xx%, ...)
The most important thing to measure about a cell is its OCV curve. The rest can be determined online. I'd therefore suggest building a powerwall with only one type of cells so you can actually trust your OCV curve.
Hope his helps!
Can't wait to build my own powerwall