New project - C++ script for arduino powered battery charger

Hi all,

I have a friend who's trying to build an electric car all by himself and requires some help.

I'll explain in a few lines what exactly he's doing and what he needs.
Basically, we've taken down a few hundred laptop batteries to get out the cells and we're now trying to charge them up.

This is where the fun part begins:

With standard chargers we're able to charge and test ( if cell is OK and retain power ) two batteries at a time. From our calculation, this will take us 3-4 years ( we have 8200 cells ) just to charge and check the cells and it's not helping at all. We have the hardware schema already and we only require the code to power our dreams.

What we've been thinking is that we can build a c++ script for a few arduino boards which will charge a few dozen cells at a time and also point out which cell is faulty.

Problem is, we' have no c++ knowledge and would be great if someone could help us on this. We have a alpha version of this built by someone who's not interested in helping us and it's not really working.

This is what we are trying to do ( see schema attached also ):

  1. Test board: Arduino Mega 2560 + 1602 LCD keypad (blue backlight)
  2. Purpose: multi discharge of Li-ion 18650 cells (5-8 separate channels) with at least 1Ah via Arduino
  3. Features:
  • UP & DOWN LCD buttons having function of cycling through channels (1-8)
  • LEFT & RIGHT buttons having functions of displaying 2 different displays (because only one screen with 2 lines is not enough for displaying all the information needed)
  • SELECT button start discharging selected channel
  • temperature sensor on each individual channel for displaying the highest temperature recorded in discharge cycle (not current cell temp)
  • LED that blink to inform what channel finished discharging
  • 1 buzzer for all channels making a bip sound when one of all channel finished discharging – basically an audio alarm to inform when a channel finished discharging because I will not spend hours near Arduino
  1. Displayed information on each channel:
  • first line: CH number (CH1...8) = 3 chars; Time since discharge – T:000:00 = 8 chars; Total number of characters on first line = 12 chars (including space betwwen values). Example: Ch1 T:112:45
  • second line: cell voltage = V0.0 = 4 chars; State: ON/OFF (discharging or not) = 3 char; Total mAh discharged - 0000mAh = 7 chars. Total number of characters on second line = 16 chars (including spaces). Example: V4.1 OFF 1985mAh
  • first line on second diplay (same channel): cell temperature (in C) – T:00C = 5 chars; Discharge rate – 0000mA = 6 chars. Total number of characters on second line = 12 chars (including spaces). Example: T:24C 1254mA

Now, using UP&DOWN buttons we will move through channels (from 1 to 8) and using LEFT & RIGHT buttons to cycle between first and second display on same channel.

I have attached a rough schema and an our current c++ script. Please let me know if you're interested helping us out and helping the environment.

Best regards,
Cristian

schema.zip (64.4 KB)

This is going to be a pretty involved project. I have done a fair amount of work with automatically characterizing battery charge and discharge profiles and in terms of engineering costs, you're already racking up the hours at a fast clip. Your 1A discharge rates are low enough to make it safer, but I think you will find it's more complex than it appears to be, especially if you need closely matched packs. And I assume you will have to because of the amount of current they will be providing in the vehicle.

The first time I did this, we started out with a rack of Hewlett-Packard 16-bit data acquisition boxes (they were available and already paid for!). It was eventually simplified into a microcontroller with a number of 12-bit analog inputs but that took a lot of work to get to that point.

You're either going to (a) have to learn how to do it yourself (b) find someone who is very excited about the project to work for free and can maintain that excitement over a long time or (c) come up with a lot of money to pay someone.

I'd suggest you not use an Arduino. Go for something with a lot more processing power, like a PC and use the Arduino for data capture/discharge control or buy a couple of cheap USB ADC/digital output controllers. That will speed up development and help control costs.

Alternately, look for battery discharge projects online. Many people have done this work and maybe some of them have already made it available for free.