I've been meaning to put together a cell cycle tester for about a year now, and finally seem to have got around to it. It came about because I would often test a cell or several cells in a battery by load testing with a roll of galvanised wire and a current clamp, along with a stopwatch. It's good for testing capacity and discharge curve, but what I really need to know is, will it do this 100 times? Or 1000 times?
So a robot is required to repeat the discharge/recharge cycles. I'll get onto the code for the program in a later post, but the circuit is something like this:
I have an automotive relay for discharging, an auto relay for re-charging, a load consisting of nichrome wire (which can be adjusted depending on the load) and a charger, which in my case will be a fairly powerful 9 V power supply. Maximum currents are in the order of 20 to 40 amps, but voltages are always below 8.4 V since I'm going to be testing two LiCo cells in series. It's a means of ensuring the termination system is tested too.
Additional features are the 50 mV current shunt and a voltage divider which will turn the 8.4 V maximum down to a 4.2 V signal good enough for the AIN port to read.
Now, I'm using an Arduino Uno and the program is really quite simple. I'm not planning on getting the unit to log data at this stage, although it will no doubt be possible. I simply want to use the stopwatch and current meter method on the first, second, third, fifth, tenth and 20th cycles, and then maybe every 20 cycles after that. I should get an indication of cell cycle life by about the 40th cycle.
The program is going to be something like this:

I could include some counting feature, but I can determine how long it takes to do one cycle and extrapolate from there.
Digital output 13 is for the discharge relay, which is driven by the Arduino-staple dual relay board, and digital output 12 is the re-charge relay. The power supply would be always on, so it can start charging as soon as the contactor closed.
The Analogue input with ground reference is designed to provide feedback on the state of charge. Once the cell approaches 4.2 V, a condition is met where the discharge may commence, but there will need to be a separate program for discharge lest it oscillate rapidly between charge and discharge.
The other analogue input can be from the shunt, which would eventually be used to calculate the number of Ah drained from the battery. But that's for another day.
It's slowly coming together. Hope to be able to start programming soon.
*Edited Sat Jun 18th with up-to-date wiring diagram.