Introduction: Electrolytic Capacitor Reconditioning

@page { margin: 0.79in }

p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

While I was resurrecting some ancient computer equipment (circa late 1970's), I came across a bit of problem. You will find many people that repair or recondition old electronics will do a wholesale replacement of all the capacitors in what ever they are repairing. Sometimes this is not a practical solution (as was the case with my project). I wasn't terribly worried about the large number of small value capacitors as they were mostly the ceramic type and I haven't had any problems with that type. The big worry was the large electrolytic types, on the order of 5,000 to 80,000 or more micro-farads. Electrolytic capacitors are known to break down over time after sitting unused, sometimes shorting out completely. Electrolytic capacitors this large are very difficult to find and when you do they are very expensive and never the same physical size of the ones you are trying to replace.

After a bit of Internet research, I discovered that it is possible to resurrect or recondition electrolytic capacitors that have been sitting around for a long period of time. In a nutshell, it requires a constant current source and a circuit to cycle between charge and discharge. The charge and discharge cycles will build up the oxide layer that serves as the insulating layer between the conductors on electrolytic capacitors. As the capacitor is cycled, the oxide layer get thicker and thicker and reduces the capacitance value. A large number of cycles over a short period of time may reduce the capacitance to an unacceptably low value.

Step 1: Hardware

@page { margin: 0.79in }

p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

One of the things I wanted to do was to automate the process so I wouldn't have to sit there and monitor the process and push buttons. I added an Arduino to the mix to handle the automation part. I put a simple circuit together for the other bits that would provide a current source and and facilitate charge and discharge cycles. Not shown is a standard Arduino Uno, with a LCD shield. These are off the shelf parts that can be obtained from multiple sources.

@page { margin: 0.79in }
p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

At the top of the schematic is the constant current source. I used a simple LM317 constant current regulator similar to the one found on this page:

http://diyaudioprojects.com/Technical/Current-Regu...

@page { margin: 0.79in }
p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

With the resistor values I used it can be varied between ~2.5 and 125 Milli-amps, which is suitable for this project. I normally set it for the lower end of the scale.

The bottom half of the schematic is the circuitry used for both controlling the charging and discharging of the capacitor and a voltage divider circuit so I can measure voltages above 5 volts. When using the circuit in real life, I encountered some voltage spikes that caused premature triggering of the software, so I inserted a capacitor into the circuit to minimize these spikes.

While the entire circuit could easily be placed into one enclosure, I decide to split it up. I built the Android portion of the circuit in one box and the variable constant current source in another. The reason for this is that I wanted to use the constant current source for some battery charger experiments that I'm planning at the moment.

As far as improvements go, about the only thing I would add would be a 5 volt Zener diode to protect the Arduino input pin. Other than that, the current design is pretty much good to go.

Step 2: Software

@page { margin: 0.79in }
p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

The software portion is pretty simple. I've set values for an upper voltage limit when charging (high water mark) and a low voltage limit when discharging (low water mark). The top of the loop sets the hardware either in charge or discharge mode. The next portion of the code reads an Analog input and convert it to volts. The next section decides if a switch from charge to discharge or vice versa is needed based on the current state and the voltage and increases the cycle count as appropriate. Finally the current voltage and cycle count is printed out the LCD. The actual code follows:

@page { margin: 0.79in }

p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

/*

Electrolytic Capacitor reconditioner

Paul Radu 2-10-18

DC voltmeter portion of the code adapted from:

An Arduino DVM based on voltage divider concept

T.K.Hareendran

*/

#include

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int analogInput = 5;

float vout = 0.0;

float vin = 0.0;

float R1 = 100000.0; // resistance of R1 (100K)

float R2 = 10000.0; // resistance of R2 (10K)

int value = 0;

int CD = 13; // Charge/Discharge control, low for charge, high for discharge. Pin D13

bool CD_Mode = false; // Charge/Discharge mode, True for discharge

int HWM = 12; // High water mark in volts, stop charging and start discharging

int LWM = 1; // Low water mark in volts, stop discharging and start charging

int count = 1;

void setup(){

pinMode(analogInput, INPUT);

lcd.begin(16, 2);

pinMode(CD, OUTPUT);

digitalWrite(CD, LOW);

}

void loop(){

// check for high water and low water marks. Change as needed

if (CD_Mode){

digitalWrite(CD, HIGH);

}

else {

digitalWrite(CD, LOW);

}

// read the value at analog input and convert to volts

value = analogRead(analogInput);

vout = (value * 5) / 1024.0;

vin = vout / (R2/(R1+R2));

if (vin<0.09) {

vin=0.0;//statement to quash undesired reading !

}

// Change CD_Mode as appropriate

if ((vin > HWM) && (CD_Mode==false)) {

CD_Mode = true;

}

if ((vin < LWM) && (CD_Mode==true)) {

CD_Mode = false;

count++;

}

// Print Voltage and count tally on LCD

// clear display

lcd.clear();

lcd.setCursor(0, 0);

// print current voltage reading

lcd.print(vin);

lcd.print(" VDC");

lcd.setCursor(0, 1);

// print cycle count

lcd.print("Count ");

lcd.print(count);

delay(500);

}


@page { margin: 0.79in }
p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

I would probably add a few improvements if the ambition ever strikes me. I would add a user input and allow the high water mark to be changed and leave the circuit in discharge mode once a predetermined number of cycles is reached.

Step 3: Using the Circuit

@page { margin: 0.79in }

p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

When actually trying to recondition capacitors, ensure that you have a power supply that provides sufficient voltage. The constant current source has about a volt and a half drop across it. Unless you change the high water mark to a lower value in the code, the power supply should provide 15 volts or more. Additionally, you should check the capacitor for leaks and physical damage, either of which could render your capacitor defective beyond reconditioning.

@page { margin: 0.79in }
p { margin-bottom: 0.1in; line-height: 120% } a:link { so-language: zxx }

I have reconditioned about a dozen capacitors of varying ages and values with out a single failure. As I noted in the software section, the only annoyance is having to watch the count in order to shutdown the circuit before the cycle count gets too high. I chose an arbitrary value of no more than 20 cycles and haven't seen and undesired affects.

Electronics Tips & Tricks Challenge

Participated in the
Electronics Tips & Tricks Challenge