Legacy Forum: Preserving Nearly 20 Years of Community History - A Time Capsule of Discussions, Memories, and Shared Experiences.

No-load charging woes

Bioloid robot kit from Korean company Robotis; CM5 controller block, AX12 servos..
13 postsPage 1 of 1
13 postsPage 1 of 1

No-load charging woes

Post by StuartL » Mon Apr 07, 2008 8:50 am

Post by StuartL
Mon Apr 07, 2008 8:50 am

I have finalised my charging code (thanks to Kess and Jon for their documentation of Bioloid stuff) and it works perfectly when the servos are in use.

I've just been tinkering with other stuff (I'm working, honest) and connected one of the CM5s up without any servos connected to charge a known flat battery pack. I know it's flat because with 150 ohm resistor on it it reads <0.1v.

The issue is that with no load (i.e. the micro/milli-amps the CM5 takes) on the pack it recovers to ~10.5v. This is above my safe charging threshold of 10.3v (1.29v/cell).

Is my threshold right? Can anyone suggest a decent way to pulse a load onto the cells while they are in a standalone CM5 to check their capacity? Would the same logic hold for NiMH and NiCd?
I have finalised my charging code (thanks to Kess and Jon for their documentation of Bioloid stuff) and it works perfectly when the servos are in use.

I've just been tinkering with other stuff (I'm working, honest) and connected one of the CM5s up without any servos connected to charge a known flat battery pack. I know it's flat because with 150 ohm resistor on it it reads <0.1v.

The issue is that with no load (i.e. the micro/milli-amps the CM5 takes) on the pack it recovers to ~10.5v. This is above my safe charging threshold of 10.3v (1.29v/cell).

Is my threshold right? Can anyone suggest a decent way to pulse a load onto the cells while they are in a standalone CM5 to check their capacity? Would the same logic hold for NiMH and NiCd?
StuartL
Savvy Roboteer
Savvy Roboteer
Posts: 350
Joined: Mon Jun 04, 2007 3:46 pm
Location: Thatcham, Berkshire, UK

Post by Dewey » Mon Apr 07, 2008 11:58 am

Post by Dewey
Mon Apr 07, 2008 11:58 am

Stuart

When you charge a Nicad or NiMH pack you do not normally sense full charge by measuring the absolute voltage. It is normal for a relatively flat battery to read quite a voltage when under no load, similar to your situation as the CM5 load is small.

Charging is normally 'delta' monitored. You measure the pack voltage repeatedly, say 30 secs apart, and compute the change in voltage. As the pack charges this change will reduce, eventually it will reduce to zero, or even slightly decrease (in the case of nicads) as the pack heats up. When this voltage reduces to zero you are fully charged.

Dewey
Stuart

When you charge a Nicad or NiMH pack you do not normally sense full charge by measuring the absolute voltage. It is normal for a relatively flat battery to read quite a voltage when under no load, similar to your situation as the CM5 load is small.

Charging is normally 'delta' monitored. You measure the pack voltage repeatedly, say 30 secs apart, and compute the change in voltage. As the pack charges this change will reduce, eventually it will reduce to zero, or even slightly decrease (in the case of nicads) as the pack heats up. When this voltage reduces to zero you are fully charged.

Dewey
Dewey
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 78
Joined: Sat May 12, 2007 1:17 pm
Location: Worcester UK

Post by StuartL » Mon Apr 14, 2008 8:56 am

Post by StuartL
Mon Apr 14, 2008 8:56 am

Thanks for this, Dewey. I've coded this over the weekend and cycled a few charge/discharge cycles successfully. However the battery appears to be good for less than a few minutes in static 'standing' pose.

When I've decided that the battery needs charging (PSU connected, battery voltage drops below 9.6v) I switch on the charging circuit and monitor the battery voltage once per second. If it does not rise for 30 seconds I stop charging.

Does this logic seem fair to you? If so then my battery is definitely boned...
Thanks for this, Dewey. I've coded this over the weekend and cycled a few charge/discharge cycles successfully. However the battery appears to be good for less than a few minutes in static 'standing' pose.

When I've decided that the battery needs charging (PSU connected, battery voltage drops below 9.6v) I switch on the charging circuit and monitor the battery voltage once per second. If it does not rise for 30 seconds I stop charging.

Does this logic seem fair to you? If so then my battery is definitely boned...
StuartL
Savvy Roboteer
Savvy Roboteer
Posts: 350
Joined: Mon Jun 04, 2007 3:46 pm
Location: Thatcham, Berkshire, UK

Post by Dewey » Mon Apr 14, 2008 3:17 pm

Post by Dewey
Mon Apr 14, 2008 3:17 pm

Stuart I assume you are charging the battery the CM5 is supplied with, which is a NiMH battery.

My experience is that while NiMH batteries provide a better power to weight ratio than nicads when new their useful life is far less. This is not charge/discharge cycles but life as in age of battery. If you CM5 pack is over one year old its probably on the way out.

Your charging stratergy sounds OK, except that I have found microprocessor ADC readings can vary even when reading a steady dc voltage (which is subject to no load variations), I assume due to electrical noise. I would suggest you take say 10 readings half a second apart and average them. Wait 30 seconds and then take another 10 readings and average. Then use the two averages as the criteria for when to stop charging.

If you 9.6 volt criteria is on load its probably a bit conservative. You can go down to 1.1volt per cell on load i.e. 8.8 volts without any damage to the cells. Whether AX12 torque etc.. is Ok down this low you would have to test/try.

Dewey
Stuart I assume you are charging the battery the CM5 is supplied with, which is a NiMH battery.

My experience is that while NiMH batteries provide a better power to weight ratio than nicads when new their useful life is far less. This is not charge/discharge cycles but life as in age of battery. If you CM5 pack is over one year old its probably on the way out.

Your charging stratergy sounds OK, except that I have found microprocessor ADC readings can vary even when reading a steady dc voltage (which is subject to no load variations), I assume due to electrical noise. I would suggest you take say 10 readings half a second apart and average them. Wait 30 seconds and then take another 10 readings and average. Then use the two averages as the criteria for when to stop charging.

If you 9.6 volt criteria is on load its probably a bit conservative. You can go down to 1.1volt per cell on load i.e. 8.8 volts without any damage to the cells. Whether AX12 torque etc.. is Ok down this low you would have to test/try.

Dewey
Dewey
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 78
Joined: Sat May 12, 2007 1:17 pm
Location: Worcester UK

Post by i-Bot » Mon Apr 14, 2008 3:36 pm

Post by i-Bot
Mon Apr 14, 2008 3:36 pm

How is your safe charging threshold value used ?

1.3V per cell for charging seems low. I thought NiMH needed at least 1.41V per cell at 20degrees.
How is your safe charging threshold value used ?

1.3V per cell for charging seems low. I thought NiMH needed at least 1.41V per cell at 20degrees.
i-Bot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1142
Joined: Wed May 17, 2006 1:00 am

Post by Dewey » Mon Apr 14, 2008 4:10 pm

Post by Dewey
Mon Apr 14, 2008 4:10 pm

Stuart

Additional thoughts.....

When you charge a flat battery the voltage rises rapidly initially then slows. The problem is if you use too small a time to do your delta comparison the voltage rise is less than the resolution of the micro ADC and you (incorrectly) stop charging. If you make the time very long then potentially you overcharge the battery before you detect the cutoff!

Now some rough cut maths. The final 60% of your charge (i.e. 60% of the charge time) only results in some 0.3 volts battery voltage rise.

Now 60% of 2.6 AHr(CM5 Battery capacity) is 1.6 AHr if we are charging at 1 amp rate this would take 1.6 hours or say 100 mins. The battery voltage is increasing (assuming linear relationship, which its not!) at 300/100mV = 3mV per minute. This is less than the resolution of the micro ADC and you will terminate charging (if based on a 30 sec time)!

Morale the 30 seconds may need to be increased to as much as 5 mins(or more), to avoid significantly undercharging.

Dewey
Stuart

Additional thoughts.....

When you charge a flat battery the voltage rises rapidly initially then slows. The problem is if you use too small a time to do your delta comparison the voltage rise is less than the resolution of the micro ADC and you (incorrectly) stop charging. If you make the time very long then potentially you overcharge the battery before you detect the cutoff!

Now some rough cut maths. The final 60% of your charge (i.e. 60% of the charge time) only results in some 0.3 volts battery voltage rise.

Now 60% of 2.6 AHr(CM5 Battery capacity) is 1.6 AHr if we are charging at 1 amp rate this would take 1.6 hours or say 100 mins. The battery voltage is increasing (assuming linear relationship, which its not!) at 300/100mV = 3mV per minute. This is less than the resolution of the micro ADC and you will terminate charging (if based on a 30 sec time)!

Morale the 30 seconds may need to be increased to as much as 5 mins(or more), to avoid significantly undercharging.

Dewey
Dewey
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 78
Joined: Sat May 12, 2007 1:17 pm
Location: Worcester UK

Post by StuartL » Wed Apr 16, 2008 7:13 am

Post by StuartL
Wed Apr 16, 2008 7:13 am

Hmm, it seems my 30 second time is nowhere near big enough :)

How about accruing 'points' based upon how long the battery voltage has been below its peak and how far below that peak it has been?

That way when it fluctuates by 20mV (1-bit at 10-bit ADC) it means less than if it plummets 0.5v.

3mV a minute would take 7 minutes (or more) to consistently register on a 20mV scale.

Unfortunately the only other Vref available is 2.56V (from memory), which would give better (almost 2x) resolution in the ADC but at the 4x potential divider scale is only just over 10V. Not enough :(

I need Aref to be about 3V... wonder if it's worth bridging the 3.3v zigbee power output to the Aref pin...
Hmm, it seems my 30 second time is nowhere near big enough :)

How about accruing 'points' based upon how long the battery voltage has been below its peak and how far below that peak it has been?

That way when it fluctuates by 20mV (1-bit at 10-bit ADC) it means less than if it plummets 0.5v.

3mV a minute would take 7 minutes (or more) to consistently register on a 20mV scale.

Unfortunately the only other Vref available is 2.56V (from memory), which would give better (almost 2x) resolution in the ADC but at the 4x potential divider scale is only just over 10V. Not enough :(

I need Aref to be about 3V... wonder if it's worth bridging the 3.3v zigbee power output to the Aref pin...
StuartL
Savvy Roboteer
Savvy Roboteer
Posts: 350
Joined: Mon Jun 04, 2007 3:46 pm
Location: Thatcham, Berkshire, UK

Post by Dewey » Wed Apr 16, 2008 4:59 pm

Post by Dewey
Wed Apr 16, 2008 4:59 pm

Stuart I would not worry about overcharging the battery by increasing the delta time. Even if this time was increased to 15 minutes the possible overcharge would be small compared to its nominal capacity.

Fairly large overcharging, 25%+ of battery capacity is needed to damage the battery pack, the damage mechanism being caused by excessive overheating. Excessive is the word - it is normal for the pack to reach about 50 degrees C in charging to full capacity.

Robotis have the same problem deciding on cutoff in their 'built in' charging code. - Dare I suggest a bit of disassembly?! :twisted:
Stuart I would not worry about overcharging the battery by increasing the delta time. Even if this time was increased to 15 minutes the possible overcharge would be small compared to its nominal capacity.

Fairly large overcharging, 25%+ of battery capacity is needed to damage the battery pack, the damage mechanism being caused by excessive overheating. Excessive is the word - it is normal for the pack to reach about 50 degrees C in charging to full capacity.

Robotis have the same problem deciding on cutoff in their 'built in' charging code. - Dare I suggest a bit of disassembly?! :twisted:
Dewey
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 78
Joined: Sat May 12, 2007 1:17 pm
Location: Worcester UK

Post by StuartL » Fri Apr 18, 2008 7:55 am

Post by StuartL
Fri Apr 18, 2008 7:55 am

Ok, with the stability interval set to 600s (10 minutes) the charger now appears to work reasonably well on one CM-5 but never stops on the other.

This could just be lack of patience on my part or could be that battery pack again.

Further testing will, of course, be done :)
Ok, with the stability interval set to 600s (10 minutes) the charger now appears to work reasonably well on one CM-5 but never stops on the other.

This could just be lack of patience on my part or could be that battery pack again.

Further testing will, of course, be done :)
StuartL
Savvy Roboteer
Savvy Roboteer
Posts: 350
Joined: Mon Jun 04, 2007 3:46 pm
Location: Thatcham, Berkshire, UK

Post by StuartL » Tue Apr 29, 2008 9:35 am

Post by StuartL
Tue Apr 29, 2008 9:35 am

Ok, the charging logic is wrong. Using the delta-v logic with a 10 minute stability window the battery caught fire.

Without the 10 minute window the accuracy of the ADC (20mV) isn't enough to get a decent charge (see thread above and Dewey's comments).

I'm wondering whether the reason the NiMH batteries provided with the kit never last very long on 'full' charge is because the paranoia of the Robotis charging algorithm (to stop the batteries catching fire like mine did on Sunday) is such that it never fully charges them unless they were partially charged to begin with.

As per other thread I'm now seriously considering LiPo, because if I can't trust the charging circuit in the CM-5 to fully charge the battery safely I may as well use a LiPo battery with external charger as a NiMH battery with external charger.

Thoughts?
Ok, the charging logic is wrong. Using the delta-v logic with a 10 minute stability window the battery caught fire.

Without the 10 minute window the accuracy of the ADC (20mV) isn't enough to get a decent charge (see thread above and Dewey's comments).

I'm wondering whether the reason the NiMH batteries provided with the kit never last very long on 'full' charge is because the paranoia of the Robotis charging algorithm (to stop the batteries catching fire like mine did on Sunday) is such that it never fully charges them unless they were partially charged to begin with.

As per other thread I'm now seriously considering LiPo, because if I can't trust the charging circuit in the CM-5 to fully charge the battery safely I may as well use a LiPo battery with external charger as a NiMH battery with external charger.

Thoughts?
StuartL
Savvy Roboteer
Savvy Roboteer
Posts: 350
Joined: Mon Jun 04, 2007 3:46 pm
Location: Thatcham, Berkshire, UK

Post by BillB » Tue Apr 29, 2008 12:17 pm

Post by BillB
Tue Apr 29, 2008 12:17 pm

The NIMH AA cells which make up the Standard Biolid battery pack are rated at 2300 maH. But never seem to last more than 15 minutes even on a full charge. I noticed that the performance of the battery quickly reduced over time. Don't know whether it is the Robotis charging logic of the high current demands of the Servos.

I use LiPos. One of them is rated at only 750 maH - I can get about about 40 minutes continuous use out of it (football, kung fu etc.).

I actually have have 2 lipos for my Bioloid and they each take about 40 mins to charge. When one is in the Bioloid, the other is charging on an external charger. Consequently, I don't need to use the DC adapter anymore. It is surprising how the weight of the DC cable affects the moves.
The NIMH AA cells which make up the Standard Biolid battery pack are rated at 2300 maH. But never seem to last more than 15 minutes even on a full charge. I noticed that the performance of the battery quickly reduced over time. Don't know whether it is the Robotis charging logic of the high current demands of the Servos.

I use LiPos. One of them is rated at only 750 maH - I can get about about 40 minutes continuous use out of it (football, kung fu etc.).

I actually have have 2 lipos for my Bioloid and they each take about 40 mins to charge. When one is in the Bioloid, the other is charging on an external charger. Consequently, I don't need to use the DC adapter anymore. It is surprising how the weight of the DC cable affects the moves.
BillB
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 232
Joined: Sun Aug 06, 2006 1:00 am
Location: Hampshire, UK

Post by StuartL » Tue Apr 29, 2008 4:45 pm

Post by StuartL
Tue Apr 29, 2008 4:45 pm

BillB wrote:I use LiPos. One of them is rated at only 750 maH - I can get about about 40 minutes continuous use out of it (football, kung fu etc.).


That's pleasantly surprising. I was aiming for 2Ah capacity for LiPo per bot so that should give well over an hour for the humanoid and probably about an hour for the snake (it's very current hungry :)).

Thanks for responding, the information is exceedingly useful.
BillB wrote:I use LiPos. One of them is rated at only 750 maH - I can get about about 40 minutes continuous use out of it (football, kung fu etc.).


That's pleasantly surprising. I was aiming for 2Ah capacity for LiPo per bot so that should give well over an hour for the humanoid and probably about an hour for the snake (it's very current hungry :)).

Thanks for responding, the information is exceedingly useful.
StuartL
Savvy Roboteer
Savvy Roboteer
Posts: 350
Joined: Mon Jun 04, 2007 3:46 pm
Location: Thatcham, Berkshire, UK

Post by Dewey » Tue Apr 29, 2008 5:40 pm

Post by Dewey
Tue Apr 29, 2008 5:40 pm

Ouch, sorry about the battery loss Stuart. I suspect it was rubber-ducked anyway.

I think the problems of run time (short) with the standard NiMH pack are probably caused by a combination of problems:

1. There must be real doubt as to whether the CM5 (using Robotis firmware) ever fully charges the pack.

2. The life (as in time age) of NiMH batteries is (from my experience) quite short before their capacity starts to fall off, BillB's experience seems to confirm this. My CM5 battery is 16 months old. I have cycled it and charged it using my Multiplex LN5014 Digital Multicharger. I then performed a discharge to measure the stored capacity. I got a reading of 1.146AmpHrs ! - not good!

3. I have tried to estimate the AX12+ current requirements, I used a bench power supply set at 10 volts and a usb2dynamnixel controller to operate one AX12. Loading it by hand,( i.e. resisting it as I input a position change) I estimate that to hold position against 'resonable' load it draws 0.1 amp. In moving against load it draws between 0.25 and 0.5 amps. If you consider a 18 joint humanoid most joints require holding torque thats 1.8 amps to do nothing. Any movement might sap up at least this much again around 4+ amps! I suspect the battery pack life suffers with this rate of discharge.

Moving to LiPo not only reduces battery weight for the same capacity compared to NiMH but most LiPos are rated at 10 times (or higher) capacity discharge rates. i.e. a 1 hour capacity Lipo can provide safely and without damage/life issues a 10 amp discharge rate.

Dewey
Ouch, sorry about the battery loss Stuart. I suspect it was rubber-ducked anyway.

I think the problems of run time (short) with the standard NiMH pack are probably caused by a combination of problems:

1. There must be real doubt as to whether the CM5 (using Robotis firmware) ever fully charges the pack.

2. The life (as in time age) of NiMH batteries is (from my experience) quite short before their capacity starts to fall off, BillB's experience seems to confirm this. My CM5 battery is 16 months old. I have cycled it and charged it using my Multiplex LN5014 Digital Multicharger. I then performed a discharge to measure the stored capacity. I got a reading of 1.146AmpHrs ! - not good!

3. I have tried to estimate the AX12+ current requirements, I used a bench power supply set at 10 volts and a usb2dynamnixel controller to operate one AX12. Loading it by hand,( i.e. resisting it as I input a position change) I estimate that to hold position against 'resonable' load it draws 0.1 amp. In moving against load it draws between 0.25 and 0.5 amps. If you consider a 18 joint humanoid most joints require holding torque thats 1.8 amps to do nothing. Any movement might sap up at least this much again around 4+ amps! I suspect the battery pack life suffers with this rate of discharge.

Moving to LiPo not only reduces battery weight for the same capacity compared to NiMH but most LiPos are rated at 10 times (or higher) capacity discharge rates. i.e. a 1 hour capacity Lipo can provide safely and without damage/life issues a 10 amp discharge rate.

Dewey
Dewey
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 78
Joined: Sat May 12, 2007 1:17 pm
Location: Worcester UK


13 postsPage 1 of 1
13 postsPage 1 of 1