Commit a1c7c1a4 authored by Linus Walleij's avatar Linus Walleij Committed by Sebastian Reichel
Browse files

power: supply: Explain maintenance charging



In order for everyone to understand clearly why we want to use
maintenance charging for batteries, expand the description with two
diagrams and some text.

Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Reviewed-by: default avatarMatti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent 568035b0
Loading
Loading
Loading
Loading
+42 −6
Original line number Diff line number Diff line
@@ -374,9 +374,37 @@ struct power_supply_vbat_ri_table {
 *   These timers should be chosen to align with the typical discharge curve
 *   for the battery.
 *
 * When the main CC/CV charging is complete the battery can optionally be
 * maintenance charged at the voltages from this table: a table of settings is
 * traversed using a slightly lower current and voltage than what is used for
 * Ordinary CC/CV charging will stop charging when the charge current goes
 * below charge_term_current_ua, and then restart it (if the device is still
 * plugged into the charger) at charge_restart_voltage_uv. This happens in most
 * consumer products because the power usage while connected to a charger is
 * not zero, and devices are not manufactured to draw power directly from the
 * charger: instead they will at all times dissipate the battery a little, like
 * the power used in standby mode. This will over time give a charge graph
 * such as this:
 *
 * Energy
 *  ^      ...        ...      ...      ...      ...      ...      ...
 *  |    .   .       .  .     .  .     .  .     .  .     .  .     .
 *  |  ..     .   ..     .  ..    .  ..    .  ..    .  ..    .  ..
 *  |.          ..        ..       ..       ..       ..       ..
 *  +-------------------------------------------------------------------> t
 *
 * Practically this means that the Li-ions are wandering back and forth in the
 * battery and this causes degeneration of the battery anode and cathode.
 * To prolong the life of the battery, maintenance charging is applied after
 * reaching charge_term_current_ua to hold up the charge in the battery while
 * consuming power, thus lowering the wear on the battery:
 *
 * Energy
 *  ^      .......................................
 *  |    .                                        ......................
 *  |  ..
 *  |.
 *  +-------------------------------------------------------------------> t
 *
 * Maintenance charging uses the voltages from this table: a table of settings
 * is traversed using a slightly lower current and voltage than what is used for
 * CC/CV charging. The maintenance charging will for safety reasons not go on
 * indefinately: we lower the current and voltage with successive maintenance
 * settings, then disable charging completely after we reach the last one,
@@ -385,14 +413,22 @@ struct power_supply_vbat_ri_table {
 * ordinary CC/CV charging from there.
 *
 * As an example, a Samsung EB425161LA Lithium-Ion battery is CC/CV charged
 * at 900mA to 4340mV, then maintenance charged at 600mA and 4150mV for
 * 60 hours, then maintenance charged at 600mA and 4100mV for 200 hours.
 * at 900mA to 4340mV, then maintenance charged at 600mA and 4150mV for up to
 * 60 hours, then maintenance charged at 600mA and 4100mV for up to 200 hours.
 * After this the charge cycle is restarted waiting for
 * charge_restart_voltage_uv.
 *
 * For most mobile electronics this type of maintenance charging is enough for
 * the user to disconnect the device and make use of it before both maintenance
 * charging cycles are complete.
 * charging cycles are complete, if the current and voltage has been chosen
 * appropriately. These need to be determined from battery discharge curves
 * and expected standby current.
 *
 * If the voltage anyway drops to charge_restart_voltage_uv during maintenance
 * charging, ordinary CC/CV charging is restarted. This can happen if the
 * device is e.g. actively used during charging, so more current is drawn than
 * the expected stand-by current. Also overvoltage protection will be applied
 * as usual.
 */
struct power_supply_maintenance_charge_table {
	int charge_current_max_ua;