Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Cell mAh capacity testing. Best/cheapest/fastest way?
#21
Thnx ozz, got it Wink
Reply
#22
Ssamish.. The UNO will work fine, I'll have code fairly soon that should work with the parts you have for one channel.. The only problem is I can't tell what the values of the power resistors you have are, somewhere around four or five ohms up to maybe eight or ten is what you want.

The readout will be through the USB cable to the PC running the Arduino IDE, there are too many different displays to get wrapped up in writing code for any particular one at this point. Looking at my previous code more than half of what I stripped out was oriented to controlling a display.
Reply
#23
Here's the Arduino code for a single channel cell discharger based on a 7506L automotive lamp as the load. I've tested this on a UNO with a relay and it works fine.

Copy  this to your Arduino IDE and run it, you will also need to run the serial monitor from within the IDE in order to see the output of the program.

I have all the parts, including the 'duino to build a 16 channel Arduino Mega 2560 based discharger in my cart at Amazon for under $55.

Now all it takes is deciding on a strategy to make this work on multiple channels.



Code:
float timevalue, current, elapsed, analogvalue5, voltage, milliamphours, cutoffvoltage, finalmah;
void setup()
{
 Serial.begin(9600); //turn on serial monitor
 pinMode(8, OUTPUT); // enable pin 8 for output, just change the number for other available pins
 digitalWrite(8, LOW); // turn on relay connected to pin 8 and may need to be reversed for FET control
}

void loop()
{
 cutoffvoltage =3.25; // Your cell cutoff low voltage goes here
 analogvalue5=0;
 for(int x;x<5000;x++) // this loop gets the analog value of A/D (5) 5000 times and adds it to itself
{
 
 analogvalue5=analogvalue5+analogRead(5);
 
}
 analogvalue5=analogvalue5/5000;  // averages the A/D value
 voltage=analogvalue5*0.005664;   // calculates cell voltage from A/D
 elapsed=millis()/1000; // calculates seconds since program started
 Serial.print(elapsed);
 Serial.println(" seconds discharging");
 milliamphours=elapsed*.2555; // use this number for a Sylvania 7506L 12V lamp as a load for one cell,
                              // different lamps will require different numbers
 Serial.print(milliamphours);
 Serial.println(" milliamphours discharged");  
 Serial.print(voltage);
 Serial.println(" Cell Voltage   ");
 Serial.println();
 if (voltage<cutoffvoltage)
 {
   digitalWrite(8, HIGH); //turns off relay and may need to be reversed for FET control
   while(1) { } // infinite loop to disable program after relay turns off
                // this is a huge kluge just to get things working
                // it won't work for more than one channel
       
 }
   delay(9474); // Delay to slow down the readout and make it more legible
                // updates every ten seconds or so with this number
}
ssamish likes this post
Reply


Who read this thread?
79 User(s) read this thread:
hbpowerwall, daromer, mike, station240, PaulKennett, Lux_Gamer, Majorphill, Elwood, Rerouter, smorgon, ruby2, JustJim, Korishan, A + A, PAF, Janis, FireFrog, APD, pfromero, BitcoinTrader, Aaron Anderson, Batrium, Darmok, ssamish, Wattsup, Elmo, Project, Batteriapan, ozz93666, Tim Jing, BobinTN, hellfire88no, Felineman, memloc, skyfridge, Jadon Brenda, ericg, typ49, 1958 greyhound, civitou, Mark Daniel Olsen, Eric Koshinsky, prads34, electricJolt, Jon, Matthew Nagy, Nmonic, I'm Batman, jesse.rizzo, Han Mohr, misterboo, teccs, yasko, Charly144, SecondHandPower, vanaedium, futurerel, deGrootElectronicsRecycling, ToLiKomm, Matman, hanzon, Perfection88, tomprouse, edd021, plague69, Hannes5613, Beholder, Juan Manuel Sagasti, Jimmycapps, Enaz, jacobbloy, PaulDane, edmalho, zoookii, lpearl, JD McGyver, bertvaneyken, Bigfoot48, G Cthulhu

Forum Jump:


Users browsing this thread: 1 Guest(s)