Begginers Guide to Processing 18650 Cells | Cell Database


Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Constantin PowerWall
#1
Photo 
Hi,


     I am Constantin from Romania, and i will start the first PowerWall project. 

     I wish to make an modular PowerWall system for easy upgrading.

     I will use 18650 Li-Ion Recycled battery buy-it from dismantling company. 

     For the frame i will use BOSH x shape aluminiu modular frame.
     
     The electronics i will try to use as much i can the DIY circuits.

     
     FIRST STEP  - Battery

     I bought 1000 Li-Ion 18650 Recycled Battery!!! the price was  less then 0.4 usd/cell



     Also some 100 pcs 5x4 support from China



     Imax B6 Charger  - chose that one becouse i can charge also some 6s pacs during the constraction, and also have a lot of function for charge and discharge!


     
     Let's START Building!!

     FIRST PROBLEM - Testing the cells

     If u use recycled cells u need to test the capacity of each one! For that u need only a charger with tester function!

     BUT
 
     Every cell will need about 4 hours to charge and also will need about 6 hours to discharge if u charge it with 0.5Ah, and also discharge with low discharge function. 
     For me my first 1000 cels will take at minimum 10000 hours that meens  416 days if i work 24 hours on day with 1 charger !!!
     The solution is to work with many chargers usuly i see is used the 4 cels version, so if u do the math if i have 16 chargers i will make 64 cels / day that will take about 15 days for 1000 cels. 

      On ebay the option are:

      3.25$ - only the discharge function and 1 battery  for 64 pcs = 208$ + tax
      40$   -  Charger + discharger C3100 - with analyzer function 4 cels, for 64 i need 16 pcs =  640$ - is more expensive then the cells!

      This option was not ok for me!

       Next QUEST - Build an DIY Multi Battery Tester - Charger Discharge
       
       After some documentation i make this solution:

       This is my first Modular 16 Cell Smart Battery Tester

       

       Specification:
       
       Max 8 module - 128 cell
       Charging module - TP4056 with discharge protection at 2.5V
       Charging Curent 520mA - 1A Fix 
       Discharge Curent: 420mA - 250mA by Rezistor Load
       Simultan Charge max 64 cells
       Display LCD 128x64
       Keypad 16 keys
       Smart Option
       Lan/Internet Server
       Online Raport / Email
       SD card Data Storage



       Charging Board:



        Discharge Board



        Battery Holders 3D Printed

        That is it for the moment!

Best regards
Korishan, Lawcomleo, NZ55 And 1 others like this post
Reply


#2
I like the DIY way, but how do you calculate the capacity?, with costant resistor the amperage decreases as the voltage decreases, and when you know that one cell is discharged? you need something else to control the time of discharge at least.

Regards
Reply
#3
(09-04-2017, 06:42 PM)jesusangel Wrote: I lke the DIY way, but how do you calculate the capacity?, with costant resistor the amperage decreases as the voltage decreases, and when you know that one cell is discharged? you need something else to control the time of discharge at least.

Regards

I use 2 analog read from arduino to read voltage before and after the load rezistor. After that I make the difference and I know the voltage droped on rezistor.
After that I can calculate the curent true rezisor Ir=Ur/R the capacity will be Ir*Dt the curent true rezistor multiplay by the time.

The voltage readed before the rezistor is the battery voltage so I can stop the discharge at 2.7 or other settings from microcontroller. Also I use Tp4056 with discharge protection so even the discharge moafet remain open the protection.will cutt of at 2.5V

For the end of charge I read the status of the full charging led from TP4056 after that I disconect the power from charger and connect the discharger, then I repetly check the voltage of battery and the rezistor to calculate the real capacity of battery.

Best regards
Reply
#4
Watched your vids and posted in the video section as you linked your videos there (btw, you can post videos here, too Wink ):
Quote:That's practically exactly what I was wanting to do Smile I really like this work! Nicely explained and laid out Smile Nice walk-through. And your english was just fine!

However, why don't you use an A2D (I think this is what it is) with I2C interface for the analog reading. Wouldn't that allow you to read all the values somewhat at the same time?
Though, I do like the CD4052B variant, as it looks to me like it has 2 leads that switch from pairs of pins at a time (pin 1&2, then 3&4, then 5&6, ...). This would effectively isolate the grounds, yes?

Now, could we use a digital mux for the fets? Reason I ask is cuz I have nano's and would like to use what I already have.

I did notice that you didn't post the code anywhere. I think I can follow the schematic based on what you showed in the video, though.
mrconstantin likes this post
Proceed with caution. Knowledge is Power! Literally! Cool 
Knowledge is Power; Absolute Knowledge is Absolutely Shocking!
Dollar Shave Club. Best Razor I've ever used
Certified 18650 Cell Reclamation Technician
Reply
#5
Hi

U can use Nano with i2c digital mux like PCF8574T and also with analogic mux, but i dont chose this one because nano have only 2k of RAM, and i need to use a lote of longs variabile 4 bytes) for the time how is in milisecs and also floats variabile (4 bytes) for the capacity storage. In my case each module will handle 32 cells so i will need a lot of ram and also procesor time to read and calculate the capacity.
The other reason i dont chose nano is because nano have 12 digital pin (0 and is for serial) and mega have 52 , so if i need same amount of digital i/0 i need to use nano with 5 PCF8574T and the price will be same as a mega.

For analogic i chose to multiplex the exits because the mega is not multithred procesor, i read one serial each time, so i can use an cd 405x series for that.

In my design i can connect 4 module of 32 cells with the control module - i use an mega as control module, i conect to this the keyboard the display and the w5100 network module, the mega have 4 hardware serials and true serial i send and receive status from each charging/discharging module so even i will enter in menu setting or i try to make an sever command true network the charge and tester will continue to operate independent and will calculate the real battery capacity.

Also in this design u can make 1 module and upgrade if u need more slots.

About the 16 slots for 32 battery.
I calculate the charge / discharge /charge cycle for 1 battery is more then 8-10 hours, becaouse i dont want to let the battery empty after the test is done i nned to recharge the battery for storage.
So if i am not home on the cycle is complete or i am sleeping the charger will stay doing nothing, so from my point of view i add an 16 channel relay how change the battery on slots, so my charging slots will have 2 battery each, so for this relay i also need some digital pins, but i used from the control mega how have used less (display, keyboard w5100). In this whay my charging discharging slots will work minimum 20 hours/ day, and i can change the complete charged battery without stop the process.

i dont upload the source code because is not full completed, i implement the relay option now. I will add more video and data for this project.

best regards
Korishan and Lawcomleo like this post
Reply
#6
Kewls!
I hadn't thought of the memory limitation before. We get so used to being able to just use any memory type when programming on our computers, that we forget about the small devices with limited storage.
Here's a thought:
Use several variables to do the calculations.
Code:
int mTime;
int leftTime;
int rightTime[];
long calcTime;

mTime = millis();
leftTime = mTime / 1000; //basically move the decimal left 4 places and store that in the leftTime. Being put in an int removes the trailing decimal numbers, right?
rightTime[i] = mTime - (leftTime * 1000); //now subtract to acquire just right portion of mTime

//then in the loops, we just use this to get the proper time again
calcTime = (leftTime * 1000) + rightTime[i];

Not sure if that would work or not. But, since an int is 1/2 the size of a long, it would save memory in the long run. Though, it would add a little processor load to do the calculations when doing the math portions in the loops.

Buuuut, I could be completely bogusly wrong here Tongue
Proceed with caution. Knowledge is Power! Literally! Cool 
Knowledge is Power; Absolute Knowledge is Absolutely Shocking!
Dollar Shave Club. Best Razor I've ever used
Certified 18650 Cell Reclamation Technician
Reply
#7
(09-04-2017, 09:06 PM)Korishan Wrote: Kewls!
I hadn't thought of the memory limitation before. We get so used to being able to just use any memory type when programming on our computers, that we forget about the small devices with limited storage.
Here's a thought:
Use several variables to do the calculations.
Code:
int mTime;
int leftTime;
int rightTime[];
long calcTime;

mTime = millis();
leftTime = mTime / 1000; //basically move the decimal left 4 places and store that in the leftTime. Being put in an int removes the trailing decimal numbers, right?
rightTime[i] = mTime - (leftTime * 1000); //now subtract to acquire just right portion of mTime

//then in the loops, we just use this to get the proper time again
calcTime = (leftTime * 1000) + rightTime[i];

Not sure if that would work or not. But, since an int is 1/2 the size of a long, it would save memory in the long run. Though, it would add a little processor load to do the calculations when doing the math portions in the loops.

Buuuut, I could be completely bogusly wrong here Tongue

float getVoltage(uint8_t pin){ //read voltage from analog pins
float sample=0.0;
for(uint8_t i=0;i<readSample;i++){
sample+=analogRead(pin);
delay(2);
}
sample=sample/readSample;
return (float)sample*Vcc*2/1024; //Vcc =5V i use an 10k rezistor diverer to pull down the analog pin and better reading
}

The code for the capacity:

            float _batVoltage=readBatVoltage(i);               //read the battery voltage
            float _mosfetVoltge=readMosVoltage(i);          //red the mosfet voltage 
            long _now=millis();                                       //time in millisecs
            long _timePassed=_now-lastRead[i];
            lastRead[i]=_now;
            float current=(_batVoltage-_mosfetVoltage)/RES_VALUE *1000; //in mA   // RES_VALUE was 10ohm in my case
            batteryCapacity[i]+=  current * (_timePassed / 3600000.0); // in Hours


From IRLZ44N Specs the RDSon is only 0.022 ohm, so the voltage dropped on mosfet is less then 0.01V can be ignored. I make few tests and its a fact. 
If u use N MOSFETS with big RDSon on 5V like the non logic mosfets u will need to measure the voltage dropped on the MOSFET.

On IRLZ44N u dont need to do that, so u can use only 1 Analog pin to measure the voltage true the resistor.

Best regards
Reply
#8
Hi

     Today was testing day for my Multi Charger / Tester Unit!!

      I make some modification on design i use an 8 channel relay for each 16 charger pack to handle 32 battery. every cycle will takke about 8 hours to charge - discharge - recharge so usuly in 24 hours i will be able to test 2 battery for each charger soket.

      

      This is my firs complete test unit, with 16 sokets and 16 cell hoked up.

       

      

      I make some test with 8 cells, and all the data was send it by serial connection because the central control unit is not finished yes.
      From my test i discover the IRLZ have an internal RDSon ot only 0.022ohm so the dropped voltage on mosfet is less then 0.01V, so u can read only the rezistor voltage on discharging u dont need 2 analog Pins to make the math.
      Also if u dont want to have strange voltage reader u need to use an resistor divider to pull down the arduino analogic pin.

      I compare my result with the Imax B6 and will be a difference about 100mA in readings. I think is because Imax make CC discharge and my will make an VC discharge because i use an static resistor load. 
      For me will no be a problem i can see what cels are broken and also can pair them by the capacity.

      

Best regards
Reply
#9
Hi,

I like to DIY but when there are so much options already made by our friends from PRC why bother?
I use This tester and made a plate with 6 of them and alo charge with standard TP4056.




P.S. Greetings from Romania  Rolleyes
Reply
#10
(09-06-2017, 09:00 PM)KaminoReal Wrote: I like to DIY but when there are so much options already made by our friends from PRC why bother?

Flexibility, super logging ability, semi-automation, easy expandability, space conservation, and the DIY factor  Wink   Plus you get to learn things.
KaminoReal likes this post
Proceed with caution. Knowledge is Power! Literally! Cool 
Knowledge is Power; Absolute Knowledge is Absolutely Shocking!
Dollar Shave Club. Best Razor I've ever used
Certified 18650 Cell Reclamation Technician
Reply


Who read this thread?
100 User(s) read this thread:
Chickey (09-14-2017, 11:27 AM), daromer (09-17-2017, 06:04 PM), mike (09-07-2017, 07:32 PM), AveRageJoe (09-18-2017, 03:56 AM), NiVa (09-18-2017, 11:01 PM), Lux_Gamer (Yesterday, 04:01 PM), owitte (09-18-2017, 09:25 AM), Majorphill (09-14-2017, 10:00 AM), BatteryDIY (09-07-2017, 10:58 PM), ruby2 (09-15-2017, 05:02 AM), Korishan (09-18-2017, 12:05 AM), A + A (09-12-2017, 01:10 PM), PAF (09-17-2017, 08:22 PM), FERCSA (09-05-2017, 08:14 PM), whisperbot (09-17-2017, 07:16 PM), Tristan Timmer (09-04-2017, 08:55 PM), flight4900 (09-08-2017, 11:26 AM), jdeadman (09-18-2017, 12:07 AM), charlie246 (09-10-2017, 08:01 AM), wim (09-17-2017, 06:39 PM), wimpie007 (09-17-2017, 09:26 PM), frnandu (09-15-2017, 08:59 PM), typ49 (09-13-2017, 12:59 PM), The-J-Man (09-08-2017, 08:37 AM), Jeremy Choy (09-15-2017, 07:33 PM), Abarth595 (09-17-2017, 06:24 PM), kktuo (09-14-2017, 08:56 PM), Off Grid Power wall (09-15-2017, 10:57 AM), Em Em Silverghost (09-18-2017, 11:22 AM), kaits31 (09-06-2017, 09:42 PM), watts-on (09-18-2017, 02:07 PM), Dan Lim (09-17-2017, 09:53 AM), jesusangel (09-18-2017, 03:13 PM), Hanssing (09-17-2017, 07:59 AM), IronSky (09-17-2017, 06:20 PM), silverse2m6 (09-04-2017, 04:46 PM), ismaildoganw (09-06-2017, 02:42 AM), Stefaan De Ridder (09-17-2017, 06:16 PM), systemtm (09-06-2017, 07:50 AM), Lawcomleo (09-09-2017, 08:55 PM), Johnny Stauersbøl (09-14-2017, 06:44 PM), brafi (09-17-2017, 07:32 PM), Nitroghost (09-06-2017, 11:36 PM), Terry (09-14-2017, 02:20 PM), N00bPwr (09-14-2017, 06:56 PM), KaminoReal (09-17-2017, 07:55 PM), Robert Crawley (09-08-2017, 05:12 AM), KtB (09-17-2017, 06:23 PM), sk8boy204 (09-04-2017, 05:40 PM), Seedser (09-18-2017, 12:37 PM), paraskevas (Yesterday, 05:26 AM), kiwi (09-18-2017, 12:56 PM), Ben Hekert (09-06-2017, 05:29 PM), ivnz (09-18-2017, 08:07 AM), iceisfun (09-17-2017, 09:42 PM), Geek (09-18-2017, 02:06 AM), TAGG (09-17-2017, 07:57 PM), Dave Tucker II (Yesterday, 03:06 AM), Rad (09-15-2017, 05:47 AM), SWEwall (09-14-2017, 07:57 PM), Jon (09-18-2017, 02:27 AM), WildCard_25 (Yesterday, 09:34 AM), Ivo Staelens (09-17-2017, 05:58 PM), Mrsmith (09-07-2017, 10:45 AM), jamesk9 (09-15-2017, 11:38 PM), mr_hypno (09-17-2017, 12:03 PM), NZ55 (09-17-2017, 08:16 PM), floydR (09-17-2017, 07:30 PM), AlexCPU (09-18-2017, 10:42 AM), SimonW (09-18-2017, 03:50 AM), Oshey (09-18-2017, 08:09 PM), ryan.nguyen (09-13-2017, 10:45 AM), sunseeker (09-18-2017, 12:53 PM), grgdgreek (09-18-2017, 02:58 PM), Rahtid27 (09-05-2017, 12:39 AM), DarkRaven (09-05-2017, 12:19 AM), druss56 (09-17-2017, 12:52 PM), mrconstantin (09-18-2017, 09:57 AM), Patrick Moreau (09-05-2017, 12:14 AM), mgiljum (09-05-2017, 01:56 AM), tomganleylee (09-06-2017, 05:04 PM), nautal (09-13-2017, 10:46 PM), Grumplestiltskin (09-18-2017, 05:04 PM), Tinkerman (09-06-2017, 07:46 AM), srk (Today, 02:56 AM), Lojernator (09-07-2017, 05:30 AM), Rad Mission (09-12-2017, 01:16 PM), upcdm22 (09-08-2017, 09:53 AM), KallieMarie (09-09-2017, 09:56 AM), ehampshire (09-08-2017, 05:51 PM), Lucian Macota (Yesterday, 04:39 PM), Lê Đình Trí (09-09-2017, 02:55 AM), juanki23 (09-09-2017, 04:53 PM), Stuart Pittaway (09-15-2017, 01:00 PM), zag2me (09-17-2017, 07:26 PM), erikcw (09-12-2017, 04:29 PM), BernieS (09-18-2017, 06:43 AM), priba83 (09-13-2017, 08:11 AM), blackwolf.n (09-13-2017, 07:29 PM), technojunkie (09-13-2017, 10:06 PM)

Forum Jump:


Users browsing this thread: 1 Guest(s)