Picture of Laptop Battery Analyzer /Recycler
I started out , when at work they had pile of battery packs for laptop computers , that no longer worked. Well I know that most (not all ) Battery packs for Laptops are made up of a bunch of 18650 Li-Ion Battery Cells , and it is usually only one or 2 cells that go bad in a Pack making the entire battery pack no  good. So I grabbed a Bunch of them and took them apart. My use was going to be to use them to power some Bicycle lights. Figured I would charge them up and shouldn't be too hard to find the bad cells using an Volt/Amp Meter , this Worked but not well by any means ,I  soon discovered that a lot of the cells would take a charge , but not much of a charge , found this out the hard way with bike lights that went dark too fast.

So I came up with this Idea of using a Computer , with an analog input, and would read the out put of the battery across a load over time to determine how much energy the battery cell could store.   My first attempt was using an old PC with a Metrabyte DAS-8 A/D board . It was basic , I would manually connect the load start teh data collection, stop it after time , and then using excel determine the amount of energy in the Cell.  But I wanted to do this more automatically . I was using an Ardunio for another project ( which will soon have an instructable for it )  and realized it had all that I needed to do this . so I made the switch and it was a lot easier to wire up , program and took up a lot less space.
tony_roti made it!2 days ago

I used a prototype board too. This is how it looks. I chose to use a push-button to start the test whenever i want. If the button is not pushed, the tester acts like a voltmeter. I also added a call conversion function in source code to convert the seconds into human readable time (like hours:mins:secs). I also use it a lot.

mkhan812 months ago
Is there any limitation on the resistor used ? i am using a 5.6 ohm 10 watt resistor ... i read in a similar project that the resostance should be less than 4 ohm ... please clarify
TimoM9 months ago

I just can get an 3.9 Ohm 9W resistor.
I'm right that I must change this line

mah = mah + (((sensorValue*4.98)/1023)/4 )/7.2;


mah = mah + (((sensorValue*4.98)/1023)/3.9 )/7.2;
or is there something else to change?

I=V/R so I = sensorvalue (V) / Resistance (Ohm)

You are right. For more precision, check the total resistance of your circuit with a multimeter and use this value in your program.

Roger Gaudreault made it!10 months ago

It works! Now I will check my diving lamp batteries... I'll soon solder all parts to a prototype board and use it regulary. Thank you all.

ps: I removed the push-button switch and added a buzzer. :)


I'm building this project, and I have the same problems than tony_roti. I'm wondering: Do we absolutely need a push-button switch? All my problems seems to come from here. I will modify the program to start automatically when the voltage is above 3.00 volts. Thank you splats for this nice project and all others for your constructive comments.

Does this work for 26650 batteries too? They basically have the same voltage, and just more mAh than 18650.

tony_roti1 year ago
I think that you must put a lcd.clear(); before final result are printing. And delete spaces in lcd.print(" V "); and lcd.print(" mAh ");
Why? Because if you test a cell with bigger capacity (4 digits), you won't be able to read the final digit of timing.
tony_roti1 year ago
I was wonder if it can be adapt to measure the capacity of Ni-Mh/Ni-Cd 1.2V cells? In that case the load rezistor must be 2.8Ohm if we want a 500mA discharge current right?
I think the safe discharge voltage for this tipe of cells is 1Volt.
tony_roti1 year ago
It's working great. Fantastic job. I have tested several god and bad cells. Especialy one that came with a cheap chinese flashlight, that says 4200mA, after I tested it, has only 729mAH.
Thank you splats for sharing.
tony_roti1 year ago
Hi splats! Great idea. I have placed everything in order but I still have 2 problems (one solved):

1. Wrong or no Initialization of the display: My LCD consistently showed black boxes in the bottom line. I've made some changes to fix this: since I don't read from the display, I've put the pin 5 of the display (RW) to the ground and use pin 4 (RS) and 6 (E) of the display for LCD initialization. I did use a potentiometer for brightness control and a 10Kohm resistor on pin 15 of the LCD for dimming the light of the display. I left everyting else in place like you did. Problem number one solved.

2. If no battery is inserted, the sistem displays for a short period of time "Batery life test" and goes directly to final result printing 0.00 mAh, 0s, 0.00 Volts (image no. 1). The relay in this state is off but at every two seconds, the relay is on for a short period of time (miliseconds). If a battery is inserted, the relay goes directly in high state and the sistem goes into the testing mode (image no. 2). This part seems to work well untill the 3V is reached. After that it shortly shows the final result and enter again in testing mode (loop mode - see the video). I have used this relay brick with built in EMF protection: http://www.parallax.com/product/27115. I have put the - IN to gnd, the + IN to 5V and the S pin (signal) to Arduino digital pin 1. The button is conected to Arduino digital pin 0 but it seems that the sistem ignore that. The load resistor in on NO (normaly open) OUT PIN of the relay. I don't know what the problem is.

3. Why do you put the buttonPin on 5V instead of the GND?
Thanks in advance.
Problem number 2 solved. I have used a 10Mohm pull down rezistor for the button. It seems to work fine now.
aLV4261 year ago
Hi Splats - thanks for the feedback! I suppose I should mention you should place an EMF protection diode across the coil of the relay, I can't get over how low the component count on this project is - good work Splats and thanks for sharing!
splats (author)  aLV4261 year ago
SInce I'm using a Solid State Relay , I don't have to worry about back EMF. but if I was powering a straight Relay coil then yes .
aLV4261 year ago
Great idea! Can you help with the relay choice? Does it have to be solid state?
Would this make a good choice?
This is rated @ 8A

This is a standard coil based relay:
I ordered 5V Relay Module for Arduino from dx, rated 10A AC/DC:
I don't know if the relay must be solid state. I think it should work with any 5V relay.
I will see. I'm still waiting for my order to arrive.
splats (author)  tony_roti1 year ago
No it doesn't have to be solid state. I just used one because I have about 100 of them in a drawer. it should work fine with that relay.
splats (author)  aLV4261 year ago
No it doesn't have to be solid state. I just used one because I have about 100 of them in a drawer.
tony_roti1 year ago
I just ordered most parts from dx (Funduino uno R2 compatible - USD$ 12,99, 16x2 LCD display - USD$ 3,40, 5V relay - USD$ 2,20, and some printed circuit board breadboard and jumper cable wires, total USD$ 24,79). Because it takes a lot of time to come (about 40 days), I will write after I put all parts together. I hope it will work.
hedonistic2 years ago
This is a little beyond my knowlage and skill set but I would love to have an 18650 tester. Do you know of any low cost options, or where I could go to have one built?
technitute3 years ago
hey its a great post to teach me buil the technology.
please also share this post here for me please:- http://technitute.com
joen3 years ago
I hope this doesn't sound like a "not nice" comment but you seem to be as spell challenged as I am.(I misspelled about 10 words in this comment alone!) There are a number of words that are just spelled wrong and others that are spelled right but are the wrong word for what was obviously intended.

It is a great instructable but all the misspelled words were rather distracting. I would suggest doing what I do and that is use a word processor program that has a spell checker and correct any misspelled words before copying and pasting your text into the instructable.

This instructable is a little advanced for me but I am keeping it for when I can catch up to it.

Thanks for the idea!
splats (author)  joen3 years ago
None Taken , I went back in an cleaned it up a bit . I just type too fast for my own good sometimes.