Active Topics

 


Reply
Thread Tools
Posts: 306 | Thanked: 566 times | Joined on Jan 2010 @ Romania
#1
Measuring battery mAh is not a true indication of health.
I propose check internal battery resistance.
Some theory:
Suppose if you have an battery charged to 3.7 V and this battery have Rint = 1 ohm. trying
to charge with 500 mA will fail because voltage drop on internal resistance will be 0.5V and
across batt conections will be 4.2 V and charger will say "enough"
when a such battery power a device and that device sink 500 mA the voltage at battery
conectors will drop 0.5V and the device will shut down. Large resistance is a bad thing
Worse, trying to charge with elevated current let say 1.2A the internal resistance will
decrease max final voltage . For ex. 200 mOhm will limit final voltage to 4.2V - 1.2A x
0.2Ohm = 3.96 V ! quite discharged battery !!

Internal resistance makes its presence felt even when battery discharge. 100 mA load, 200
mOhm resistance -> add 20 mV to cutt of voltage thus will limit swing value of battery
voltage from charged to discharged. from teoretical 1V ( 4.2 down to 3.2 ) to 4.18 - 3.22 =
0.96
For obvious reasons limiting charge current to 100 mA when battery voltage is above a limit,
is a must.
n900 final charge current is ~100 mA.

so
200 mOhm ~~ 4% wear @ 100 mA, 20 % @ 500 mA load current
500 mOhm ~~ 10 % @ 100 mA, 50% @ 500 mA
A battery with increased internal resistance can drive a wall clock but not an N900
From similar n900 battery datasheet @1300mAh the resistance of a new battery is @ 50 mOhm.

bq27200 sense resistor add 20 mOhm to this value and copper traces and few mOhm also.
Until now I have no idea about resistance of battery protection circuit
N900 consumption vary from 5mA to 300>>500 mA on heavy jobs , hostmode, high brightness,
....

Estimating wear is not a guess but not precise as we want.
Anyway, i make a script for measuring batt Rint. ( guest star bq27200 )

Attach a charger and run ( as root ) the attached code
The script is not finished! I can't find any info about r_sense resistor influence for
bq27200 voltage readings.

Code:
setbr(){
gconftool-2 -s /system/osso/dsm/display/display_brightness -t int $1
}
readbq(){
[ $(($(i2cget -y 2 0x55 0x0a))) -ge 127 ] && s="-" || s="+"
i=$s$(($( i2cget -y 2 0x55 0x14 w ) * 357 / 2 ))
v=$(($( i2cget -y 2 0x55 0x08 w)))
}
getiv(){
n=0;i0=0;v0=0
while [ $n -lt $samples ]
do
sleep 6
readbq
i0=$(($i0 + $i));v0=$(($v0 + $v))
n=$(($n+1))
done
i=$(($i0 / $samples ));v=$(($v0 / $samples))
}
[ $(cat /sys/class/i2c-adapter/i2c-1/1-0048/twl4030_usb/vbus) = 1 ] && rc=0 || rc=20
samples=5
setbr 1
sleep 3
getiv
ilow=$i
vhigh=$v
stop -q bme
/usr/sbin/i2cset -y -m 0x07 2 0x6b 0x01 0x06
setbr 5
sleep 3
getiv
ihigh=$i
vlow=$v
i=$(( $ihigh - $ilow ))
v=$((( $vhigh - $vlow ) * 1000000 ))
setbr 2
start -q bme
rint=$((( $v / $i ) - $rc ))
echo Battery Rint $rint mOhm.
__________________
Automatic speed Hostmode

Last edited by blue_led; 2012-01-09 at 23:00.
 

The Following 3 Users Say Thank You to blue_led For This Useful Post:
Kangal's Avatar
Posts: 1,789 | Thanked: 1,699 times | Joined on Mar 2010
#2
This doesn't apply strictly to the N900, all e-devices will lose capacity over time. I have a program on Win7 for this, theres plenty for nix, possibly one for Android.

What I like to know is how fast the battery , or more specifically how fast do I need to upgrade my phone/tablet/laptop
 
Estel's Avatar
Posts: 5,028 | Thanked: 8,613 times | Joined on Mar 2011
#3
Originally Posted by Kangal View Post
all e-devices will lose capacity over time.
Increased resistance is not about capacity loss. It may also happen, if battery is charged/discharged out of sane limits, i.e. used not in proper way. Capacity tests won't show difference, but real usage will. That's what blue_led is trying to say, IMO.

Interesting idea. Is the script ready enough, to be considered 100% safe for running (i.e. may give false results, but won't treat battery badly, or blow up charging circuit/fuel gauge? )

/Estel
__________________
N900's aluminum backcover / body replacement
-
N900's HDMI-Out
-
Camera cover MOD
-
Measure battery's real capacity on-device
-
TrueCrypt 7.1 | ereswap | bnf
-
Hardware's mods research is costly. To support my work, please consider donating. Thank You!
 

The Following User Says Thank You to Estel For This Useful Post:
Posts: 1,258 | Thanked: 672 times | Joined on Mar 2009
#4
I didn't check what your script does, but about 6 months ago I used an early version of SpeedEvil's internal resistance script to examine my batteries.

Involved batteries: Fresh unused (less than 5 cycles) Japod, Slightly used eastmaze, unused eastmaze, somewhat used Mugen 2400mAh, and two Nokia BL-5J. The crappier BL-5J came from Nokia Care with a replacement phone, and sat mostly unused and empty in a drawer for 6 months. The other BL-5J was brand new when I got it, has been in continous normal daily use, and I measured it at 160 cycles and at 230 cycles of use.




The above image shows how the internal resistance changes with voltage and state of charge. The internal resistance was continously estimated until battery ran empty.

Another way to interpret this data is to ask the question "How much voltage do I need at zero load to be able to sustain enough voltage at maximum load?". For maximum load I picked 1A (in attempts I've actually pushed my N900 to 1.3A for short periods of time). For "safe" voltage I picked 3248mV, which is the voltage at which bq27200 recalibrates itself, and close-ish to voltage at which bme initiates shutdown.



As you can see above, the fresh Japod, and unused Eastmaze battery would be able to theoretically provide sufficient power to the N900 all teh way down to 3425 or so. The mugen thanks to its sheer size also does well, while t


And finally, just the recorded voltages during the test:



It's remarkable how the Japod maintains a high voltage rigt until the end, when it collapses quite rapidly. Note that the voltage scale goes all the way down to 2600mV on this graph.
 

The Following 2 Users Say Thank You to shadowjk For This Useful Post:
Posts: 1,258 | Thanked: 672 times | Joined on Mar 2009
#5
Originally Posted by blue_led View Post

Suppose if you have an battery charged to 3.7 V and this battery have Rint = 1 ohm. trying
to charge with 500 mA will fail because voltage drop on internal resistance will be 0.5V and
across batt conections will be 4.2 V and charger will say "enough"
Actually it will reduce current to less than 500mA, in order to not exceed 4.2Volts. bme programs the charger to stop when the current has been reduced to 50mA. This never happens after PR1.3, as the USB subsystem consumes 60-80mA itself and is active whenever a charger is connected.

The script is not finished! I can't find any info about r_sense resistor influence for
bq27200 voltage readings.
bq27200 measures battery voltage through a 10kOhm resistor connected to battery bus.

In addition to battery internal resistance, there's also about 120-130 mOhm resistance between the charging chip and the battery, which adds resistance when charging. The charging chip measures voltage before this resistance, so the voltage that arrives at the battery is lower than 4.2Volt. It makes charging a bit slower, and the final charge voltage will depend on system load.
 

The Following User Says Thank You to shadowjk For This Useful Post:
Estel's Avatar
Posts: 5,028 | Thanked: 8,613 times | Joined on Mar 2011
#6
Originally Posted by shadowjk View Post
bme programs the charger to stop when the current has been reduced to 50mA. This never happens after PR1.3, as the USB subsystem consumes 60-80mA itself and is active whenever a charger is connected.
AFAIK, it's fixed in one of two main community projects - CSSU or KP. Anyway, on my device with both installed, this effect doesn't occur (and was present in ancient times before CSSU and KP).

/Estel
__________________
N900's aluminum backcover / body replacement
-
N900's HDMI-Out
-
Camera cover MOD
-
Measure battery's real capacity on-device
-
TrueCrypt 7.1 | ereswap | bnf
-
Hardware's mods research is costly. To support my work, please consider donating. Thank You!
 
Reply


 
Forum Jump


All times are GMT. The time now is 10:26.