DIY 6,5 digit voltmeter - Page 1
Forum section: electronics / general

author: jaromir
author_rank: Unknown
timestamp: May 29, 2019, 08:19:04 am
content: ForewordI'm not sure whether this topic should belong to 'Projects' section, but perhaps voltnuts will be pleased by this 'voltnutter-ish' specific project too, so I entered it here. Mods have all the power to move it elsewhere.BackgroundIt all started few years ago, when all the DMMs I had were UT-61E and DT830. I have to admit I was quite happy with those instruments for my daily hobby use.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 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 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 voltnutt-ery gadget.ImplementationThe design I present here is far from being elegant or efficient. This is hobby project and I took all the freedom to make the meter as exciting to me as i wished to. Despite my long experience with Microchip MCUs I decided to increase fun factor of this project by using MCUs I had not much of experience with, namely MSP430 and HCS08. I decided to implement integrating AD converter, with multislope runup (this decision wasn't random, I protoboarded classic double slope method and also build sigma-delta converter), driven by CPLD logic, communicating with main MCU on "earthy" digital board. This is my first Verilog project longer than dozen of lines. The main MCU would also have coprocessor on display/keypad board. See attachment 1Power supplyPower supply has the luxury of custom toroidal transformer with lower flux density and six separate LM317 circuits to form four separated power rails for my project:+-22V for input amplifier+-15 for analog portion ADC3,3V fpr digital portion of ADC12V for relayand finally 10V for earthy logic and display board.Power input boardUnlike Weller, I included fuse into primary circuit of the transformer, as well as MOV on a piece of PCB. The IEC60320 type C8 socket has integrated RF filter. Power switch is of classic clicky-clacky rocker sort.Display boardMain part of user interface is driven by MC9S08AP16A, eight yellow LED displays (vintage Tesla LQ370 and LQ470) of classic 7,62mm 'MAN72-like' style is driven by series of 16-bit serial registers with current drive outputs - STP16DPS05 or alternatively SCT2024. The 10V rail is regulated down to 2,6V (just above Vol of drivers plus Vf of displays to reduce loss heat) for display using TPS54331 step-down converter and MCU is fed by MCP1703 regulator.Interesting enough, the display actually displays 7,5 digits, that is 1uV resolution from 10V input. I'm displaying it for testing purposes now and probably will blank it after the voltmeter will be finished... one day.Digital boardMain digital board is build around MSP430FR5994. There is also FT231XS acting as serial-to-USB converter or alternatively MAX3232 for classic RS232 communication. Onboard bluetooth module isn't powered for now and I'm not sure whether it's good idea to have RF source in precise instrument anyway. I'll investigate this question later.ADC+referenceThe main course of this project is ADC, with schematics in attachment 2. In some multislope ADC 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 feeding different integration currents from single Vref+/Vref- level, I opted for only two resistors and two different Vref+/Vref- levels, see attachment 2 and timing signals in attachment 3. This way I divided the problems into two smaller ones: Three resistors network with good tracking at integrator (marked as Ry resistors) input and another two resistors network with good matching in the Vref divider (marked as Rx resistors). Those two networks doesn't need to have good tracking to each other, however. There is third resistor network in Vref invertor. After Vref switch actions I leave quite bit of time for switched voltage to settle down and it doesn't seem to produce problems.I opted for polystyrene capacitor into integrator, after I built dedicated tool to somehow compare dielectric absorption in capacitors  and also because I stocked plenty of them. Since the integration frequency is relatively high, it's possible that other types would be OK into this application, I left this as exercise for later.For runup I implemented simple algorithm to exercise both Vref+ and Vref- switches once per cycle, in effort to decrease charge injection nonlinearity errors.Onboard reference is good old LM399AH. I designed plastic cover serving two functions - at first it decreases loss heat from LM399, this also decreases temperature generated on ADC board, lowering temperature gradients and problems linked with it. Above that, it seems to decrease low frequency noise, probably due to air turbulences. I need to investigate this more.I employed CPLD for timing and control of ADC. I never really did any major project in Verilog and this was the my first. First protoboard versions of my integrating ADC used MCU for timing and calculations, but I believed using PLD is the right way to go, so it was strong reason (excuse?) to dig into Verilog more seriously than modifying simple blink-a-LED example. I am pretty sure my code is far from being flawless, though.Input boardThis one, together with ADC, is sitting in metallic floating shielded box. Its main purpose is to increase impedance of ADC input (opamp follower), perform AZ function (by attaching follower input either to ground or to input signal) and allow selection of 10M or high-impedance input mode.I have to admit I spent more time around this input board than I expected. First incarnation used LTC2057HV and I failed badly with it - due to my mistake in noise calculations; especially current noise of this AZ opamp was way too high for high-impedance circuits. Later I rewired the board, employed OPA134 for this task and things got much better. OPA140 performed even better. This input board is quite rudimentary and currently I'm working on replacing it with with somehow different topology built around good AZ opamp and bootstrapped power supply.ValidationValidating 6,5 digit voltmeter is far from being trivial.ADC noise is around 0,18ppm, with digital filter in main board I can get one order of magnitude lower with last digit on my 7 and half display (microvolts on 14V range) being rather stable. I believe there is room for improvement in noise.At first I performed first INL check against old 5 digit boat anchor multimeter (, ) and it seems to be linear within its possibilities, but this is only reality check to rule out major design issues and doesn't say a lot about real INL.Later I made INL test using Time electronics type 2003S and Solartron 7150+, voltage from calibrator was measured by both voltmeters and INL characteristic was calculated in spreadsheet editor. Results were not as good as I hoped for, ranging from -4 to +5ppm. I believe this is partially due to somehow unstable dial switches on calibrator, inducing slight drift and noise in the output voltage.A bit later I obtained HP34401A, with good and known INL  and used different methodology. I took 10V low-noise source and setup voltage divider from precise 3,01kOhm resistor and resistor decade with clean and stable contacts. Measured was INL in range approximately -1 to +2ppm. Considering the LSB of each meter is 1ppm, I can call it OK-ish until I get my hands on some real HP3458A.Lessons learnedThis project was really refreshing for me. I started with UT61E as my most precise meter, spent a few weeks absorbing service manuals and patents, another few weeks protoboarding ADCs, acquired quite a bit of precise components, got my hands on a few cheap meters (HP3465B, Fluke 8050A, HP3478, HP34401A, Solartron 7150+ and Keithley 177) during the process, learned how lousy Verilog programmer I am, built a few test tools for myself (capacitor DA checker, nanoampermeter) and ended up with my own voltmeter. As classic music author Ian Kilmister would say - the chase is better than the catch.More picturesIn link TODOA lot of to do, namely:- By now, AZ switching is asynchronous to ADC conversion, so I have to toss out first AD result after switching action. AZ should be directed by ADC itself.- Rework input amplifier. Version with good AZ opamp and bootstrapped power supply is in works.- Perform better INL check.- Finish firmware for digital board.- Add comments to sources, beautify schematics.Materials included in attachmentsAttachments 1 to 3 are referred in text and illustrate inner working of the instrument.In attachment 4 you can find sources for ADC CPLD, also simple version of sources for MSP430 and HCS08. I'm working on those, more refined versions will come later. But data handling should be obvious from those. Before looking into sources, read this warning: the sources are dirty and comments are sparse. I assume there is quite a bit of errors. On the other hand, I really don't expect anyone to build verbatim copy of my design.Above that, in attachment 5 you can find PCB source data, as well as PDF schematics.Attachment 6 contains mechanical files, for now just LM399 cover. Front/back panel drawings will be added later.Attachment 7 are two data logs of LT1021D-10 voltage reference captured by instrument, approximately one minute long each. One captures raw ADC data with digital filter off, one with digital filter on.Attachment 8 - INL tests against HP34401A, see text aboveLinks -https://www.radiomuseum.org/r/metra_blan_digital_multimeter_m1t_24_2.html -https://imgur.com/a/Os0PRQU -https://www.eevblog.com/forum/projects/multislope-design/msg2117578/#msg2117578 -https://www.radiomuseum.org/r/metra_blan_digital_multimeter_m1t_29.html -https://www.eevblog.com/forum/reviews/czechoslovakian-measure-equipment-collection/msg85687/#msg85687 -https://www.eevblog.com/forum/projects/multislope-design/msg2378133/#msg2378133 -https://xdevs.com/fix/hp34401a/-----------------------------------EDITS:29.05.2019 - I made mistake in ADC timing waveforms, corrected it and uploaded correct picture; plus added attachment 7 and two more photos.30.05.2019 - Typos corrected18.06.2019 - Added crude INL test against Solartron 7150+02.07.2019 - Added somehow better test against HP34401A

author: jaromir
author_rank: Unknown
timestamp: May 29, 2019, 10:07:33 pm
content: I uploaded a few photos with this to have it all in single topic.For more pictures, including short history of development, see herehttps://imgur.com/a/lJzOrQn

author: IRFP
author_rank: Contributor
timestamp: May 30, 2019, 10:51:00 am
content: Hello,Huge and beautiful work.I'm appreciative...

author: Kleinstein
author_rank: Super Contributor
timestamp: May 30, 2019, 04:20:09 pm
content: Beautiful build.I totally agree that performance verification is really difficult. For the linearity, one test one could do is looking at the discharge curve of a large capacitor to get a slowly and smooth changing voltage. This can be used as a kind of DNL test and a little more. Ideally, at least locally (e.g. over a few mV of change) the curve should kind of follow an exponential law (just 2nd/3rd order polynominal would likely also work). The deviation from such a fitted curve could show possible DNL and local INL problems.A possibly critical region is in center of the range near 50:50 positive / negative ratio. This likely is a few mV off zero due to resistor mismatch and charge injection.0.18 ppm noise level is quite good - so with some patience (even less than with the Solartron) the 7 th digit may not be that useless.For the input amplifier, one should keep in mind that the ADC itself will essentially always have quite some DC drift. So the zero reading from time to time is essential and hard to avoid. So an AZ amplifier would only make sense before the switching or with gain.

author: iMo
author_rank: Super Contributor
timestamp: June 13, 2019, 09:28:29 am
content: @Jaromir: any new measurement results?

author: jaromir
author_rank: Unknown
timestamp: June 18, 2019, 09:42:47 am
content: Hello, I added results of crude INL test against Solartron 7150 plus to the first post of the topic. Time Electronics type 2003S was used as voltage source, dialed in 1V steps.Voltnuts scoff now, and even I know this test is problematic, because S7150+ is the same class of instrument, therefore I'm comparing least significant digits. What is worse, the calibrator isn't very stable on itself - after dialing the desired voltage I had to wait a while (5-15 minutes) for voltage to settle down somehow, making the INL test was tricky and mundane manual task. I believe the calibrator thumb switches do have oxidized and noisy contacts.So, take the results with grain of salt. The INL shown in graph can be better or worse in reality, but at least it shows the voltmeter isn't completely off.I may repeat the test when I get access to better reference voltmeter and more stable voltage source; or at least once I clean up contacts of the calibrator.

author: iMo
author_rank: Super Contributor
timestamp: June 18, 2019, 03:50:29 pm
content: Interestingly, your INL measurement is somehow "symmetrical" around 4 Volts.

author: Kleinstein
author_rank: Super Contributor
timestamp: June 18, 2019, 04:16:16 pm
content: The INL measurement is rather difficult. So quite some of the seen deviations could be just random due to the drift / low frequency noise in the references (DIY DMM, Solartron and 2003S) and possibly ADC gain drift. A few repeats at some point's could give an idea on how repealable the INL test really is. It is still the question on how good the Solartron meter really is.An INL test is the really difficult part and can usually only be a partial test - there is essentially not enough time to speed several seconds at every possible ADC reading.It may be interesting to do a DNL test, e.g. looking at a smooth and slow changing voltage (e.g. from a capacitor discharge or with a large cap and current source). Looking at the rate of voltage change (= difference of consecutive readings) can give a clue on more local linearity problems. With the relatively slow modulation, relatively long waiting times/ minimum pulse length and a rather fast integrator I do not expect very much trouble here. However one never knows before it is checked.P.S.: the Solartron 7150 already uses the divider for the 20 V range. So going /100 and x 10 and this may lead to not so good INL there.

author: Andreas
author_rank: Super Contributor
timestamp: June 18, 2019, 05:55:21 pm
content: Quote from: imo on June 18, 2019, 03:50:29 pmThere should be more measurement points around the 4-8 Volts.with best regardsAndreas

author: Andreas
author_rank: Super Contributor
timestamp: June 18, 2019, 06:03:54 pm
content: Quote from: Kleinstein on June 18, 2019, 04:16:16 pmyou are right for the noise and (temperature) drift during measurement. So repetitions of the measurements are mandatory.but poor mans INL-measurement only needs a resistor string on a stable voltage source.https://www.eevblog.com/forum/metrology/dmm-linearity-comparison/msg1351979/#msg1351979Ok in the simplest form (without calibrated resistors or without additional measurement points) I cannot tell wether the INL belongs to the upper or lower half of the resistor string. But if all measurements are within 1 ppm I cannot complain.with best regardsAndreas

author: jaromir
author_rank: Unknown
timestamp: August 02, 2019, 09:56:44 pm
content: Recently I obtained HP34401A* - because it seems to have quite good and known linearity for its class. Also, I changed approach to INL testing. Instead of relying on somehow unstable thumb switches of Time electronics 2003S voltage calibrator that introduced tiny amount of drift and noise into its output voltage, I made voltage divider from 10V low noise voltage source, consisting of single low-tempco 3,01kOhm resistor and six-decade resistor box**, with massive (and clean) contacts. This resulted in rock-stable voltage reading on both 34401 and my voltmeter.With this method I achieved INL of approximately -1 to +2ppm. Considering both meters do have resolution of 1ppm, I call this acceptable.--------------------------------------------* Since I started with this design, my lab is filling with test instruments** Yes, this one is new, too.

author: Mr. Scram
author_rank: Super Contributor
timestamp: August 02, 2019, 10:21:15 pm
content: Very cool to see someone with a working project, after seeing so many starting voltmeters, quickly realising how complicated such a project is and never coming close to anything useful.

author: jaromir
author_rank: Unknown
timestamp: September 26, 2020, 10:55:18 pm
content: This voltmeter, especially it's improved ADC got new incarnation, see herehttps://www.eevblog.com/forum/projects/how-i-built-my-6-digit-multimeter/I put this project into general projects section and not into metrology subforum, because it's not quite up to my standards - but still, it's related to this project.

author: dhyddr
author_rank: Newbie
timestamp: June 14, 2024, 09:14:29 am
content: what's the parameter of QG1 20MHZ?