Arduino-based Inductance Meter

Arduino

I’ve just finished a little Arduino project. It’s a shield for the Arduino Uno that lets you measure inductance. This is a functionality that I found missing in just about any digital multi meter. Yes, there are specialized LCR meters that let you measure inductance but they typically won’t measure voltages or currents. So I had to build my inductance meter myself.

Arduino-based Inductance Meter - Inductance meter in action. It displays the resonance frequency together with the inductance
Figure 1. Inductance meter in action. It displays the resonance
frequency together with the inductance

The basic design is really simple (Figure 2). It a colpitts oscillator with the coil missing. You use the test leads to connect it to a coil which will make it resonate. The Arduino then measures the frequency at which the oscillator is resonating and calculates the inductance. The capacitors are part of the shield so the capacity is known. All related files (Schematic Diagram, PCB and Arduino Sketch) can be downloaded in download section.

Arduino-based Inductance Meter Schematic Diagram
Figure 2. Arduino-based Inductance Meter Schematic Diagram.

There is 1uH of inductance included on the schield which is placed in series with the coil to be measured. This serves two purposes: The oscillator can resonate when you short-circuit the test leads. When you then press the push button on the shield, the software will use the current measurement as new calibration (Figure 3, 4). It also puts an upper limit on the resonance frequency. This ensures that the software the rest of the circuit can keep up with the oscillator.

Arduino-based Inductance Meter - Pressing this blue button zeroes the meter
Figure 3. Pressing this blue button zeroes the meter.

As can be seen from the schematic, the oscillator uses two 1 nF capacitors in series. Together with the 1 uH inductance, this limits the frequency to about 7.1 MHz. In practice, it oscillates at around 5.4 MHz when the test leads are short-circuited.

Arduino-based Inductance Meter - The entire shield with the display removed
Figure 4. The entire shield with the display removed.

The oscillator output is followed by a comparator turning the sine wave of the oscillator into a square wave. I’ve used an inexpensive but fast Microchip MCP6561R. It has a maximum propagation delay of 80 ns which allows it to keep up at the maximum frequency.

But of course, 5.4 MHz is way too fast for the Arduino to keep up. The Arduino runs at 16 MHz and will need at least a few dozend instructions to process each pulse from the shield. My solution was to add a 74HC590 8-bit binary counter dividing the frequency by 256. That gives a theoretical maximum frequency of 7.1 MHz / 256 = 27.7 kHz. That’s something the Arduino can deal with.

With the test leads open, the oscillator can not resonate. The currentcalibration/zero-offset is displayed in stead
Figure 5. With the test leads open, the oscillator can’t resonate. The
currentcalibration/zero-offset is displayed in stead.

For obvious reasons, there is also a display included on the shield. And then there’s that pushbutton which is debounced in hardware by running it through an RC low-pass filter and a Schmitt-triggered buffer. The button is used to zero the meter, i.e. the current measurement is used as the new zero-offset. With the test leads open, the oscillator can’t resonate. The current calibration/zero-offset is displayed in stead (Figure 5).

Table 1. BOM
R1
2.2 kOhm
 
R2
330 Ohm
 
R3, R4, R6, R8,
R11, R12
10 kOhm
 
R5
3.3 kOhm
 
R7, R13
100 kOhm
 
R9
220 Ohm
 
R10
10 kOhm
 
L1
1 uH
 
C1
22 uF × 16 V
 
C2, C3, C9
1 nF
 
C4, C6, C7, C8,
C10, C11
100 nF
 
Q1
smd SOT23
IC1
 
IC2
 
U1
 
LCD1
 

The main problem are the test leads. They have quite a bit of inductance themselves. You can zero that by pressing that button but their inductance easily varies by maybe plus/minus 100 nH depending on how you hold them. If you’re careful to calibrate them in the same position as you measure you can measure very small inductances such as the 300-something nH you see on the Figure 6. It’s just 12 turns of a wire.

Arduino-based Inductance Meter: Even very small inductance values can be measured
Figure 6. Arduino-based Inductance Meter: Even very small inductance
values can be measured.

Downloads

Arduino source code (aka sketch) as well as the Eagle files and PDFs - download

Materials on the topic

  1. Datasheet Microchip MCP6561R
  2. Datasheet NXP 74HC590
  3. Datasheet ON Semiconductor MC74VHC1GT50
  4. Datasheet NXP BFR92A
  5. Datasheet Hitachi HD44780U

soldernerd.com