|
The
battery management system (BMS) was the single most difficult part of the
project. I was fully aware that this was the critical, time
consuming and risky part of the project. There is not a lot of solid
information on the internet. Failure to have a good BMS
in place would mean certain destruction of the batteries in which I had
$4,500 invested. I won't talk about how my understanding
evolved. I just read and read. Most of what I learned was by
manually charging the batteries and getting a sense for their charge and
discharge characteristics. As an Electronics Engineering
Technologist, I enjoy designing and building
electronics. However I do not believe in re-inventing the wheel just
so I can say I built it myself. I always look for an available
product before I develop my own. In the case of a large capacity
lithium BMS, I found nothing that met my requirements for functionality
and space. The general requirements for my BMS are below;
Single Cell limits
According to the
TS-LFP90
battery specifications, (the Thunder Sky cells that I bought) have a maximum
charging voltage of 4.25 volts and a minimum discharge voltage of 2.5
volts. Therefore my BMS must ensure each cell is not allowed to
discharge below 2.5 volts or be charged to greater than 4.25 volts. The
maximum charging current is < 3C (meaning less than 3 times the rated
cell capacity) or in my case < 270 amps since the cell capacity is
90ah.
More information can be deduced if you study the charge and
discharge curves shown in the data sheet.
Charging a Single Cell
The charge curves show a
typical charge cycle in a 150 minute period using a charge current of 45
amps. You can see the charge
current is initially fixed until the cell voltage reaches 4.25
volts. At that point the current needs to be reduced while the cell
continues to charge until about the 150 minute point where it reaches 100%
capacity. An important characteristic of the cell that is normal
with all LiFePO4 cells is that when the cell starts to reach is full
charge, its impedance begins to rise. If the charging voltage is
fixed at 4.25 volts, the current draw drops off naturally. At some
point the current draw will be very little. It is at this stage of the charge cycle that the cell can
withstand voltages that are significantly higher than the nominal cell
voltage and in the area of 30 volts. It is not clear to me
exactly how low the current must be for the cell to allow for higher
voltages. Nevertheless, I would not recommend
doing that. I am just trying to point out that the cell's chemistry
is such that it is far less susceptible to damage than its predecessor,
the lithium cobalt cell. An important point about charging
that I believe is not widely understood is that once the cell has reached
4.25 volts, to achieve full capacity the cell needs to be charged a while
longer to saturate the cell This seems to often be missed and the
reason why some people do not realize the rated capacity out of the
battery. With respect to charging current, less is better if you can
afford the additional time required. Less means thinner conductors
and less heat buildup in the cell. As well the absorption rate
will be higher at lower charge currents. This means a more efficient
charge with fewer losses.

Red - Current, Blue
- Voltage, Yellow - Depth of
Charge;
The charge curve above is specific to the
cells I bought
however it is typical of all LiFePO4 batteries. Notice
that the current drops off dramatically once the cell has reached 4.25
volts. This occurs naturally if the cell is charged at a fix voltage
from that point forward. Full capacity is not achieved when the cell
first reaches 4.25 volts. In this case, fixed voltage charging is continued
for about 40 minutes after the cell has reached 4.25 volts. During
that 40 minute cycle, the cell is eventually saturated and in doing so, reaches its maximum
state of charge.
Charging Multiple Cells
Most battery packs are
arranged to achieve the highest voltage possible by arranging the cells in
series. The problem that arises
when charging and discharging series connected LiFePO4 batteries is that
they will begin to drift out of balance with each other with respect to their
voltages. This means that the cells will have different charge
levels. The most basic BMS would shut off the charger when the
first cell reached 4.25 volts or even lower. However the other cells could be
significantly undercharged and so the entire battery pack will have less
energy than it otherwise could. To resolve this, any cell that reaches 4.25 volts needs to
be protected from overcharge while the other cells are allowed to catch up. Another
problem is that cells that approach full charge will exhibit a rising impedance and as such not allow much current to pass through
them. This means the other cells stop charging or charging is
slowed. To resolve this, a current path must be established around a cell that is fully charged or
almost fully charged.
Cells that are series and
parallel connected can be treated the exact same way except in the case of
safe over voltage. As I stated before, you can place a higher
voltage across a cell that is fully charged (does not draw hardily any
current) but in the case of a cell that is in parallel with other
cells, the cell current is a total of all the cells in parallel.
Therefore there is no absolute way of knowing that all the cells are fully
charged and can therefore handle a higher cell over voltage. A good
rule; For parallel
connected cells, never allow the voltage to exceed 4.25 volts regardless
of the current.

As shown above, cell imbalances become more
prevalent near the end of the charge. Cells should not be charged to
greater than 4.25 volts. In this diagram, if the charging process
were stopped when the first cell reached 4.25 volts, the battery pack
would exhibit a less than optimized capacity. To optimize the
battery pack's capacity, a BMS must ensure all cells reach their maximum voltage
through cell balancing. Next, the cells need to be saturated using
a constant voltage during the final charging
phase.
Discharging Cells
Looking at the
data sheet at the discharge curves you can see that
a cell exhibits very little capacity below the 3 volt point. Since
the specifications say the minimum allowable cell voltage is 2.5 volts, a BMS must accurately monitor each
cell's voltage and set off an alarm,
turn down the power of the motor controller or do something else to protect the
cell from dropping below 2.5 volts. It is my understanding that
little or no damage occurs if a cell is allowed to drop below 2.5 volts
for just a few seconds. The safe bet is to simply never allow
any cell to fall below 2.5 volts.
Monitoring Cell
Temperatures
Prolonged high charge and discharge
currents are the greatest thermal threat to a LiFePO4 cell. LiFePO4
cells are far less prone to thermal damage and deforming than lithium cobalt
batteries however they still need to be monitored and protected against
high charge and discharge currents that can cause heat rise. My BugE
will not draw excessive current long enough to warrant temperature monitoring.
However my BMS will have the abilities built into it for future projects
where currents will be higher and for longer periods. I am aware that the cells can physically deform
unless they are strapped together and have plates of some sort to prevent
them from bulging. If temperatures approach 75 degrees C, the cell
needs to cool via reduced charge or discharge current or external
cooling. Note that some heating can be beneficial. For example,
when the cells are around 50 degrees C, they will demonstrate up to 10%
more capacity.
BMS Structure and
Functions
From the information above,
we know that a lithium BMS must monitor and limit cell voltages both in
the charge and discharge cycles. If charge and discharge currents are
high, cell temperatures need to be monitored to protect the cells against
high temperatures. To perform these functions, the BMS must be able
to protect each cell from overcharge and if a cell is charged, provide a
current path around that cell so the other cells can continue to
charge. As well, the BMS must be able to have at least some basic
on/off control of the charger and some way of annunciating or responding
to a low cell voltage (should that occur).
Other functions may
include;
-
Reading and displaying
or logging cell voltages
-
Reading and displaying
or logging cell temperatures
-
Calculating and
displaying battery
state of charge
-
Displaying battery pack
voltage
-
Displaying charge or
discharge current
Distributed or Integrated
BMS
I have seen 2 types of
lithium BMSs;
Distributed - Individual
element circuits are connected to each cell. Most often, the elements
are physically located on the cell's battery terminals. They protect the cell and
communicate to a main central BMS controller that has some control over
the charger and performs other functions. These systems are usually expandable.
Integrated - A single BMS
controller monitors and protects all cells from a central location.
It also has some control over the charger and usually performs other
functions. These systems are normally not expandable.
My BMS

My BMS system either had to
be an integrated type or use elements that were not mounted on each cell
but rather in another location. I had no room on top of the cells
for a circuit to be located. I was very much interested in a flexible and expandable system so that my design could be used on
electric vehicles with varying numbers of cells. I also wanted to be able to
have the option to collect and store data, display data and provide the option of polling
each element for cell information. I wanted the option of
sending commands to each element to perform special functions too.
Ultimately I designed a system that uses small element circuits that plug
vertically into interconnect boards that hold up to 8 elements per
board. Since I was using 24 cells, my BMS is made up of 3
interconnect boards each holding 8 plug-in element circuits (24 elements
in total) and one main BMS board. Each element is equipped with
a small but powerful PIC processor that includes 10 bit A/D functionality
and background pulse with modulation capability. The main BMS board
is also based on a PIC processor. Using PICs makes the functionality
extremely flexible via software.
I wrote various programs
that used different approaches to monitoring and balancing. for
example, I initially programmed the main BMS board to poll each element
for its cell voltage. I then had the main BMS board send commands to
each element, telling it when and how much to balance its associated cell. I eventually decided that is was better to have the
balancing decisions done within the elements and not be reliant on a
single main BMS. I also abandoned the polling of each element. It
simply wasn't required for my application. In the future, if I want
the system to do different things, I'll write new software to do so.
Elements - Each element is
equipped with a small PIC processor (PIC12F683) with a precision A/D
converter. Also on the element boards are a precision voltage
reference, 2 opto-isolators for input and output data or signaling, a 5.6 ohm power resistor, a couple of status LEDs and a few other
components. The data input and
output lines of all the elements are connected in parallel on common lines. Each element
performs functions to protect its associated cell from over voltage and under
voltage. Here is a full description of the functions;
Element Functions
-
Each element is
calibrated to 4.250 volts. The software allows 10
seconds to adjust the trimmer potentiometer upon initial power-up for
calibration purposes. Calibration is done via a small trimmer potentiometer.
The blue status LED illuminates when the A/D is
perfectly calibrated to exactly 4.25 volts.
-
After
the calibration routine ends, the element goes into its normal
operating routine. The cell voltage is sampled several times a second, calculating an average of 10 samples before it
determines a verified reading. If
the cell voltage is low (<2.8 volts), the blue LED flashes slowly
and the data output line goes low. If the voltage is within
normal range set for >2.8 to <4.22 volts then the blue LED flashes at a medium
rate.
-
If the cell voltage
reaches 4.22 volts, the data output line goes low to signal balancing,
the blue LED flashes fast and a varying amount of resistance is placed
across the cell using variable pulse width modulation (PWM) in an
attempt to maintain 4.22 volts. The resistance serves to dissipate
energy or bypass current. The low data output line signals the main
BMS board to cause the battery charger to reduce charging voltage.
This reduced voltage results in reduced charging current so that any
elements that are balancing can dissipate the required amount of
energy to maintain a cell voltage of 4.22 volts. The maximum
shunting current is about 760mA.
-
If the cell voltage
rises to 4.255 volts, maximum PWM is applied to dissipate or bypass as much
energy as possible and the data output line signals the main BMS board
to turn off the charger and end the charging process. The element that was at the point of
over voltage will continue to dissipate energy until it reaches 4.22
volts. This condition (charging above 4.25 volts) should not normally occur.
Note: I built a precision voltage reference that I had calibrated to
exactly 4.250 volts at a instrumentation lab in Edmonton.
Main BMS Board Functions
The main BMS
main board is equipped with a PIC processor that (with supporting
hardware and software), responds to signals from the element's data output lines.
Pack voltage and operating current (driving and charging) are
measured, the charger is controlled and data is reported to an in-dash
4 line, 20 column blue
LCD.
-
The main BMS board is
put into "Drive" mode or "Charge" mode via a
toggle switch on the BugE dash.
-
In drive mode, the BMS
reports the following to the LCD display;
- Battery Voltage
- Current
- Battery State of Charge (this is calculated and displayed)
- Mode ("Drive Mode")
- Low Cell Warning (if any element report a low cell)
-
In charge mode the main
BMS board controls the charger (on/off) via a solid state relay and
controls the charge voltage (high or low) via the thermal probe port
of the Zivan NG1 charger.
-
When the charge cycle
is initiated, the main BMS board will turn on the charger to full
voltage if the battery voltage is below 102 volts or the current is
less than 1 amp and the charge voltage is less than 100 volts.
-
During the charge
process, if any of the elements report they are balancing via a low
data out signal to the main BMS, the main BMS places the charger in a low current
and fixed voltage state. If
cell balancing stops, the BMS will pulse the charger's thermal probe
port to increase
voltage cyclically. This helps the other cells reach full charge faster
while minimizing the chance that any element that was previously
balancing will reach a state of over voltage.

The
4 line 20 column LCD display provides operating data in charge and drive
mode.
Performance of the
BMS The BMS
works fantastic in fully charging and saturating the batteries. I am
glad that I focused on precision balancing. Each cell is perfectly balanced with a maximum
voltage difference from one cell to the other of only 2 to 3 millivolts.
My onboard charger is a Zivan NG1 that is custom programmed for a lithium
charge curve. The charger puts out a peak voltage of 102 volts.
During most of the charge cycle the charger puts out a
constant current of about 10 amps. When the battery pack reaches
about 99 volts, the charger switches to constant voltage mode.
Current naturally begins to decrease as the cells near their full charge.
The BMS main board interfaces to the charger's main AC power input via a solid
state relay to turn the charge on and off and to the charger's thermal probe port such that if any of
the elements are balancing, it turns down the charger by simulating a high
battery temperature. In addition, my BMS includes a cyclic algorithm that
results in extreme balancing and full cell saturation. I'll
probably add an optional charge sequence that charges and balances the batteries
to about 4 volts. This would increase the life expectancy of the
batteries by a lot however the state of charge of the batteries would be
lower, You
may notice that I am using 2 main BMS circuits in my BugE. I used a
second circuit as a custom controller to turn on the brake light when in
regenerative braking. As well, this circuit is used to sample the
pack voltage via an onboard relay. This resulted in reduced current
consumption for the overall BMS. The motor controller is fully
capable of turning on the brake light when in regenerative
braking. As well, I was planning to use the controller's
analog outputs to operate analog gauges. Unfortunately I have
not been able to obtain a copy of the controller's operating system in
order to amend the software using VCL. Therefore I had to extend the
use of my first BMS circuit and utilize another one to perform some of those
functions. At this point, even if I did obtain a copy of the
controller's operating system, I think I would leave things as they
are. Everything works perfectly as it is. Below
are some pictures showing the printed circuit boards during the design
process, a couple of the schematics and some pictures of the actual PC
boards; 
Top
side of an element board. I used 24 of these, one for each of the 24
cells. 
A
blurry picture of the main BMS board. I used 1 BMS board and adapted
another as a general controller to perform other functions. 
The
interconnect board. Three are used for my BugE 
This
is a layout of 3 boards that were produced as panels. I had to cut
out the individual boards. It is cost effective to have panels of
boards made when you only need a few of each. The above boards are
the main BMS (top), a basic voltage regulator board (middle) and PMW speed
controller or light controller boards (bottom). 
Schematic
diagram of the element circuit. 
Schematic
of the main BMS board. 
Shown
are an interconnect board with 1 socket mounted (left), a complete main
BMS board (middle) and a complete element board (right) 
My
entire BMS system (less the charger and solid state relay) is shown
above. Only the main BMS board is shown populated.
Next Back Home |