3.5 Capacitor Characterization


An ideal capacitor can be specified by a single value: its capacitance. Here I will show how I measured 2 capacitor non-idealities: the dielectric absorption and the dielectric leakage.  Dielectric absorption is an effect caused by the "alignment" and the "dealignment" of the molecular dipoles of the capacitor dielectric caused by the application of an electric field. While dielectric leakage is the current that crosses the capacitor dielectric and slowly discharges the capacitor.


The procedure to measure the dielectric absorption according to the IEC 60384-1 is more or less like this:

  1. The capacitor must be charged at its voltage rating without exceeding 50 mA and kept there for 60 ± 1 min.
  2. Should  be disconnected from the voltage source, and discharged with  5 ± 5% Ω resistor for 10 ± 1 s.
  3. The discharge resistor is disconnected from the capacitor and during the following 15 min the voltage is measured. The recovery voltage is the maximum voltage during the 15 min period.




To keep things simple I did not follow everything from the document, specifically I could not charge to the rated voltage a few capacitors (the ones that were rated > 200 V), I did not use a fixture and I did not discharge the capacitors with a resistor but with the SMU itself. The dielectric absorption is specified as the ratio between the charge voltage and recovery voltage, and is specified as a percentage.


The leakage current was measured from the same data generated to measure the dielectric absorption, I measured the current leakage after 30 min of having charged the capacitor.


As I do not have a test fixture to reduce the current noise, I shortened the leads as much as possible.




The complete procedure was implemented as a trigger model that relied on configuration lists to set the instrument to operate at the different phases and a timer that was programmed to initiate the next phase in of the procedure. The key part of the code with comments is shown nex:


trigger.timer[1].delaylist = {{t_charge, t_discharge, t_recover}}                                     -- Generate a trigger.EVENT_TIMER1 after t_charge (60 min), t_discharge (10 s) and t_recover (15 min) time has passed since the timer was started.


trigger.timer[1].start.stimulus = trigger.EVENT_NOTIFY1                                               -- Start the timer once it receives a trigger.EVENT_NOTIFY1 event

trigger.timer[1].count = 3                                                                            -- Generate 3 trigger.EVENT_TIMER1 events

trigger.timer[1].enable = trigger.ON                                                                  -- Enable, but don't start the timer


trigger.model.setblock(1, trigger.BLOCK_CONFIG_RECALL, "Measure", 1, "Source", 1)                     -- Set the SMU to measure current and to source "V_charge" volts as specified in the index 1 "Measure" and index 1 "Source" configuration lists

trigger.model.setblock(2, trigger.BLOCK_SOURCE_OUTPUT, smu.ON)                                        -- Turn output on

trigger.model.setblock(3, trigger.BLOCK_NOTIFY, trigger.EVENT_NOTIFY1)                                -- Send trigger.EVENT_NOTIFY1 event to timer to start it

trigger.model.setblock(4, trigger.BLOCK_MEASURE_DIGITIZE, defbuffer1, trigger.COUNT_INFINITE)         -- Begin measurements

trigger.model.setblock(5, trigger.BLOCK_WAIT, trigger.EVENT_TIMER1, trigger.CLEAR_ENTER)              -- Wait for t_charge (60 min) time to pass


trigger.model.setblock(6, trigger.BLOCK_MEASURE_DIGITIZE, defbuffer1, trigger.COUNT_STOP)             -- Stop measurements

trigger.model.setblock(7, trigger.BLOCK_CONFIG_RECALL, "Source", 2)                                   -- Source 0 V

trigger.model.setblock(8, trigger.BLOCK_MEASURE_DIGITIZE, defbuffer1, trigger.COUNT_INFINITE)         -- Begin measurements

trigger.model.setblock(9, trigger.BLOCK_WAIT, trigger.EVENT_TIMER1, trigger.CLEAR_ENTER)              -- Wait for t_discharge (10 s) time to pass


trigger.model.setblock(10, trigger.BLOCK_MEASURE_DIGITIZE, defbuffer1, trigger.COUNT_STOP)            -- Stop Measurements

trigger.model.setblock(11, trigger.BLOCK_SOURCE_OUTPUT, smu.OFF)                                      -- Turn output off

trigger.model.setblock(12, trigger.BLOCK_CONFIG_RECALL, "Measure", 2, "Source", 3)                    -- Set Measuring to voltage, and set  source to current (0 A)

trigger.model.setblock(13, trigger.BLOCK_SOURCE_OUTPUT, smu.ON)                                       -- Turn output on

trigger.model.setblock(14, trigger.BLOCK_MEASURE_DIGITIZE, defbuffer1, trigger.COUNT_INFINITE)        -- Begin measurements

trigger.model.setblock(15, trigger.BLOCK_WAIT, trigger.EVENT_TIMER1, trigger.CLEAR_ENTER)             -- Wait for t_recover (15 min) time to pass


trigger.model.setblock(16, trigger.BLOCK_MEASURE_DIGITIZE, defbuffer1, trigger.COUNT_STOP)            -- Stop Measurements

trigger.model.setblock(17, trigger.BLOCK_SOURCE_OUTPUT, smu.OFF)                                      -- Turn output off



I wrote the following code to perform the measurements and to process them after:







I measured 5 different type of capacitors:


Aluminum       : 2200 µF /   25 V

Ceramic        :   10 nF /    1 kV

Film           :  300 nF /  250 V

Tantalum       :   33 µF / 12.5 V

Supercapacitor : 0.22 F  /  5.5 V



And charged them at the following voltages:


Aluminum       :  25.0 V

Ceramic        : 200.0 V

Film           : 200.0 V

Tantalum       :  12.5 V

Supercapacitor :   5.5 V



The leakage current after 30 min was:


Aluminum       : 44.1 µA

Ceramic        : 28.2 pA

Film           : 34.9 pA

Tantalum       :  191 nA

Supercapacitor :  326 µA



The measured dielectric absorption was:


Aluminum       :  5.85 %

Ceramic        :  7.54 %

Film           :  0.65 %

Tantalum       :  4.52 %

Supercapacitor : 83.95 %



And here are the voltage curves  during the recover phase:




The results show lots of  interesting features that clearly show how different these capacitors are. The range of recovered voltage went from the low 0.65% for the film capacitor up to 83.95% for the supercapacitor. Tantalum and aluminum capacitors have very slow dynamics, and likely continued to recover voltage after 15 min, while the Film and supercapacitor showed very fast dynamics. The supercapacitor also reached the maximum voltage value within the 15 min of recovery, probably because the leakage current effect surpassed the recovery effect.