I'd like to measure (to a few percent precision) the capacitance of a 0.8-0.06pf variable capacitor (eventually to be read by a 120mhz 32-bit microcontroller, if that's any help). I realize that one cannot just measure an arbirarily small capacitor to any accuracy, so I'm not sure if this is practically feasible. I've looked into making a regular RC time circuit and polling to measure the discharge time, but even with the highest value resistor I can easily source (100M) the capacitor is discharged within 1 microseconds, which (I believe) is a stretch for me to sense with the microcontroller.

If this is practically possible, how could I do this?


The capacitor I'm giving values for is just two 1cm^2 parallel plates with a 1-13cm gap between them. I'm ultimately trying to get the distance between the plates from this capacitance. This is probably just a shot in the dark, but I thought I'd entertain the possibility and see what one could hypothetically do; any information on why this wouldn't work would be appreciated. Once known from calibration, any added parasitic capacitance (from traces, etc) can probably just be removed from the final value, correct?

  • 3
    \$\begingroup\$ Reality check: did you calculate how far away the connectors of your measuring device (and the traces on its PCB etc) need to be to get even in the same order as those values? \$\endgroup\$ Commented Jan 6, 2015 at 19:34
  • \$\begingroup\$ You could create some radio transmitter whose frequency depends on the capacitor and try to tune your radio. Or any other circuit that has some measurable frequency that depends on it and measure that somehow. \$\endgroup\$
    – PlasmaHH
    Commented Jan 6, 2015 at 19:35
  • \$\begingroup\$ Are you sure you got your numbers right? Traces likely contribute well more than that. You might look at an LC oscillator and a frequency counter. \$\endgroup\$ Commented Jan 6, 2015 at 19:36
  • \$\begingroup\$ @WoutervanOoijen Hmm, I really hadn't considered parasitic capacitance at all. I'll edit my question with the full application. \$\endgroup\$
    – 0xDBFB7
    Commented Jan 6, 2015 at 19:46
  • \$\begingroup\$ Actually, I'll probably just delete this post now. Found a question that makes this a near-duplicate. \$\endgroup\$
    – 0xDBFB7
    Commented Jan 6, 2015 at 20:14

1 Answer 1


The stray capacitance of pretty much any wire is going to be about the same order of magnitude as the value you're trying to measure. The best way to deal with this is to turn the measurement into a differential one. For example, if your moving plate is grounded, you could have two fixed plates, one on either side of it. The mechanical and electrical construction should be as symmetrical as possible, so that stray capacitances cancel out to the greatest extent possible.

Here's a circuit that's designed to measure small changes in a differential capacitor.

enter image description here

The 10V, 1MHz source causes the diodes to conduct in pairs — D1 and D4 conduct on the positive peaks, and D2 and D3 conduct on the negative peaks. Since D1 and D2 never conduct at the same time, the net current through them is directly porportional to the value of C1. Similarly, the current through D3 and D4 is proportional to the value of C2.

If C1 and C2 have the same value, the D1/D2 current equals the D3/D4 current, and the average voltage difference between points A and B is zero (although both are swinging up and down at 1 MHz). On the other hand, if the sensor is unbalanced, say C1 increases and C2 decreases, more current will flow in D1/D2 than in D3/D4, causing the average voltage at B to rise relative to A.

Note that the difference between A and B can't exceed two forward diode drops (about 1.5 V) in either direction, and in fact, the voltage between them will be related to the net current flow by the diode equation. For values less than 1 V, the voltage varies nearly linearly with the capacitance difference.

  • \$\begingroup\$ Nice(+1), I've built and use such a device. You need good common mode rejection of the drive signal. I was going to suggest a bridge, but I've never actually measured C ratio's in a bridge. \$\endgroup\$ Commented Jan 6, 2015 at 20:55
  • \$\begingroup\$ Very nice. Is there a reason why a 10v swing is required? Could I get away with a lower voltage? \$\endgroup\$
    – 0xDBFB7
    Commented Jan 6, 2015 at 21:03
  • 1
    \$\begingroup\$ You could probably use a somewhat lower voltage, but the point is to get the diodes switching firmly off and on, minimizing the effects of their capacitances. Using a square wave rather than a sine at lower voltages will help. Also, using a higher frequency with smaller capacitances will help. \$\endgroup\$
    – Dave Tweed
    Commented Jan 6, 2015 at 21:07
  • \$\begingroup\$ It's good for the diodes to match too, I use a diode array and not individual diodes. I'm not sure if the matching is better , but at least they are all at the same temperature. \$\endgroup\$ Commented Jan 6, 2015 at 21:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.