Intro to HV Battery Packs
Our main HV battery pack buffers energy from the solar array and powers the motors. We build our own packs using over a thousand lithium-ion cells. Currently, we're using lithium nickel manganese cobalt oxide (NMC) 18650s, which give us the best combination of energy density, maximum discharge rate, and price. 18650 is just a term for a cylindrical cell that measures around 18.6mm x 65mm.
In order to assemble our pack, we purchase individual 18650 cells. We use LG MJ1, which have a nominal voltage of 3.635 V and a capacity of 3500 mAh. Then, we assemble these cells in parallel to form modules. Putting cells in parallel increases the capacity and maximum discharge rate of the assembled module, but each module still has a nominal 3.635 V. To raise the voltage to our operating voltage, we place modules in series to form the strings. A few strings are then put in series with each other to form the battery pack. These assembled packs are normally denoted by the number of cells in series and parallel. For example, our pack in MSXII is designed to contain 1296 cells with 36 cells per module and 36 modules in series. This is referred to as a 36s36p pack. Note that it is critical that cells of the same capacity and chemistry are used, and that all modules contain the same number of cells in parallel.
Balancing
We want all cells to experience the same load, and the overall performance of the pack is only as good as that of its weakest cell. An example of this would be the minimum voltage allowed on any single MJ1 cell is 2.5 V according to the datasheet, so if any "weaker" cell reaches 2.5V before the other ones, the entire pack must be recharged before it can be allowed to discharge again.
To ensure that no single cell is significantly weaker than others, we need to ensure that our cells are balanced and matched before building a pack. Matched cells refer to those which exhibit the same characteristics such as internal resistance and capacity. Modules are balanced when they are at the same voltage. When cells are connected in parallel, they automatically self-balance since the parallel connection keeps them all at the same voltage and always allows charge to be moved between them. However, when they are in series, if improperly matched or unbalanced, some cells can become overstressed, diminishing their capacity and limiting the overall performance of the pack. To combat this, there are a number of cell balancing strategies.
- Passive balancing: Excess energy is removed from cells with the highest charge through a bypass resistor until their voltage matches that of the weaker cells. Although this method is cheap and relatively simple, it is very slow and just burns excess energy, limiting the pack's performance.
- Active balancing: Excess energy is moved from cells with higher charge to those with lower charge, usually through the use of a capacitor or inductor. This approach is much more efficient, but is much more complex and expensive.
Unbalanced cells affect the lifespan and maximum performance of the overall pack, with weaker cells getting worse the more the battery is cycled. Based on the relatively short required lifespan and minimal number of cycles required of our battery packs, we have decided to focus on building a matched battery pack and periodically balancing the pack over integrating a complex cell balancing system into our BMS.
Battery Monitoring System (BMS)/Battery Protection System (BPS)
We like lithium-ion for its energy density, but the factors that make it so appealing also make it extremely dangerous. Lithium-ion cells are highly susceptible to something called thermal runaway if overheated or overcharged, where internal damage causes the cell to become thermally unstable. The resulting high heat of the failing cell can propagate to neighbouring cells, causing it to become thermally unstable, creating an uncontrollable positive feedback loop. This can quickly result in a massive battery fire that releases toxic fumes and is very difficult to extinguish.
To keep our pack safe, we monitor a number of variables in the pack:
- Over/Under-voltage: Each cell must stay within its safe operating voltage. Too low and we cause irreversible damage to the electrodes, permanently reducing its capacity. Too high and we risk thermal runaway in addition to electrode damage. We monitor each module individually and normally try to keep them between 2.5V and 4.2V.
- Over Current (Charge and Discharge): Drawing too much current or overcharging can cause thermal runaway and reduces the capacity of the pack. A separate current limit is defined for charging and discharging.
- Over/Under-temperature: Lithium-ion cells operate optimally within a certain temperature range. Too cold and we lose capacity and risk electrode damage. Too hot, and we risk thermal runaway. We monitor the temperature of the cells to avoid charging or discharging the cells when any module is over-temperature. We currently do not monitor for under-temperature since we assume that as a solar car, we'll most likely always operate when it's relatively warm outside.
State of Charge (SoC)
We cannot directly map a lithium-ion battery's voltage to remaining life, especially since they have non-linear charge and discharge curves. Instead, we monitor the battery's state of charge (SoC), which is defined as the available capacity as a percentage of either its rated or maximum effective capacity.
There are a number of different methods of SOC estimation:
- Voltage-based: Given charge and discharge curves at a specific load, we can map the current battery voltage to its SOC. This works relatively well if our load is around that of the load at curve generation, but generally fails to take temperature, age, and measurement error into account. This is a concern because applying a load can cause the battery voltage to drop and certain parts of lithium-ion charge and discharge curves are very flat. Unfortunately, the load in an electric vehicle is typically anything but constant.
- Current-based (Coulomb Counting): By integrating the current flow over time, we can calculate the charge transferred in and out of the pack. We can then subtract the charge transferred from the total charge of a fully charged pack to obtain the SOC. This is more accurate than voltage-based SOC estimation, but requires a reference point and is suspectible to accumulated measurement error.
- Internal Impedence: The internal impedence of the cell can be measured and used to estimate the SOC. This is extremely difficult, but ASICs have been designed to interpret the data.
Our planned SOC algorithm primarily uses current-based SOC estimation to handle the large changes in current due to acceleration and regenerative braking. When the current flow is relatively stable or minimal current is flowing, we can use voltage-based SOC estimation to re-calibrate the SOC and set the reference point for current-based SOC estimation to continue from.