Battery capacity tester


[Moris_zen] built a device to accurately measure the capacity of batteries. He needed to have an accurate measurement for the batteries he uses in a RC airplane. Knowing the discharge time allows him to fly the friendly skies while avoiding crashes from lost communications.

He based the tester around the Arduino platform. Instead of using a pre-built Arduino board he referenced the open source schematics and built the device from components to fit his needs. His solution automatically detects the battery type (Lithium-Ion, Nickel Metal Hydride, etc) based on voltage when the battery is added to the circuit. It then uses a 2.2 Ohm resistor and ADC measurements to take the battery through a discharge cycle. A character display shows status information with the ability to track discharge information using a computer to graph the data.

Apart from flashing an LED this was his first Arduino project. It’s a great use of the platform and much more automatic than other solutions we’ve covered.


  1. Tito says:

    Awesome, I’d love to get one of these!

  2. St.Jimmy says:

    this is how you use an arduino. congrats

  3. Jancans says:

    Vondering, why he use 2 ADC for measuring voltage. A mosfet is used in switch mode, or to control current (that probably would explain why 2 ADC)?

  4. ThanhTran says:

    The 2 ADC are to measure the voltages across the 2.2 ohm resistor. The purpose is too measure the current running through it. The voltage should be used to decide when to stop the discharge process. The current measurement would tell the capacity of the battery (mAh or Ah)

  5. urlax says:

    I think he’s made a mistake. because current is measured in mA and not mAh. mAh = I (in mA) * time (in hour)

    so he uses the 2 ADC’s because he measures on the side which is charged. so the voltage across the battery is not constant, and thus he needs to measure the voltage before, and after the 2,2Ohm resistor. (ADC2 is equal to Vcharger, which may variate during charging)


    if he moved the circuit, he might save one ADC


    (ADC1 will now always be 0)

  6. gyro_john says:

    My LaCrosse BC-900 is also good for this. It charges, exercises and/or tests the capacities of 1 to 4 NiCd or NiMH AA and AAA independently and simultaneously.

    I modified it so I can also work with the sub-C cells found in cordless drills.

    Very handy to be able to easily put numbers to the capacity of rechargeable cells.

  7. Haku says:

    Now that’s a hack! :)

    I’m impressed, the cherry on top would be circuitry+code to be able to peak charge the battery in question, then you can start doing fancy stuff like ‘rejuvination’ by running the battery through some charge/discharge cycles to get it’s capacity back up to a better level. Much like this one which I highly reccomend –

  8. Thomascpp says:

    Whats the point of using a bootloader if you already have a programing tool.

  9. therian says:

    Im afraid this method with so low impedance not valuable for making measurement instead this is great way to ruin battery life quickly.

  10. therian says:

    The biggest mystery, why he use arduino bootloader. The only arduino advantage over uC is no programmer requirement, and it very arguable one(you always cab build programmer with less than 2 resistor).

  11. TNW says:


    A lot of people have started using microcontrollers using Arduino hardware because it’s easy and straightforward. Many people don’t even know about programmers and bootloaders and their functions because that’s not required to mess around with platforms such as Arduino.

  12. tj says:

    This is probably the first Arduino project I’ve taken seriously in a while. It actually shows an effort and practicality.

    urlax pointed out a good refinement for it too

  13. Jancans says:

    Therian, for one NiMH cell 2.2 Ohm will be about only 0.5A In most cases that is less than 0.5C (C – capacity), its safe. Ofcorse everything ruin NiMH/Cd battery life, slov charging, fast charging, slow discharging (this hapens when battery is not used for some time).

  14. therian says:

    a lot of people read before answer. He already have all hardware needed

  15. ApprenticeWizard says:

    Note that standard practice for battery manufacturers is to discharge the battery at 0.1C, then multiply that value by 10 to get the (m)Ah capacity. This is probably why you are getting results that differ from the manufacturer’s stated value.

  16. Dids says:

    Check this out:

    Components needed:
    – an Arduino
    – a battery
    – a computer

    Real-time graphing with screenshot and recording capabilities for easy analysing of different type of batteries and battery life in general.

    Tons of more projects in the works, from xbox’s to nixie tubes. :-)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 96,576 other followers