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: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
Linus Walleij 2022-07-19 13:41:31 +02:00 committed by Sebastian Reichel
parent 568035b01c
commit a1c7c1a404

View file

@ -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;