# 555 timer to measure variable capacitance

I've no experience with complicated circuits. Currently thinking about a simple circuit for detecting a variable capacitance, e.g for liquid level or moisture sensing. I came across the 555 timer running in an astable configuration, which is used for such applications. The idea is clear, a change in capacity would change the frequency of the timer, which, in turn, can be monitored. The monitoring could happen with an Arduino. Here is some more background:

Now, I want to use this scheme for measuring a variable capacitance that is very, very small. Let's say it varies between 20fF to 100fF (this is on the order of $$\10^{-14}\$$ Farads!). Obviously, this would lead to high frequencies, and thus to a very fast pulse duration of the timers' output signal. The circuit will certainly suffer from parasitic capacitances of the circuit, i.e. noise (see explanation in the first link).

For $$\R_1 = 100k\Omega, R_2=1M\Omega\$$ and $$\C_1=20\text{f}F\$$ I calculated a frequency of $$\3.4\cdot 10^{7}Hz\$$. A change in capacity of $$\\Delta C= 1\text{f}F \$$ equals a change in frequency by $$\\Delta f = 6.8\cdot 10^{8}Hz\$$, i.e. the pulse duration changes by only $$\\Delta T= 1.48 \cdot 10^{-9}s \$$

1. Is it then somehow possible to resolve a pulse duration of nanoseconds? Is it possible by using a simple circuit (555 timer + Arduino)? My expectation is that this is not a straight forward thing to do. But would it be possible to simply put a second capacitor (e.g. $$\1\text{n}F\$$) in parallel to the variable capacitor? This should shift the frequency to much lower values, below kHz. However, a change by 1fF still only changes the pulse duration on the order of nanoseconds.

2. Assume I'd have a second variable capacitor as reference (see Fig. 2d https://www.analog.com/en/analog-dialogue/articles/liquid-level-sensing-using-cdcs.html). Is it then easier to resolve such a tiny difference? My naive idea is that the signal of a 555 timer will go through both capacitors simultaneously. Both will modulate the signal differently, i.e. they alter the frequency differently. By relating both signals I can imagine to resolve the small difference because the noise is eliminated (environmental noise occurring in on capacitor will also occur in the second one)?

• The frequency will drift more by the fart of a flea than inserting 1e-14 into any 555 design. Do you have any experience measuring sub-pico farad capacitance before? Feb 18 at 7:56
• by the way, your frequency calculation seems to be wrong: if your base frequency is ca 10⁷ Hz at 20 fF, then it shouldn't change by 10⁸ Hz when changing the capacity by 5%. Also, just from a gut feeling, your base frequency would rather be in the high 100s of gigahertzes, not in the kilohertzes, so you really need to ask a different question that sounds like "I want to measure {what you actually want to measure} for {purpose}. My current approach is to measure capacitances of {describe the thing}, which are in the order fF. How does one measure that?". Feb 18 at 8:23
• and, by the way, using a 555 when you already have a microcontroller like the arduino is... stupid. You've not found great learning resources by people who don't understand what they're doing, and you're facing a really physically hard problem where you need to understand what you're doing to get a chance of solving it! Feb 18 at 8:28

Your measurement problem requires more precision that a 555 with any real-world capacitances and any real-world silicon tolerances will offer. So, I'm afraid this approach is a dead end.

Much, much worse:

When trying to measure femtofarad, you'll have to learn that basically anything you can do to connect your measurement device to the object under test will have its own capacitance that is unknown and orders of magnitude larger in its uncertainty than what you want to measure. You can't (usually, without knowing a lot more) even calibrate that.

So, your "I insert a signal externally" approach, no matter how fast a pulse you can generate, can't work (and no, your 555 + Arduino approach isn't even remotely appropriate for short pulses).

I've seen the same being done for Terahertz-absorbing Bolometers, to measure the changing parameters of teeeny tiny pieces of material.

You rely on the parasitic inductance due to your "thing's" (whatever you want to measure) geometry, and then observe how dampened their oscillating response is to RF energy.

That's the kind of ideas you need to come up with. You need to ask much "higher-up" questions, like, "how does one measure femtofarad capacitances of {describe your thing}", not "can I use a shovel and a duck to measure femtofarad capacitances of this thing I do not mention".

To give you a bit of relation:

DRAM cells, which just measure whether a capacitor is charged or not, are in your order of capacitance. To enable that, you need to basically combine the readout transistor with the capacitance in a single, sub-micrometer structure on a silicon die. That thing can't estimate the capacitance by any means, it will just tell you whether the charge exceeded a relatively unclear threshold.

• +1 for "Can I use a shovel and a duck?"
– JRE
Feb 18 at 8:54
• "Can I use a shovel and a duck to measure bacteria?", of all things Feb 18 at 9:54
• Liquid level sensing is indeed tricky. Temperature also influences the measurement. And the market is full of capacitance-to-digital converter that are almost ready to use Feb 18 at 12:32
• I built my own bridge to measure small capacitance values (although still we speak of lumped capacitors) with good accuracy and repeatability. The circuit is based on voltage balance, with respect to a reference resistor, read repeatedly to reduce drift and exploit short-term uncertainty. "A low cost capacitive bridge based on voltage drop balance", doi: 10.1016/j.measurement.2010.04.007, link: researchgate.net/publication/… Feb 18 at 18:31
• @MarcusMüller Thanks a ton Marcus. Of course the example was run using what I had available, including the HP 34401, but ca be automated as well. Feb 18 at 18:37