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?
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.
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.