Theory A capacitance + inductance they form a resonant circuit. He is vibrating. The frequency of vibrations depends on the capacity and inductance. When we add to the resonant LC circuit, the coil (in series to the coil) - or the capacitor (parallel to the capacitor), then the resonant frequency will decrease.
Practice (resonant method)
L/C circuit is cooperates with the LM393D comparator, from which the output is fed back loop to the LC circuit. Thanks to this, the vibrations do not expire. The comparator output also gives a rectangular signal to the input pin of the microcontroller. This signal has the resonance frequency of the LC circuit. The frequency of this signal is measured by the microcontroller. Knowing the inductance values and capacities of the LC generator based on the frequency difference, we can calculate the value of the attached capacitance or inductance to the LC circuit.
Cown – capacitance of LC circuit [pF]
Cref - a referential knowing value of capacitance which was added to LC circuit (generator) [pF]
F1 – a resonant frequency of LC circuit before add Cref capacitor [Hz]
F2 – a resonant frequency of LC circuit after add Cref capacitor [Hz]
Lown – a own inductance of LC circuit (without added any other inductor) [uH]
Cown – a own capacitance of LC circuit (without added any other capacitor) [uF]
F1 – a frequency of resonant LC circuit [Hz]
Cx - is a unknown value of capacitance which was added to LC circuit (generator) [pF]
Cown – a own capacitance of LC circuit [pF]
F1 – a resonant frequency of LC circuit before add Cx capacitor [Hz]
F2 – a resonant frequency of LC circuit after add Cx capacitor [Hz]
Lx - is a unknown value of inductance which was added to LC circuit (generator) [uH]
Lown – a own inductance of LC circuit [uH]
F1 – a resonant frequency of LC circuit before add Lx inductor [Hz]
F2 – a resonant frequency of LC circuit after add Lx inductor [Hz]
Charging time to capacitance by constant voltage.
When we charging capacitor by constant voltage we can observed a curve of charge:
We can see the charging time if depend from resistance and capacitance. And these two values form a time constant called tau τ which units is the seconds [s] So from above diagram we can get the known: After one τ the voltage on the capacitor get the 0.632 E value So if our E have 5V, after the τ time on the capacitor voltage will present 3.16V. AND FINALLY – when we charge the capacitor up to 0.632E, knowing the value of R and measuring the charging time, we can very easily calculate the capacity of the capacitor.
If we look at the diagram, notice that the capacitor can be charged by one or two parallel resistors RES1 and RES2.
Therefore, the program uses one more formula:
Start with RES1 and RES3 soldering, and then measure and store their values. After assembling the whole and connecting the power supply, the VCC supply value should be measured, then the PR1 potentiometer should be set to 0.632 VCC at TP (arround 3.16V).
Wrote in assembler in two options – for ATmega8A or ATmega328P – why 328P? Cause I got a few unused Arduino so I don’t need to purchase M8A
After power on we can see three screens:
Honestly, after the first power on third screen going to calibrate menu, which I’ll describe later.
After reset we can put capacitor into the socket and measure capacitance. After pressed the left button we can see the L measure screen or the second one after put inductor into the left socket.
Next one press the left button invoke the third menu for CE measure: In the right socket we can do measure of electrolytic capacitors.
After this, the left button go back to small capacitors measure menu.
Al the time by press right button we can invoke 7 specials menu. In this mode the right button select menu, and after the select any one by pressing left button execute it and go inside.
How the program calculate capacitance:
Simply start charge of the capacitor and counting the clocks edges.
After charging capacitor program multiply by 125 value of counted clock edges, cause crystal have 8MHZ for translate to decimal relation to seconds. And divide by 10.
After that value is divided by RES2100 (for better precision) or by RES3 (two parallely connected resistors RES3=RES1RES2/[RES1+RES2] ) – result in [uF] or in 0.01 [uF]
After select his menu program compensate the frequency value, which can be a bit floating depend from thermical values. And go back to last used menu of measure.
Simply restart of firmware, and lose the compensate value.
Most probably don’t need describe this menu, everything is on the following step by step screens. Note: You can choose in the next menu the reference value of the calibrate capacitor, which you’ll use.
You can change the value of capacitor in LC generator circuit, after this the coil value will be recalculated. In the last 4 menu you can set the value by pressing left button and right button for confirm.
Here you should set the RES1 value, which you measured after soldered RES1.
Here you should set the RES2 value, which you measured after soldered RES2.
A bit unrolling the second one formula for clarity and understand how to do it on the integers numbers.
We got here a constant 1/4PI^2, also we dividing by [pF] so we can do sth like that:
100 000 000 000 000 000 000/4/Pi/Pi = 2 533 029 591 058 444 286
And now: 2 533 029 591 058 444 286 /F1/F1/C
BECAUSE the 2 533 029 591 058 444 286 value is oversized by a few decades the result is in 0.01 [uH] what gave resolution in 10 [nH].
Just for example how program calculate Cx or Lx and don’t going to to lower values using integers:
Cx = (Cown x [(F1 x F1)-(F2 x F2)])/F2/F2
So the first result = (Cown x [(F1 x F1)-(F2 x F2)]) is huge enough to divide by square of F2…
C9 10uF doesn’t work properly, breaking oscillations – solution – replaced to unpolarized LM393D damaged under soldering probably – breaking oscillations – replaced to new.