new charging related doc


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2983 a1c6a512-1295-4272-9138-f99709370657
diff --git a/docs/CHARGING_ALGORITHM b/docs/CHARGING_ALGORITHM
new file mode 100755
index 0000000..38a4454
--- /dev/null
+++ b/docs/CHARGING_ALGORITHM
@@ -0,0 +1,196 @@
+CHARGING ALGORITHM
+
+This doc and a part of the charger implementation (especially voltage courves, 
+remaining time estimation, trickle charge) is written by Uwe Freese. If you miss 
+some information here, write to mail@uwe-freese.de.
+
+
+
+[INTRODUCTION]
+
+This doc describes how the charging works for the recorder. The algorithm can be
+found in firmware/powermgmt.[c|h]. Debug output is done in apps/debug_menu.c.
+Charging for the player is done by the hardware and therefore isn't implemented
+in rockbox.
+
+All following information is related to the recorder.
+
+
+[TECHNICAL POSSIBILITIES AJB]
+
+- The AJB can read the voltage of the battery (all four cells in series,
+  resulting in about 5V).
+- We can switch the charging current (about 350mA, constant) on and off.
+
+
+[VOLTAGE COURVES]
+
+See http://www.uwe-freese.de/rockbox for some voltage courves taken while
+charging and decharging an AJB.
+
+These voltage courves are implemented as arrays in rockbox. We can then 
+calculate how full the batteries are (in percent) after taking the actual 
+voltage. Both voltage courves (charging and decharging) are used here.
+
+
+[CHARGE OVERVIEW]
+
+- If voltage drops under a certain value (with "deep discharge" option on the 
+  value is lower), charging is started.
+- If end of charge is detected, go to top off charge.
+- Make the batteries completely full. 90 minutes of top off charge (voltage
+  regulation at a high value).
+- After that, do trickle charge (max. 12 hours with voltage regulation at a 
+  lower value).
+- When trickle charge is done and you did not disconnect or shut off your AJB by 
+  now, the AJB decharges normally since it reaches a low voltage and everything 
+  starts from the beginning.
+
+
+[NORMAL CHARGE]
+
+When charging is started, the charger is turned on. The batteries are charged
+with a constant current of about 350mA. The charging is stopped for three reasons:
+
+- the voltage goes down in a 5 min interval (delta peak, see below)
+- the voltage goes up only a little bit in an 30 min interval (is mainly constant)
+- the charging duration exceeds a maximum duration
+
+
+[DYNAMIC MAX DURATION CALCULATION]
+
+The max duration is calculated dynamically. The time depends on how full the
+battery is when charging is started. For a nearly full battery, the max duration
+is low, for an empty one, it is a high value. The exact formula can be found in
+the source code.
+
+
+[DELTA PEAK - WHY DOES IT WORK?]
+
+Delta peak means to detect that the battery voltage goes down when the
+batteries are full.
+
+Two facts on batteries are the reason why this works:
+
+- If the batteries are full, the charging current cannot charge the battery anymore.
+  So the energy is absorbed by heating up the battery.
+- Each battery has a negative temperature coefficient, that means the voltage goes
+  down when the temperature goes up.
+
+NiMH batteries have a smaller delta peak than NiCd, but is is enough for Rockbox
+to detect that the batteries are full.
+
+Related documents on the web:
+
+  http://www.nimhbattery.com/nimhbattery-faq.htm questions 3 & 4
+  http://www.powerpacks-uk.com/Charging%20NiMh%20Batteries.htm
+  http://www.angelfire.com/electronic/hayles/charge1.html (soft start idea)
+  http://www.powerstream.com/NiMH.htm (discouraging)
+  http://www.panasonic.com/industrial/battery/oem/images/pdf/nimhchar.pdf
+  http://www.duracell.com/oem/Pdf/others/nimh_5.pdf (discharging)
+  http://www.duracell.com/oem/Pdf/others/nimh_6.pdf (charging)
+  Philips TEA1102/1103/1104 PDFs available at www.philips.com.
+
+
+[TOP OFF CHARGE AND TRICKLE CHARGE]
+
+After a normal charge is completed, trickle charging is started. That means 
+charging to keep the batteries full. While trickle charge in other (stand alone) 
+chargers means charging the amount that the battery loses because of self 
+decharging, here it's charging the amount the AJB consumes when it's on. That's 
+because it is not possible to switch off the AJB when charging is done. It goes 
+on again and then the archos firmware charger code would charge again. So we 
+have trickle charge in rockbox.
+
+In simple words, rockbox charges about 15 seconds per minute in trickle mode. An 
+AJB consumes 100 mA when it's on and the charging current is about 300mA. So 
+charging 15 s and decharge 45 s will keep the batteries full.
+
+But the number of seconds the charger is on in trickle charge mode is also 
+adjusted dynamically (between 1 and 24 sec). Rockbox tries to hold the battery 
+level at 5,65 V (top off charge, that means "make the batteries completely 
+full") for 90 minutes, then a level of 5,45 V. If the voltage drops below the 
+wanted value, rockbox will charge one second more the next minute. If is is 
+greater than this value, is will charge one second less.
+
+Trickle charging runs 12 hours after finishing the normal charging. That should 
+be enough for charging the AJB over night and then unplug the charger sometime 
+in this 12 hour trickle charge time. It is not recommended to trickle charge 
+over days, that's because it is stopped after 12 hours.
+
+Many chargers do top off and trickle charge by feeding a constant (low) current 
+to the batteries. Rockbox, as described, makes a voltage regulation. That's 
+because the power consumption of the AJB changes when backlight is on/disk is 
+spinning etc. and doing a voltage regulation is the simplest way to charge 
+exactly the needed amount.
+
+There are two charge ICs I want to mention here: The Philips TEA1102 and TEA1103 
+do voltage regulation for NiCd and NiMH at 1,325 V per cell. That would be 5,3 V 
+for four cells, but I think 5,45 V is best for Rockbox with the maximum time of 
+12 hours. Note that the voltage values are taken in the part of a minute where 
+the charger is off, so the values are a little bit smaller than the actual 
+average of the whole 60 seconds.
+The Philips TEA1102 top-off charge time (with 0,15 C) is one hour.
+
+My test results with trickle charge (battery capacities measured with an 
+external charger):
+
+- after normal charge and top off time: 1798, 1834, 1819, 1815 mAh
+- after normal + top off + trickle charge (12h): 1784, 1748, 1738, 1752 mAh
+- charged with external charger: 1786, 1819, 1802, 1802 mAh
+
+Result: Trickle charge works. :)
+
+
+[REMAINING TIME ESTIMATION]
+
+In simple words, it is
+
+remaining time = remaining battery energy / power consumption of AJB
+
+With using the battery courves described above and a battery capacity (a 
+constant in powermgmt.h), the remaining capacity is calculated. For the power 
+consumption, a usual constant value is used. If the LED backlight is set to 
+always on, it is also considered.
+
+
+[BATTERY LAZYNESS]
+
+The battery voltage gives no realistic hint to the actual charging status when 
+the charger was just turned on or off.
+
+Assume a 50% full battery and then turn on the charger. The voltage goes up. But 
+the voltage is smaller than the voltage of a 50% full battery when the charging 
+started at 0%.
+
+To consider this (and make a better remaining time estimation possible), I 
+implemented the battery lazyness array. It means (in simple words, let's assume 
+the charger is turned on):
+
+- if the charger is just turned on, calculate the battery status (percentage)
+  out of the voltage for decharging (even if we actually charge)
+- after 20 minutes of charging, calculate the battery status out of the voltage 
+  courve for charging
+- inside these 20 minutes, mix the voltage courves (another array in
+  powermgmt.c tells how)
+
+
+[WHICH CHARGING MODE TO USE]
+
+(trickle charge on and off not implemented yet!)
+
+If you use your AJB connected to the power supply the whole time, select "deep 
+discharge on" and "trickle charge off".
+
+If you want to charge your AJB over night and take it with you the next day, 
+select "deep discharge off" (that it starts charging immediately) and "trickle 
+charge on" (that the batteries remain full).
+
+A special case: If you fill up the batteries that are still nearly full every 
+night, it is recommended that you make a complete charge cycle from time to 
+time. Select "deep discharge on" and "trickle charge on" and wait till the whole 
+cycle is over (you can speed up the discharging a little bit by turning on the 
+LED backlight). Even if the battery sellers say NiMH cells don't show a memory 
+effect, I recommend making this procedure from time to time (every 10th charging 
+cycle). BUT: Don't recharge the batteries completely every time if you don't 
+have to.