In one embodiment the present invention includes a method of charging a
battery comprising storing a plurality of charging parameters in one or
more programmable data storage elements. The charging parameters may be
used to program a variety of battery charging parameters including
constant currents, voltages, thresholds, timers, or temperature controls.
In one embodiment, the present invention includes a software algorithm
that changes the charging parameters to improve battery charging
efficiency.