Bench Multimeter

Note: Click on (most) pictures to embiggen.

Front view of the "finished" instrument, before I add it to the pile in the background.

I got tired of juggling hand-held multimeters around on my bench, especially when I needed to measure more than one thing at a time, like volts and current draw. It's sometimes hard to find a place to put the meters, and have them be simultaneously visible and yet not in the way of other equipment (like the signal generator, scope, etc.)

I decided the solution was to build a bench multimeter that would display multiple measurements simultaneously. I would only need volts and amps; for ohms, capacitance, etc., the hand-held meters are sufficient. The bench meter can sit in a stack with the signal generator, the power supply, and thus be out of the way.

So, how hard could this be? An arduino, some A/D converters, a display, in a box. Hah! It turns out to be difficult to have high resolution and low noise in the same instrument. My trials and tribulations are documented here.

The hardware I chose (ended up with?):

  • Arduino Mega 2560 -- both for the large code space and the large number of I/O pins
  • Two line by 40 char LCD displays based on 44780 drivers. I used two of these to get four lines of display.
  • SD card "module" so the meter can log the data.
  • Battery backed clock module so the logged data will have time stamps.
  • ADS1115 A/D converter "modoules".
  • ISO1540 module to isolate the SDA/SCL lines between the Arduino and the analog meter circuitry.
  • 5V to 5V isolated power supply converter modules for the same isolation problem.
  • 5V to +/- 15V inverter module to power the op-amps in the analog section.
  • ACS712 modules to convert current to voltage (for the current measuring feature).
  • 16 key keypad for the user interface.
  • 10v "analog" wall wart to power the meter
  • Pretty box to put it all in.

Killer Features

I have planned a few "killer" features:

  • Display 2 voltages and 2 currents simultaneously.
  • Display both the DC and AC components of those four measurements.
  • Bluetooth interface (still in the "fever dream" state).
  • Configurable logging to SD card -- configure which readings are stored, and how often they are stored.
  • Actual time and date kept by a clock chip, so the logged values will have real time stamps.
  • (Late addition) Display of wattage represented by a voltage channel and a current channel's readings.

Design Goal

I plan to produce one printed circuit card that will do dual duty as either a voltmeter or ampmeter. It will have a card edge connector so that it can be easily removed from the rest of the circuitry to be worked on.

Version 1

Version 1 schematic

I assembled some of the circuitry on a solderless breadboard to prove the concept, but it was clear that I could never really test the design with that rat's nest of wires. I decided to cut a circuit board for the real development and testing. Above is the schematic of the Rev 1 board.

Much of the circuitry is to be expected: a decade resistor network, a high impedance buffer (U1A), a level shifter (U1B) (because the A/D converter's "zero" is about 1/2 Vcc), and a clipper (U2C) to prevent the input voltage(s) to the A/D converter from exceeding 0v to Vcc volts.

In addition, there's an op-amp full wave rectifier (U5A and B) to turn any AC signal to DC so that the A/D can give us a measure of AC voltage. That signal is presented to the A/D differentially, on inputs 2 and 3 via limiters U2A and U2B.

Much of the circuitry was correct enough to make it to version 2, but one thing in particular was laughably inadequite: the "rail" that clips voltages to no more negative than 0 volts. On this version, I just biased a germanium diode (D7), to give me 0.3v, and figured that the diodes (D3, D13, D16) that connected to it would clip the signal to -.4v -- within the limits of the A/D converter, according to the datasheet for the ADS1115.

That was a silly circuit: the op-amps are driving D3, D13, and D16 through 1K resistors, possibly from as much as -15 volts, and the poor little 1K resistors (R3 and R8) from 5V can't possibly keep D7 forward biased against that load. So the input to the limiter hit the "safety" (D4, D14, D17) that prevents the signal from going more negative than -0.7v.

Another part of the design that changed in version 2 is the "extra" amplifier U2D. That was originally designed to work as either a voltage follower (buffer) from the ACS712 current to voltage converter, OR U2D could be used as an amplifier, though I wasn't sure what I would do with it.

Once I had the voltmeter board back from OshPark and populated, it became clear that I should use that "extra" amplifier to make the voltmeter section feed differentially to the A/D converter. This doubles the signal amplitude that the A/D sees, and so lowers it's sensitivity to noise. So now the U2D section is configured to invert the signal at U2C and feed it into AIN1 input on the ADS1115.

To use the board as an ammeter, leave off the resistor divider network, the isolated 5v to 5v inverter (U6), the voltage buffer and level shifter (U1 and associated parts), and populate either of the ACS712s -- either U8 or U9, which are designed to fit either the +/-5A module or the +/-30A module. Wire up U2D as a follower (leave off the resistors around it and set JP4 to "Amps" and JP5 to "Follower").

Version 2

Version 2 schematic

Version 2 has a handful of changes from version 1.

First, the silly germanium diode is replaced by D7, D18, and Q1, which makes a strong 0.7v current source that clips the limiters at 0v as the most negative voltage.

Second, there's a 7805 three terminal regulator added in the same location as the 5v to 5v inverter. This is because when the board is configured as an ammeter, it doesn't need to be isolated (the ACS712's supply all the isolation from the input signal), but it IS good if the voltage on the board is constant. By regulating it locally down from the 10V supply voltage to the Arduino board, I can be confident that the local 5V is steady.

Third, the "extra" amplifier stage, U2D, is now clearly set up to either act as a follower/buffer from the ACS712, OR to act as an inverter biased at 2.5V for the voltage signal from U2C.

Another change in the schematic, though not in the PCB, is the dual use of J1 pins 2 and 5. When configured as a voltmeter, one noise source was through the range-selection relays K1, K2, K3. They pick up hum and noise, and feed it into the voltage measuring front end. The relay modules that I bought on eBay, however, have opto-isolated control circuits. All one has to do to use this is supply VCC and ground for the relay coil side from the "contact" side of the relays, and the input signals only need a Vcc connection from the Arduino side.

To supply this Vcc and ground, when the board is in voltmeter configuration, then the ACS712s aren't installed, so jumper wires can connect the isolated 5V and Ground to J1 pins 2 and 5 respectively, and then those pins can be connected to the 5V and Ground pins on the relay board. Now the relay board is completely electrically isolated from the Arduino side of the system. (The 5V to 5V inverter is the other part of this isolation.)

Version 3

Version 3 schematic

Version 3 came about because of Youtube videos, like this one from Youtuber Marco Reps. He has many videos about high-precision (lab grade) voltmeters. In one of his videos, he mentions that the "True RMS" feature of a particular meter uses the "industry standard" (my words, not his) Analog Devices AD637.

Since the AC to DC conversion in my benchmeter is "primitive", I looked into this part. I figured I'd pick up a handful on Ebay and play around with them. It turns out, they're breathtakingly expensive: they're over $40 (US) each for new ones. The only affordable source for hobbiests is used devices, pulled from equipment, and sold by Chinese vendors. Those aren't cheap either, going for $15 each.

So, after a month's wait, my package arrived from China. The parts looked good, and despited being billed as "new", were clearly used, because the leads on new parts are gold plated, and mine were also "tinned", meaning they had solder on them.

Never the less, the parts worked in a breadboard, so I ripped out all the old AC to DC circuitry in the schematic and replaced it with the suggested circuitry from the Analog Devices data sheet.

I've fixed the PCB layout and ordered new boards from OshPark, and we shall see how these parts work.

Future enhancements

The 2.5v reference is crappy, and contributes to the unstable zero values.

Bonus Feature

I had an early prototype of the Labrador Oscilloscope and Signal Generator, and I figured I could put it in the voltmeter somewhere. This would allow me to have a simple way to view (audio frequency) voltages applied to the voltage channel(s).

Since the Labrador has push buttons that one needs to access, the scope needs to be isolated from high/dangerous voltages. It also needs to isolate channel 1 from channel 2, since they may be operating at wildly different potentials. I used a couple of audio transformers to isolate the Labrador input from the low voltage signal in the channel card.

In practice, the two channels interfere with each other, so I've got the second channel disconnected.

More Photos

Top view of the instrument. Top left is the Arduino Mega, hiding under an I/O breakout "shield", that also has a switching regulator mounted on it, to take theload off the light-weight regulator that's native to the Arduino Mega.

Just below the Arduino Mega is a Dallas clock module; all you can see of it is the coin cell. Below that is a small board that just acts as a junction for all the I2C wiring. To the right of the clock module is another junction board for 5v and ground connections.

At the bottom of the photo you can see the two audio transformers that are used to couple signals from the channel cards to the Labrador oscilloscope.

Side view showing current measuring card in the card cage, and relay board with it's EMI cage (blue board and cane metal). On the left side you can see the back of the LCD displays and the "big" wires to the front panel jacks.

Rear view showing power and USB connection to the Arduino Mega, and the micro-SD card slot.


Q. Will you make one for me?

A. No, I'm retired and so not interested in a job.


This is just my documentation for my build. I don't claim that building this is safe or recommended.

Soldering irons are dangerous, be careful. Oh, and don't eat the solder.

William Dudley
November 14, 2021