DIY 6-digit multimeter

Open source multimeter that measures more for less

Similar projects worth following
I started this project as entry to the Making Tech at Home challenge. Contains precision analog parts, FPGA, DSP, germanium transistors, obsolete metal can semiconductors, lots of green resistors.

I designed 6-digit multimeter, capable of measuring voltage (1, 10 and 100V ranges), current (10mA and 100uA ranges, with separate 1A range) and resistance (1, 10, 100 and 1000kOhm). Project logs:

FAQ - answering typical questions

Basics - design sketches

Design, part 1 - sourcing basic parts

Design, part 2 - power supply, parts scavenging

Design, part 3 - the real deal

Design, the end - final remarks

Short demonstration video

Photos of my documents I used during design and build

Zip Archive - 22.09 MB - 07/29/2020 at 21:01


FPGA sources MCU sources

Zip Archive - 722.04 kB - 07/29/2020 at 21:01


3D model of push rod

Zip Archive - 41.88 kB - 07/29/2020 at 21:01



pinout of MACHXO-1200

spreadsheet - 16.41 kB - 07/29/2020 at 21:01


  • Lessons learned

    jaromir.sukuba07/30/2020 at 15:55 6 comments

    Here one would expect summary of this project before tech-at-home contest deadline, what technologies I discovered, what difficulities were solved and soon. In fact, this project was not easy and unfortunately, I didn't manage to finish the project as Iimagined. Detailed schematics is missing and also I planned to conduct validation of my multimeter against known high precision multimeter, as well as perform in some experiments to show usefulness of such as test gear.

    Right now I'm typing this from a hospital ward, with great difficulities. The real lesson learned here is how is human life fragile and how important is to have your loved ones. Take care.

  • Design on the run, resume

    jaromir.sukuba07/29/2020 at 21:20 0 comments

    I have to admit that building this multimeter was quite a fun. I only used parts that were available at home and this design constraint really forced me to use imagination and creativity, even more because designing 6-digit multimeter isn't trivial exercise.

    This isn't my first excursion to precision test gear, I've done it before here and there, but this one was a bit different, because of the "do it from leftovers" part. This lead to some non-usual design choices, like using germanium transistors or quite old DSP, parts recycled from decades old e-waste and new old stock, gathering dust for years with no use.

    I believe I managed to put it together at the end, with firmware needing some polishing, hardware needing to add USB-serial converter for easier logging or even Ethernet-serial converter so that the instrument could be used in more modern way.

    What is still lacking is documentation. Since the aforementioned reasons, most of the design was done on the fly, with no schematics drawn beforehand and majority of documentation looking like this, including coffee stain

    Though I believe all the information is there (my design notes, as well as sources and mechanical files are in files section), I'll try to redraw it into more useful form.

  • Designing on the run, sourcing parts, 3

    jaromir.sukuba07/29/2020 at 20:41 1 comment

    Heart of the ADC will beat inside FPGA, driving all control signals of ADC. I opted for Mach-XO part from Lattice. This part is linked to my mistake in order from Mouser for a particular order few years ago - I wanted MachXO2-1200, but by my mistake I ordered MachXO-1200. After a bit of teeth grinding I ordered the correct parts in second purchase and was left with two parts I had no other use for. Being older MachXo family, it has higher current consumption and totally different pinout than XO2 part. But now it got chance to rise from my junkbox and shine. Soldering to breakout board

    Oh and I also printed this pinout. There is no such as pinout in FPGA datasheet, so I composed it from csv pinout file provided by Lattice.

    This thing serves as reference and design logbook during board design. Notice I had no clear schematics of resulting boards at the time of building the boards, just parts pinout prints adn a few ideas in head.

    I started with one of most important parts of ADC - voltage reference

    Added a few more bits, many of them taken out of the boards in previous log

    This alone is working ADC portion. Later I added voltage buffer/amplifier and did some preliminary tests

    Then I entered the waters of digital world by soldering dsPIC30F6012A to the breakout board.

    dsPIC30 is oldest family of Microchips 16-bit low-end DSPs, released in early 2000's. I still remember how stunned I was reading it's datasheet back in the day, when all my experience ended at PIC16F84. When I entered university, i was able to order a few Microchip samples at my university account and this beauty was one of them. Manufacturing date early 2005... Oh, time flies so fast. By today's account. the MCU isn't anything stellar, but will do the job here.

    When coronavirus outbreak happened where I live, I stayed with my family for long weeks at home, occasionally doing health-trips to woods around here, with lots of fresh air and almost no humans. During this time I relived geocaching hobby.

    In one of caches - GC12N2M for anyone interested - with ham-radio theme I found 18,432MHz crystal.

    18,432MHz looks a bit strange, but I rang my bell immediately at the cache place - dividing the number by 160 gives 115200, common baud rate. It's good crystal for anything that has to communicate via serial port at standard speeds. By the way, this crystal was also made by TESLA and I'm pretty sure it's probably as old as I am. I wonder what was it's life before it got into my hands, but this one definitely was bartered from cache to my home.

    PIC, crystal, optoisolator and a few miscellany parts on digital board, testing dispalys and keypad

    When basic testing was made, I connected bits together

    Notice the power cord - it's cut away from desk lamp that broke months ago. I cut the cord with in-line switch, as it's quite useful for testing out things. Later I added ohms current source to analog board and was practically done, as boards real estate conditions didn't allow much more to be added.

    Notice the PCB on the right. Since there is just ADC and ohm current source on analog board, voltage dividers and current shunt are going to another board, carefully cut to fit cut-outs to connectors below, stacked on top of analog board.

    I proceeded with components soldering, as well as cutting out isolation barriers to decrease leakage and increase voltage strength.

    There are four bistable relays, controlling those is quite simple - two coils instead of one coil in your typical relay. Bring short pulse (~10ms) to one coil, relay switches and stays switched after pulse is gone. Pulse another coil and relay switches back. For this I needed 8 switches, comprising of NPN and PNP transistor (to convert from PGA 3V levels to 5V).

    In my stash I found those eight PNP germanium transistors and I was totally decided to use them in here

    And here it is, along with 8 silicon NPN transistors and hybrid resistor network (but ordinary 3k3 SIL network would do the job as well)

    Here is view of all four boards at the right...

    Read more »

  • Designing on the run, sourcing parts, 2

    jaromir.sukuba07/29/2020 at 19:42 0 comments

    Now when front panel was prepared to go, I needed to start with most basic part of every circuit - power supply.

    Since I didn't have too much of good FR4 boards, I opted for the cheaper PCB phenolic based perfboard for this. I started by looking at what transformers I have in my junkbox

    Since I knew I'll need symmetric 15V, symmetric 21V and two separate 5V sources (for digital part and digital portion of analog board), I started drawing schematics for the complete package:

    It looked somehow too complicated, so I took some liberty to decrease components count while keeping functionality the same, so the upper portion would look like this

    Aparat from that, a few 78xx and 79xx regulators, capacitors and miscellany stuff was needed for analog board. For digital board, 7805 regulator would be probably dropping too much power (displays alone consume around 0,25A), so I searched for some switching regulator. I was unable to find anything other than this isolated TRACO power block.

    Isolation isn't needed here at all, but for years (notice the ordering date from 2010) I had no better use for it, so choice was made.

    Oh, and for rectifier diodes I chose those old ones in metallic case, made by TESLA probably 40 years ago

    After a bit of planning, components were all placed

    Row of diodes

    And point-to-point wired, as well as I dremeled out isolation barrier, so that live parts aren't close to "earthed" parts, as well as analog parts are isolated and separated from everything else

    Some thermal compound and mica isolators

    And power supply block is ready to go

    How it fits in the case? Quite nicely

    Notice the power switch is located directly on PCB, with its push rod quite out of the way. I have a plan how to operate it from front panel. Also, the two PCBs are meant to be analog and digital boards. Those are the next on the list.

    Before I could proceed, I needed to look around. I definitely needed some precision parts, namely resistors and opamps. I took a look into e-waste box

    Oh, some OP-07 opamps.

    ADM707 reset circuit, analog switch, that could be handy

    And look at this old Zebra printer control board. That's actaully pretty schmick resistor, quite good as current shunt for 1A range of my multimeter

    Friend of mine brought me this old PLC, made in Czechoslovakia right after iron curtain fall, in early 90's, one of the first designed and manufactured in here. Unfortunately, programming interface is somehow limited and old, many of the devices are broken or replaced, so I got a few in my hands

    I'm pretty sure you would be hard pressed to find ANY infromation about those. Unfortunately, apart from setting museum there is not much I can do with it, so under knife it goes.

    After a bit of soldering iron action (spot the differences)

    I recovered a lot of relays, PCF8574 expanders and more miscellany stuff.. Those boards are really exotic, being part of large gas laser control circuitry, made in 80's in East Germany.

    One of boards, a bit later

    So, I have power supply and a quite bit of parts to start with. Let's build some more, in next log.

  • Designing on the run, sourcing parts, 1

    jaromir.sukuba07/29/2020 at 10:08 0 comments

    Designing something from existing parts is not as trivial process as it may look. Unlike traditional design, where I start by selecting components I needwhere I identify the main components dictated by important features of things to be designed and then fill the gaps with components exactly as I need, designing from existing parts doesn't have the flexibility of finding exactly the needed component. I can select the main building blocks, but there are chances I will not find the small stuff to fill the gaps seamlessly, so I either have to live with suboptimal design or take a step back a change components I selected previously. That is, designing on the run.

    What proved to be good approach when designing from existing parts is shotgun approach - collect as much parts as possible, put it on the table and try to mix and match to complete the puzzle.

    For this project, I started with rough sketch of what I'm going to do

    It may look trivial, but it's important step to realize what I'm going to search for first. Enclosure is obviously the most important and defining component of whole design. I estimated the size of device to be roughly of A4 paper size footprint, with height something like 5-10cm. For those sizes, printing the enclosure with 3D printer would be slow and painful, since my printer is both glacially slow and has small-ish print size, so I'd have to glue the enclosure from a few parts. That lead me to decision to use off-the-shelf enclosure.
    Fortunately, I have a few enclosures in my junkbox and there is one that fits the bill quite well - CP-15-34 I bought a few years ago for a project that never got to reality. I bought it from TME but now it seems unavailable.

    I estimated the PCB real estate to roughly three PCBs of 10x16 size. One for power supply, one for analog electronics and one for digital portion of device. Quick check revealed there should be enough room to fit them

    Since the enclosure is 7cm in height, in worst case I'd need some additional circuitry, I could stack two PCBs. I felt like the next deciding factor would be front panel displays. I took a deep grab in my junkbox and found - among others - this old display unit from cash register. I bought this on a local flee market uhm... 10 years ago or so.

    After removing a few screws I cracked the enclosure apart to find familiar IC - MAX7219

    Oh my, that looks good. Now take out whole package.

    Great 20mm height LED displays. After a quick reverse engineering job I made this literal back-of-the-envelope sketch capturing cable pinout.

    And another few moments later I had the display working with my random microcontroller test board I had around.

    Fantastic! Now I can continue with parts identification.

    For the smaller display (displaying measurement range) I opted for HDLO-2416, because I had a few of them from teardowns of industrial temperature controllers. This part is something like 25 years old, but still manufactured!

    Now I realized I need also keypad on the front panel, so I can select measurement function and range. I always liked the Marquardt 6450 series switches, since I salvaged them from sewing machine controller years ago. Those are the historical ones from sewing machine made in 80's, containing goldmine of vintage parts.

    For starters, I cut two appropriate pieces of perfboard for keys and small display and laid out on enclosure front panel.

    Looks like a tight fit, but should be doable. So now, he main parts of front panel are identified, I can proceed on by drilling a few holes.

    A few more holes

    Cutting a few bits of plastic

    Working out details

    Aaand it fits!

    Looks fine from back, too.

    When everything fits nice mechanically, it's time to make some electronic works. Since there is 11 keys on front panel and HDLO2416 has something like 10 control lines, I wasn't much keen on having such as many wires coming to front panel, I opted for I2C expander PCF8574 for keypad and 74HC595 for the display, to reduce needed pin- and wire-count.

    I printed out the PCF8574 pinout and...

    Read more »

  • Building blocks of multimeter

    jaromir.sukuba07/27/2020 at 14:58 0 comments

    In theory, there is nothing complicated about multimeter, as usually up to the point of meeting the reality.

    The main part of multimeter is ADC, converting voltage to digital value, to be processed and displayed. Well, ADC directly measures voltage, that goes for the voltmeter part. For measurement outside the ADC input range, voltage divider (allowing higher voltage to be measured) or amplifier (for lower voltages) is required. 

    To measure current, usual method is to convert current to voltage. Fortunately, there is very common part converting current to voltage - a resistor. In order to have the option of changing measurement ranges, resistor switching is usually applied.

    To measure resistance, one needs current source to push current through the unknown resistor, while the voltmeter part of multimeter takes care of measurement of voltage drop on the resistor, being proportional to the resistor value.

    That is the simple part and really, majority of multimeters do operate in this way. I sketched a quick sketch of such as multimeter

    As you can see, it's really that simple, but this picture already uncovers a few usual devils hidden in details.

    First of them is voltage reference above the central, ADC part. This voltage reference should be as stable as possible, with regard to temperature and ageing. It doesn't need to be very accurate (non-accurate voltage can be "calibrated out") but drift with temperature and age is hard to predict and compensate for.

    Another part that makes the design a bit more tricky is isolator. Since the measured voltage could be on any potential, perhaps floating on higher voltage or you may have two multimeters measuring at different part of the circuit, it is usually needed to have the COMMON (black wire of your typical multimeter) disconnected from power ground or each other. That's why the reference/amplifier/ADC part is usually "floating" or "guarded" (often referred as inguard part) and the MCU/interface/user IO is usually "grounded", via power outlet or USB or other connection to PC (usually referred as outguard part). This separation is usually not needed for handheld multimeters, operated from battery, being floating per design.


    The main course of this project is ADC.  While there are relatively good ADC in integrated form (AD7177, LTC2380), I opted for traditional multi-slope implementation, being used for decades in many high-resolution meter and still unsurpassed by integrated ADCs in electrical parameters. What more, this type of ADC is literally built from opamps and analog switches. I think it's very demonstrative how gigh-performance analo to digital converter can be built from a few vbasic building blocks, without the need for "black boxes".

    In some multislope ADC (by the way, reading this HP journal is very advisable for understanding how integrating ADCs do work) implementations, the integrator has numerous of switching sources - either input voltage, ground or Vref+/Vref- inputs via one or more resistors. This typically leads to composite custom resistor network, where most of the precision of the ADC is hidden. This is viable way for mass production, but not that much for one-off hobby prototype. Resistor networks with good tracking like LT5400 are available, with four resistors per package. In my original concept I'd need five resistors - one for input current integration, two for fast runup integration and two for slow rundown integration. Aside from resistors, I needed to solve another important decision - integration switches. With five resistors I need six (five plus integrator reset) switches. That is unfortunate, because switches like DG211B have only four channels per package. I can add more IC packages, but it takes more PCB area (not that much of a problem), but what is worse, requires longer tracks of sensitive signals and more convoluted guarding etc...
    I solved this 6-switches problem by not having six switches: Unlike usual situation with four runup/rundows resistors...

    Read more »

  • FAQ

    jaromir.sukuba07/27/2020 at 14:08 0 comments

    What is 6-digit multimeter?

    It's multimeter that allows you to measure voltage, resistance and current with resolution up to 6 digits, that is resolution of on millionth parth of full scale. For example, when voltage range of this multimeter is 1V, smallest change it can differentiate is 1uV.
    This multimeter is AC powered and is can be controlled via serial port, useful for connection to computer for logging or more advanced test setups, for example.

    Why did you build this multimeter?
    For years I was using cheapest multimeters with great success and had no need to explore realms of more advanced test instruments. Friend of mine had old Czechoslovakian Metra M1T242. This one probably isn't well known to folks from the better part of ex-iron curtain and in fact, it isn't something stellar after all. Four digit multimeter with nixie tubes (manufactured up to 80's!, later modified to LED displays and sold as M1T242A) but there is still quite a few of those instruments among hobbyists. I was able to cheaply acquire this meter too, and after quick repair it worked as expected. During the repair I noticed how much the meter suffers from having to use early 70's technology and thought of reworking the instrument to modern ICs, hoping to decrease loss heat (causing heating up the components - not something you want in precise test gear) and improve stability of the meter. Doing too deep cuts into existing meters (having some historical value, too) seemed somehow brutal, so I decided to build a replica with modern components. I started reverse engineering and redrawing of the meter with aforementioned friend, but after a while the initial enthusiasm evaporated, leaving me halfway in the project. I realized investing too much time into 4-digit meter has little to no practical value, on the other hand the knowledge I acquired really called for building something related. I built a 1000 count integrating AD converter few years ago, made of a few opamps, handful of 74xx chips and beefy 5V power supply, but realm of 5+ digit AD converters was very hazy to me. So, scope creep happened, I tossed the old 4-digit meter plans and decided to better understand how the integrating converters do work and i started with 6-digit voltmeter, being at the borderline between practical tool and low-end of high-end laboratory gadget. The voltmeter was working as I intended, but I was aiming higher, but converting voltmeter to ohmmeter and ampermeter should be easy enough, right? (spoiler alert: not exactly rocket science, but not easy)

    Why do I need 6-digit multimeter?
    Well, in most cases you probably don't. For majority of typical DIY hobby work, classic 3,5 digit multimeters like venerable DT-830B are totally adequate to determine whether the 5V regulator is blown or not, whether that thermistor reacts to hand heat or if the current through LED is reasonable.
    On the other hand, you might use it, if it was obtainable, see below. Hobbyists usually aren't doing projects that require precision test gear, because, well, they don't have precision test gear to start with.

    You explained I likely don't need this instrument, why should we bother?
    In recent years, the term citizen scientist is getting traction. Not only at hackaday, but since we are at hackaday, perhaps this is good entry point. There is a lot of projects, falling outside the usual DIY tinkerer stereotype and reaching more into field of applied research, biology experiments and material science, where measurement is keystone of research. Take a look at garage of Sam Zeloff or Ben Krasnow - I believe their research would be more difficult without proper tools. Fortunately for all of us, they can work and share their tremendous knowledge also thanks to precision test instruments and tools.
    Commercial entities doing this kind of research have access to instruments with high price tags; buying such as instrument for DIY work may be simply too expensive. There is possibility of acquiring older instrument...

    Read more »

View all 7 project logs

Enjoy this project?



farzadarfa wrote 07/23/2023 at 16:18 point


I really like your project and I think I can help you to make it.

  Are you sure? yes | no

Mitsuru Yamada wrote 01/11/2021 at 00:09 point

That's great. Me too, I've made my own computers with stacked PCBs style.

  Are you sure? yes | no

Grant wrote 08/06/2020 at 05:53 point

I would generate a set of schematics for you but cannot decipher your handwritten notes!

  Are you sure? yes | no

Arindam wrote 08/04/2020 at 18:19 point

I am very much interested to this project. Could you please provide the total components list and details diagrams of the project.

  Are you sure? yes | no

Does this project spark your interest?

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