Let's Make Robots!

NiCad vs NiMH batteries

I wanna buy a charger and some batteries so I've been doing a bit of research on the different types. However the information I found is somewhat confusing and outright contradictory. And in any case I'd like to hear about the experiences you guys have had using NiHM and/or NiCad batteries...

Which would be the better choice? Pros and cons?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Basically NiCad are heavier and have a lower power capacity but deliver higher current. Also cadmium is bad for the environment.

NiMH are lighter and hold more energy but can`t deliver as much maximum current as the older NiCad cells.

Most robot builders choose NiMH over NiCad because of its better weight/power ratio and that is what I would suggest doing too.

Thanks for the advice and sorry for the late reply. I actually forgot about this thread.

However I was planning to get NiMH batteries, but then I read that their voltage supply is much more unstable than NiCad batteries once you start pulling a few amps. In fact I read that it was recommended to use NiCad if you're using more than 8 servos. Since I'm planning to use 12 (for starters) I thought perhaps I would get a lot of decoupling problems and whatnot using NiMH. But NiCad batteries do seem like a bit of a hassle so I'd rather avoid them if possible...

Adding NiMH in parallel = less current draw per cell = less voltage sag under heavy load.

Yes but I think then I wouldn't be able to use 4 x 1.2V (AA) batteries as I would like..I would need 8 batteries..correct?

I mean if I connect batteries in parallel I increase the current capablility and in series I increase the voltage right?

Nevermind that..I asked mr. google and he confirmed my belief..

The thing is 8 AA batteries is to big and heavy...but perhaps you had something else in mind?

Nope, 8 AA is what I had in mind. Are you sure 8 will be too heavy on a project that uses 12 servos?
NiCd AA's don't store much power compared to NiMH so you may find the lifespan of a fully charged set quite low when drawing high currents. If you go for an RC-style NiCad pack then you're already be adding quite a lot of weight.

8 AA batteries is definately too much. It's a small lightweight quadroped and I'm be using 12 x DAGU 8gr microservos. The thing is though these cheap small servos have surprisingly high (peak) current draws. I know that the somewhat equivalent HTX900 and TowerPro SG90 peak around 750mA, so I presume mine are about the same. I'll do some testing ASAP though.

I guess I'm mainly worried because an important part of this bot is that I'll be measuring the current draw of ALL the servos in realtime in an atempt to create a sorta robotic nervious system. I'm currently working on a shield for my Arduino with 12 x 0.51 Ohm shunt resistors, 1 x shift register and 2 x multiplexers to be able to do this.

Anyway too much voltage sag would severely mess with my readings I'm afraid. Perhaps I should find a way to measure the actual voltage supplied by the battery pack (also in realtime) and use this as a reference to get more precise current draw measurements?! :/

If the shunt resistors are between the servo and ground then you don't need to calibrate for varying supply voltage =)

Classic Ohm's Law will give you [servo current] = [shunt voltage]/[shunt resistance], where [shunt voltage] = [shunt high-side voltage] - [shunt low-side voltage].
In this case however [shunt low-side voltage] = 0V, because it's connected to ground, so [shunt voltage] = [shunt high-side voltage] - 0V = [shunt high-side voltage]
Then your equation becomes [servo current] = [shunt high-side voltage]/0.51Ω, which is nice and easy, with no need to worry about the supply voltage.

Are you planning on getting analog readings for the servo current draws?
Edit: Heh, totally forgot about that big thread you started back in September!

I didn't forget about this idea that started back then (my 1st thread on LMR). I'm just slow due lack of time, lack of electronics/mecanics skills, limited access to parts and the fact that I started another project in the meantime: a wheeled mapping robot. I was originally planning to use the walker as a mapper as well but decided to do two seperate projects instead. The plan is to merge them at some point though.

And yes the shunt resistor IS between the servo and the ground. Basically I ended up with my original idea just with a 0.51 Ohm resistor instead of a 6 Ohm resistor. Like this:


I did quite a bit of testing and it works fine.

I'm glad to hear that the stability of the voltage supply wont affect my readings. Allthough I don't fully understand it, it does make sense. I originally calculated that I needed a 6 Ohm resistor to get a full resolution (Arduino ADC = 0-5V) like this:

Rsense = Vsense / Iservo => 5V / 0.75A = 6.666.. Ohm (given a peak current draw of 750mA)

And I notice now that the supply voltage ISN'T part of that equation. So I presume you're right :)

However if the batteries simply can't supply the current that a servo is TRYING to draw at a given moment it would still give me a wrong idea about the stress/load of the servo?! Or did I misunderstand something again?! :/

I think the main point of NiCad or LiPo maximum current draws are for brushless motors which really pull the amps. You should have no problem with a dozen servos on NiMh.

But here is a quote from this article:

"We highly recommend NiMH batteries in applications that call for long duration but not a high amp load.  If you have an aircraft with very large servos that pull a lot of amps or more than 8 standard servos we recommend using NiCAD batteries for the best results."

So I dunno?!