Close
0%
0%

Turning Impedance into Frequency: An LC Experiment

Arduino + Franklin oscillator

Similar projects worth following
I did not start this project to build a high-precision LC meter.
I started because I was fascinated by the structure of the Franklin oscillator itself.

By converting impedance into frequency, the problem becomes something a microcontroller handles naturally.
The oscillator runs in Class-A phase-shift mode, allowing stable observation of LC resonance.

Instead of fighting oscillator errors, I focused on differential measurements.
In the end, the accuracy majarly depends on only one thing: the reference capacitor.

While researching the origin of this LC meter approach, I found that the core idea is much older than microcontrollers.

The oscillator itself traces back to the 1920s, when Mr. Franklin at Marconi described what is now known as the Franklin oscillator: an LC resonator combined with a phase-inverted amplifier.

The history

Much later, in 1988, Dr. Hegewald in East Germany applied this principle to an LC meter concept using a microcontroller. This idea was later popularized by Neil Heckt through AADE, where he sold LC meter kits and openly shared both the circuit and the PIC firmware. The design was also described in detail by Phil Rice (VK3BHR) in an Australian amateur radio magazine.

What fascinated me is not absolute accuracy, but how naturally this circuit maps an analog impedance problem into a frequency domain that a microcontroller can handle very well. By focusing on differential measurements and a known reference capacitor, the system becomes simple, transparent, and easy to verify.

I’ve noticed that many builds closely replicate the original AADE design, which is perfectly valid. However, fewer people seem to change both the analog front end and the microcontroller itself.

By simplifying the implementation and using Arduino, my goal was to make such experimentation easier. In one case, this approach even led someone to re-implement the design again using a PIC, after first studying both versions.

This project is my attempt to revisit that idea with modern low-cost MCUs, while keeping the same spirit of simplicity and openness.

The principle

I think the principle behind this meter is very clever.

An additional element is temporarily added to the LC resonant circuit, and the oscillation frequency is measured. By comparing this frequency with that of the original LC circuit, the value of the added element can be derived by solving a simple set of simultaneous equations.

The measurement is divided into two steps. In the calibration step, a high-precision reference capacitor is added to the LC tank to determine the base LC parameters. In the measurement step, the element under test is added instead, the frequency is measured again, and its value is calculated from the difference.

By relying on frequency differences rather than absolute values, this approach naturally reduces errors caused by stray inductance and parasitic effects.

LTSpice simulation

First, I used LTSpice analysis to verify that the Franklin oscillator circuit works with an LC tank circuit and an inverting amplifier using a 74HCU04. I imported the .asy and .lib files related to the 74HC and performed a simulation as follows:

(1) Download the schematic from the link below and place it in the LTspice sym folder under the file name 74hcu04.asy.
http://ltwiki.org/files/LTspiceIV/lib/sym/Dig_Add/74HC/74hcu04.asy

This will become the circuit diagram data, and it will appear when you select it in the Component menu.

(2) Import the simulation data from the following location into the 74HC-related directory using 74HC.lib:
http://ltwiki.org/files/LTspiceIV/lib/sub/74hc.lib
Specify it as available for calling via Edit → SPICE Directive. (This is referenced when 74hcu04.asy calls the 74hcu04 simulation data.)
.lib 74hc.lib

(3) 74hcu04.asy requires an external power supply of 5V via "Vcc." Add a DC power supply and specify Vcc.

(4) Oscillation will not start unless initial operating conditions are set, so I set .ic V(n003) = 1V in Edit → SPICE Directive.

The circuit diagram for simulation is as follows.
LCM_FRANCLIN_HCU04_HC.asc

- The sketch overview

To count the frequencies: start measurement
→ wait for stable oscillation
→ count pulses for gate time "To refer FreqCount Library"
→ average N times until the adjacent frequencies are within 0.5%

→ output frequency

Calibration flow
→ measure freq1
→ insert Cref  by turning on the relay
→ measure freq2
→ solve L,C of base tank
→ store parameters

Measuring flow
→ insert DUT
→ measure...

Read more »

OSC_CIR2.jpg

JPEG Image - 110.01 kB - 03/09/2026 at 14:11

Preview

LCM_FRANCLIN_HCU04_HC.asc

asc - 1.71 kB - 01/28/2026 at 11:49

Download

LCM_CIRC.png

The circuit diagram

Portable Network Graphics (PNG) - 23.31 kB - 01/23/2026 at 14:25

Preview

Equation+Circuit2.jpg

This is how to get the inductance value from the frequencies..

JPEG Image - 128.68 kB - 01/23/2026 at 12:53

Preview

  • 1 × 74HCU04 Logic ICs / Gates and Inverters
  • 1 × Arduino nano or ATmega328P

  • Why I replaced the relay with a DPDT switch — and why manual calibration is a feature

    nobcha4 hours ago 0 comments

    In earlier versions of this LC meter (up to V6), calibration was handled automatically by a relay. The relay would insert the reference capacitor into the tank circuit at the start of each measurement session. Simple, automatic — but not without problems.

    Problems with the relay approach

    Cost: small signal relays suitable for ~1.5 MHz switching are not cheap

    Availability: sourcing a consistent relay across builds was annoying

    The V7 solution: a 6P DPDT switch

    I replaced the relay with a readily available 6-pin double-pole double-throw (DPDT) switch. The switch physically inserts or removes the reference capacitor from the LC tank — the same function, but done by hand.

    This makes calibration a conscious 3-step manual operation:

    Set switch to CAL position

    Press the calibration button — the sketch measures f1 and f2, solves for L and C of the tank

    Set switch to MEASURE position — ready to use

    "Manual calibration is a feature, not a bug"

    Once you understand that calibration only needs to be done once per power-on (or when ambient temperature changes significantly), the manual switch becomes perfectly acceptable. In fact, it makes the measurement process more transparent — you always know exactly what state the circuit is in.

    The sketch for V7 is available on GitHub, along with the KiCad PCB files and assembly manual (English and Japanese):

    👉 https://github.com/Nobcha/ARD_LCM_MANUAL

    A detailed build log is also on my blog:

    👉 https://chitose6thplant.fc2.page/lc-meter-v7-dpdt-calibration-3-steps-layers-pcb-model/

    One note on the PCB

    The first version of the V7 PCB had three errors (OLED header pinout, R6/R7 silkscreen, ICSP header). These are documented in the repository as a "Mistake prevention list." A corrected schematic is also included.

    Next up: V8, where the sketch was restructured to reduce flash usage from 95% down to 80%, making room for future improvements.

    kpa radio ©nobcha 

  • I added the OLED version

    nobcha02/13/2026 at 09:30 0 comments

    The LCD is connected via I2C, so I replaced it with an OLED 128x64 and rewrote the sketch. I uploaded it to GITHUB as V6.4. 

  • PCB pattern design

    nobcha02/03/2026 at 16:04 0 comments

    I used KiCAD and uploaded the Gerber files on GITHUB.

  • ​What SPICE shows about a Franklin oscillator

    nobcha01/28/2026 at 11:54 0 comments

    I used LTSpice analysis to verify that the Franklin oscillator circuit works with an LC tank circuit and an inverting amplifier using a 74HCU04.

  • I added the short history and the principle.

    nobcha01/25/2026 at 09:21 0 comments

    I found the history for this meter. I'm interested in the principle how to measure the values.

  • To derive the tank parameters (C1 and L1)

    nobcha01/23/2026 at 14:11 0 comments

    At first, the tank parameters (C1 and L1) are derived by adding a known standard capacitor to the tank. Please refer the equation note.

  • nobcha

    nobcha01/18/2026 at 13:42 0 comments

    Why a Franklin Oscillator, Not a Precision LC Meter.

View all 7 project logs

Enjoy this project?

Share

Discussions

nobcha wrote 02/02/2026 at 15:21 point

Thank you for pointing out the spelling mistake.

  Are you sure? yes | no

Per Jensen wrote 02/02/2026 at 13:00 point

I believe it's spelled *Franklin oscillator :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates