I’ve recently got a second hand Keithley 236 SMU. I’ve used it a few times and it’s actually very convenient. The setup is very clean (only one instrument is needed) and it allows measuring of very low voltages and currents with little noise due to the single triax cable.
I decided to use it to characterize several capacitors. In particular, I wanted to find out the leakage current of some capacitors under different conditions.
The setup is very simple though a “critical” component is required: a diode. When trying to measure directly across capacitor terminals, the SMU started oscillating and there was no way to get a stable reading. Only after I read this application note, I figured there should be a series diode, like this:

In addition, I created a simple enclosure to keep noise to a minumum. I used a small metal can that I borrowed from the kitchen. I soldered a triax connector to it and two crocodile leads. Yes, the setup isn’t ideal as there will be some leakage but again this isn’t electrometer-level measurements.

After wiring it up as specified in the application note, it looked more or less like this:

And here’s a photo of the triax connector

Since the settling time for capacitors is very, very long (hours!) I wasn’t going to sit around and take measurements. The Keithley 236 is GPIB-enabled so I wrote a python script to read the values off GPIB.
Being an old device, the 236 doesn’t support SCPI and it’s rather weird to use. Nevertheless, there is some documentation in the manual and I was able to figure it out. Basically, there is a command to set up the output format, and the device will respond with the current reading to any input. So just sending \r\n
is enough for the device to talk. The script uses pyvisa
and it’s available at the end of this post as keithley-gpib.zip
Leakage current
Specimen 1: Random 47uF 50V electrolytic capacitor @50V:

We can see that the capacitor took around 1 hour to settle. I could probably have waited a little longer, but in the end, the final leakage current measured was 2.91E-07 A, or 291nA
The long settling time is most likely due to the capacitor’s age. It took time to “heal” the oxide layer, which is one of the main factors affecting leakage. In electrolytic capacitors that have been discharged for years or decades, leakage can become so high that the capacitor may short or even suffer irreversible damage. This can be mitigated by reforming, a process I’ll explore in the future.
Specimen 2: KEMET A755, 1000uF 16V (from Mouser)

This capacitor showed the following curve. As it’s a new capacitor, the oxide layer was very healthy and took very little time to settle.

In this case, we can see a much higher leakage current. It took a little less to stabilize. There are some fluctuations that can be attributed to ambient temperature. In the end, the final measured current was 1.9919e-05 A, or 19.91µA. Significantly more than the previous capacitor, but completely expected. Leakage current increases with capacitance.
A simplified explanation (though not academically accurate) is: An electrolytic capacitor is made of two conductive sheets with a dielectric in the middle. The higher the capacitance, the higher the surface area required. Leakage occurs due to imperfections in the dielectric layer, so basically, the more surface area, the more “chances” of leakage . A higher capacitance will pretty much always have higher leakage, if the only variable given is capacitance.
Interestingly enough, we have a datasheet for this capacitor:

Let’s calculate this for the given capacitor: $0.15 \times 1000 \times 10^{-6} \times 16 = 2.4 \times 10^{-3}\,\text{A} = 2.4\,\text{mA}$
This is very far from our 19uA but this is probably due to temperature. The datasheet does not specify temperature but the capacitor is rated for 105°C, so it’s very likely that the leakage current is specified for this temperature.
I’d have to repeat this experiment at 105C to see what the results are.
Noise performance
Measurements were performed in my shielded case. But I wanted to compare the results by measuring the capacitor with and without shielding.
The first results looked like this:

The first half of the chart shows current readings inside the tin can. The second half is outside. Clearly it’s much noisier. With the help of Copilot, I wrote a Jupyter notebook to process this data. First, a high-pass filter at 0.1Hz to eliminate the low frequency variations and get a normalized baseline:

Now we can clearly see the difference in amplitude. The results were:
RMS | STD Dev | |
Shielded | 8.224e-10 A (0.001 µA) | 8.189e-10 A (0.001 µA) |
Unshielded | 2.699e-09 A (0.003 µA) | 2.699e-09 A (0.003 µA) |
We can see that the noise is 3x as high. We can even see a distribution of noise levels with a histogram:

I’ve attached the Jupyter notebook at the end of this post.
Anyways, knowing the amplitude of noise, we can tell if full shielding is really required. A noise of 3nA on our original measurement of 291nA represents an error of 1.03%. For this particular application even a 1% is completely tolerable. In our second measurement, at 20µA, a noise floor of 3µA represents 0.015%, insignificant and probably below what the device can read.
Other, less exhaustive tests
I’ve also performed other tests but to avoid extending this post too much, the data basically confirmed the theory. When decreasing voltage, leakage current is lower. Simply because there are fewer electrons that can leak 🙂
I also did a very informal “temperature test”. By blowing hot air at a capacitor, its leakage current increased significantly (hundreds of µA), but I don’t have actual temperature data to chart, that’s why I’m mentioning it briefly
So, to recap, things learned in this experiment:
- Confirmed that leakage current increases with capacitance and voltage
- Confirmed that leakage current increases significantly with temperature
- Noise shielding is critical when measuring small capacitors, not so much for higher leakage currents.