This is my homebrew multimeter design. Included modes are VDC, Ohms, and Capacitance.

Similar projects worth following
This is a basic multimeter design. I have tried to keep it as simple as possible in a variety of respects. Only the most basic modes are included: VDC, ohms, and Capacitance. It is powered via a USB cable, I figure most electronics workstations have an open USB plug, and the design is simpler as there is no rechargeable battery support circuitry. Additionally, to keep the front end simple, there is minimal range switching.

Theory of Operation

The multimeter is controlled by a Raspberry Pi Pico. This Pico reads digitized data from the front end, computes the voltage, resistance, or capacitance value, and drives the led display to display the value.

Display Driver

For some reason I could not find a chip that would just drive a 4 digit seven segment display that I could easily purchase. Maybe I didn't look hard enough, or maybe it doesn't exist. Instead I basically made discrete IO pin buffers from p-channel and n-channel mosfets.

There are also four regular LEDs that indicate things like unit prefix and sign. These are not shown but can be found in the full schematic.

Analog Front End

The analog front end conditions voltage readings that are read by the MCP3561 ADC. The conditioning circuit is selected by the various switches. When SW3 is in its default position, the meter is in voltage measurement mode. Switching it changes to component measurement mode. Changing between resistance and capacitance in component mode is facilitated by a logic switch wired up to the Pico (Not Shown). The range switch changes the range in component measurement mode.

Voltage Measurement
As can be observed, voltage measurement mode is a buffered voltage divider into the ADC. Another buffer floats this division at half the ADC reference voltage to allow for negative voltage reading. This floating of the measurement circuit is still there in component measurement mode, which is probably detrimental to performance. 

Resistance Measurement
In component measurement mode, voltage is sourced by buffered 2.5V LM4030 voltage reference in series with the range resistor. There is also another resistor between the measurement node and the input terminal to provide some protection to the device. The combination of these resistors in series, and the resistance being measured creates a voltage divider and resulting voltage that is read by the ADC. The measurement resistance is then calculated in firmware using the known resistances and measured voltage.

Capacitance Measurement
Capacitance measurement is the same as resistance measurement except capacitance. This basically means that instead of measuring a static voltage, the voltage is constantly monitored for a dip that indicates a capacitor was connected. The resulting exponential rise is then sampled, and using the points from this sampling, the capacitance is found. All this computation is obviously done using the Pico. There is a trigger indicator to alert the user that they have triggered on a capacitance.


The most lacking part of the design is probably the resistance measurement which only achieves 10% relative accuracy. The biggest issue with the resistance measurement is that it is using a ratio (series resistor) instead of a current source. This becomes a problem when the series resistor is very big compared to the resistance being measured. Additionally, the added series resistor in the network (Between the measurement resistor and the voltage reference series resistor) complicates the measurement algorithm and circuit.

  • Rev2 Final Calibration

    Marek04/14/2024 at 03:52 0 comments

    I have completed the final calibration for the second revision. The data is as follows:

    Meter, Fluke 101
    -60.28, -60.4
    -54.70, -54.81
    -49.86, -49.90
    -44.88, -44.97
    -39.86, -39.93
    -34.93, -35.00
    -29.89, -29.94
    -24.90, -24.94
    -19.92, -19.95
    -14.94, -14.96
    -9.956, -9.97
    -4.972, -4.978
    -0.987, -0.989
    0.001, 0.000
    0.989, 0.989 
    4.975, 4.984
    9.960, 9.97
    14.94, 14.97
    19.92, 19.96
    24.90, 24.95
    29.89, 29.95
    34.81, 34.87
    40.00, 40.08
    44.80, 44.88
    49.90, 50.03
    54.97, 55.11
    61.04, 61.1
    Meter, Range, Fluke 101
    29.57, 1, 31.7, 
    98.33, 1, 103.3
    332.3, 1, 332.8
    1081, 1, 1044
    10730, 2, 10520 
    21930, 2, 21410 
    100500, 2, 97300
    339800, 2, 315200
    530000, 2, 484000
    Meter, Range, Fluke 101
    50.88n, 2, 49.2n
    96.73n, 2, 96.6n
    1.006u, 2, 1.009u
    10.03u, 1, 9.92u
    45.57u, 1, 47.32u

    This works out to 0.3% relative accuracy for voltage, 10% for resistance, and 5% for capacitance.

  • Rev2 PCB Assembly and Bring Up

    Marek03/22/2024 at 06:34 0 comments

    I have assembled and brought up the revision 2 PCB to the point where it reads voltage. Additional firmware is needed for mode switching and calibration is also needed.

  • Rev1 Enclosure

    Marek03/20/2024 at 03:57 0 comments

    I have mounted the first revision into an aluminum sheet metal enclosure with some holes cut in it. The first revision has been repurposed into just a voltmeter because there are some problems with the switching circuit.

  • Rev1 Voltage Test

    Marek03/14/2024 at 03:44 0 comments

    I did another test with the rev1 prototype, this time only measuring voltage, and bringing it all the way to the maximum voltage of 60V. Again I am doing calibration and comparison to my Fluke 101 Multimeter. This has a problem as the Fluke 101 does not have more digits than this multimeter, however, I am ignoring this for now. I was able to stay under 1% error for all measurements, and I think this could be improved with a better calibration procedure. Here are the results:

    Voltage(V), Error(%)
    0.989, 0.0
    4.982, 0.71
    9.97, 0.76
    14.96, 0.81
    19.95, 0.86
    24.94, 0.85
    29.94, 0.88
    34.99, 0.86
    40.03, 0.83
    44.9, 0.81
    49.89, 0.85
    54.84, 0.9
    59.8, 0.71

  • Rev1 Display Bodge

    Marek03/13/2024 at 00:45 0 comments

    To make the display work on revision 1, I bypassed the display driver and wired the pico IO pins strait to the segment LEDs. It is a little faint, as the display driver circuit worked completely differently, but it works to test the display.

  • Rev1 Preliminary Accuracy and Precision Test

    Marek03/10/2024 at 05:41 0 comments

    As the title says, this is a preliminary test of the first version of the multimeter. Before the test, I basically calibrated it using my Fluke 101 as a reference. The results of the test are as follows:

    Error: 0.569, Coeff of Var: 0.0102
    Error: 0.2342, Coeff of Var: 0.001
    Error: 0.2404, Coeff of Var: 0.0019
    Error: 0.0671, Coeff of Var: 0.0006
    Error: 48.5352, Coeff of Var: 0.0
    Error: 8.2285, Coeff of Var: 0.0
    Error: 0.0443, Coeff of Var: 0.0
    Error: 1.9391, Coeff of Var: 0.0
    Error: 5.2247, Coeff of Var: 0.1246

    As can be observed, the error is fairly low for all the tested voltages. For resistance, the error is higher especially at the low and high ends. It basically isn't accurate at all at 10 ohms. I also did a test of capacitance and for 100nF it measured 579nF, so basically order of magnitude. For 10uF it measured 11.78uF, so close. I may be able to make capacitance better  (for 100nF) by increasing the sample rate.

View all 6 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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