Introduction: DIY Li-ion Capacity Tester !

About: Hi, I'm Nemeen, Electronics Enthusiast! I have seen a huge decline in electronics hobbyist in past few years. I started this channel in order to inspire you to create. Hopefully, you will find something that …

When it comes to building the battery packs, Li-ion cells are one of the best choices without the doubt. But if you get them from old laptop batteries then you might want to do a capacity test before building the battery pack.

So today I will show you how to make a Li-ion capacity tester using an Arduino.

So let's get Started!

Step 1: Watch the Video !

If you don't want to read all the stuff you can watch my video!

Step 2: Everything We Need

Step 3: What Is Capacity !

Before building the capacity tester we must know what is capacity. Unit for capacity is mAh or Ah. If you take a look at any Li-ion cell they will mention its capacity on it as one shown mentions 2600 mAh on it. Basically what this means is that, if we connect a load across it which draws 2.6A then this battery would last for an hour. Similarly, if I have a 1000 mAh battery and load draws 2A then it would last for 30 min, And this is what an Ah or mAh means.

Step 4: Practically Not Possible

But calculating in this way is practically not possible because we all know V=IR. Initially, our battery voltage will be 4.2V if we keep the resistance constant there will be some current flowing through the load. But over the time battery voltage will decrease and so does our current. This will make our calculations much difficult than expected because we will need to measure the current and the time for every instance.

Now to perform all calculations it is not practically possible so here we will use an Arduino which will measure the current time and the voltage, process the information and in the end give us the capacity.

Step 5: Schematic, Code & Gerber Files


I had an SPI OLED lying around so converted it to I2C and used it. If you want to learn how to convert SPI to OLED look at my previous tutorial -

Here is the link to my Project if you want to make changes to PCB and Schematic

Step 6: Working !

And here is how this circuit works, first Arduino measures the voltage drop created by the 10 ohm resistor if it is higher than 4.3v then it will turn off the MOSFET display high voltage, if it is less than 2.9v it will display low voltage and turn off MOSFET and if it is between 4.3v and 2.9v it will turn on the MOSFET and the battery will start discharging through the resistor and measure the current using ohms law. And it also uses the millis function to measure the time and product of current and time gives us the capacity.

Step 7: Soldering !

Then I started the soldering process on the PCBs which I ordered online. I recommend using Female headers as if you want to remove OLED or Arduino for another project later on.

After the soldering when I connect the power sometimes it does not work as expected. Maybe because I forgot to add Pull Up resistors at I2C BUS interface so went back to the code and used Arduinos Built-in Pull Up resistors. After which it works perfectly

Step 8: Thank You !

It works! If you like my work

Feel free to check out my YouTube channel for more awesome stuff:

You can also follow me on Facebook, Twitter etc for upcoming projects

Check out JLCPCB
$2 PCB Prototype (10pcs,10*10cm):