DIY Differential Voltmeter, high precision low noise - Page 1
Forum section: electronics / general

author: RandallMcRee
author_rank: Frequent Contributor
timestamp: May 22, 2019, 03:57:08 am
content: Happy Metrology Day!Edit: added github repoBy coincidence I am releasing this design for a differential voltmeter on metrology day. It seems fitting as this design is intended only for high-precision low noise measurements in the 0.1-10 Hertz region. No high-speed DACs, here. No claim is made that this is some kind of "design from the masters" ala Art of Electronics! No, I would just like some feedback and hopefully, the design *will* become something useful to the community.A differential voltmeter generates a precision internal voltage that is scaled down to match the input. The unknown input and internal, scaled voltage are compared and measured. This allows a direct measurement both of the absolute voltage being input as well as the noise of the input--subject to various assumptions that will be pointed out.I have adapted a Kelvin-Varley +String dac design to achieve a diy precision DAC. There is no reason that a commercial DAC could not be used, e.g. the AD5760. As this part was a learning experience I decided to go with the DIY design. It ought to have similar precision as the commercial part, as well as low noise and low drift. The eight MSB resistors were matched to 0.55ppm tempco by combining two 1000ohm fluke wirewound resistors (times eight). The next set of eight were matched to better than one ppm. The rest are 5ppm resistors and were measured to make sure as not to be greater than spec.The output of the DAC goes to a low-pass filter. This is eight lowpass filters combined for noise reasons. It should have a noise from 0.1-10Hz of approximately .17uV/sqrt(= 60nV.post here:https://www.eevblog.com/forum/metrology/lm399-based-10-v-reference/msg2205753/#msg2205753The filter has a very long settling time of over 40 seconds. So there is that. Hence, the switches allow either direct comparison of the input to the DAC or the Low pass filtered dac output.The single pole switches (1.5ohm Ron) allows for various autozero and calibration options. In particular, we should be able to measure the offset and noise of the input buffer, the instrumentation amplifier and the DAC.Not considering error sources (LOL!) this differential voltmeter ought to be capable of 8.5 digit measurements--13 bit DAC, 20 bit ADC implies >30 bit resolution. In reality, there are many limitations and it will be challenging to control them enough so as to get to 7.5 digit or greater accuracy.Major error sources (tell me what I have missed):Voltage reference: tempco, absolute value uncertainty, noiseDAC: INL, DNL, tempco, noiseBuffer amp: noise, tempcoIA amp: gain non-linearity, tempco, noiseADC: (not shown, just assumed), non-linearity, noise, driftI believe that many if not most of these error sources can be characterized and therefore mitigated in software. E.g. the DAC DNL can be measured and compensated for. The IA offset can drift but an autozero can be performed to re-calibrate, etc.Any feedback and suggestions are welcome. Please be gentle.Data sheetsopax189:http://www.ti.com/product/OPA189AD8428:https://www.analog.com/en/products/ad8428.htmlAD4625:https://www.analog.com/en/products/ada4625-1.htmlDAC:https://www.analog.com/en/products/ad5760.htmlMultiplexers:http://www.ti.com/product/MUX507Switches:https://www.analog.com/en/products/adg1413.html?doc=ADG1411_1412_1413.pdfsmd 100ohm 5ppm resistors:https://www.mouser.com/datasheet/2/414/PCF-1528243.pdfultra-low leakage diodes:https://www.mouser.com/datasheet/2/68/cmdd6001-369621.pdfReferences:https://www.analog.com/en/analog-dialogue/articles/low-noise-inamp-nanovolt-sensitivity.htmlGithub repo:https://github.com/RMcRee/DiyDifferentialVoltmeter

author: TiN
author_rank: Super Contributor
timestamp: May 22, 2019, 04:13:04 am
content: QuoteLet's be honest here, as even 3458A can't get 7.5 digit accuracy on 10V.Do you have actual thing built? I'd love to see some test results if it's as good as theory imply.

author: chuckb
author_rank: Frequent Contributor
timestamp: May 22, 2019, 06:41:22 am
content: A few things -As you know the thermal stability of the divider resistors will be critical to maintaining a calibration. A 1 deg C change could give you a 1 ppm output voltage shift. All the high-end KVD have the first 20 resistors in an oil bath. A small temperature controlled metal box over the resistors could probably hold them to a 0.1 C stability.You may want to run the numbers with the heavy filter cleaning up the zener noise feeding the 10.0 V node. Then the 40 seconds becomes part of settling during warm up. The rest of the stages will be relatively low noise. Now the output can change voltage quickly so you could synthesize AC voltages.The Dual OPA2189 at the MUX output will have a constant PACKAGE power dissipation as the input voltage changes from 0-10 V. So that's a very nice feature to maintain temperature stability of all the parts.The accuracy and calibration could be lost with the temp co of the ADA4625 JFETs in the filter (unless you select parts). It may be easier to put all those 47ufd caps in parallel with a 10k series resistor and buffer it with a OPA2189 chopper.In my Chopper noise testing I found they have a more stable offset voltage with a small cap on the input. A 0.1 ufd C0G to ground on the non inverting input of each chopper would remove chopper spikes and prevent issues with the inductive wirewound resistors.The MUXs could inject power supply noise onto the DC output. You may want to have provisions for RC filtering of the power inputs.Hope this helps. Good Luck!

author: Kleinstein
author_rank: Super Contributor
timestamp: May 22, 2019, 07:08:15 am
content: The principle of an differential voltmeter can be low noise, which is an important first step to allow testing the rest in a reasonable time frame. However it is relatively slow on larger changes. It has some nice features, but the DAC part is no easy.For the DAC I see 2 problems: one is leakage current from the MUX chips. This gives some linearity problems as the input impedance is changing and the leakage currents will depend on temperature. Another point is input bias current from the buffers in between the stages. I don't think a KV diver like DAC is really a good idea to get very high accuracy - at least it is an expensive one.The DAC accuracy will likely limits the linearity and useful resolution, especially if the coarse part changes.To make it a useful circuit one might have to include provisions to check the DAC at the critical points (e.g. where the first stage or upper bits in a more conventional R2R DAC change).Combining multiple AZ OPs of the same type can also cause odd effects, as the OPs are somewhat sensitive to signals at the chopper frequency. If they are using a common clock there could actually be an advantage of using dual or even quad AZ OPs.Heavy filtering the DAC output would make the ADC very slow, as the settling of the filter would add to input changes. I see no real need to have filtering here, as the ADC for the residual could do much of the low frequency filtering in the digital domain at essentially no extra cost and error. Some oversampling an averaging with enough background noise can even help a little. This could go so far as even dithering the DAC a little.Depending on the configuration, the common mode rejection of the buffer / INA and ADC part could be a problem. Much of this could be avoided, if the DAC drives on side of the input and the ADC part works near ground. I can no see for sure if it is planed like this, the diodes at the input somewhat suggest this.

author: splin
author_rank: Frequent Contributor
timestamp: May 22, 2019, 02:04:25 pm
content: The MUX506 is specced at 1pA leakage typical but 1nA max at 25C. 1nA is going to ruin your day linearity wise; use the MUX36D08 instead - essentially the same device but with guaranteed input leakage of 40pA max. Still a bit on the high side but you will probably find most parts are much better than 40pA. Are the MUX506s 36D08s that failed the leakage test?A bigger problem is the OPA2189's 70pA typical, 300pA max Ibias @ 25C. Interestingly the OPA189 series datasheet is not currently available on the TI site - perhaps it's being updated? I would suggest the OPA140 - much lower Ibias but higher noise. Temperature drift is much higher but you're going to have to zero out the meter periodically anyway to deal with thermal EMFs and other offsets.

author: Gyro
author_rank: Super Contributor
timestamp: May 22, 2019, 03:35:57 pm
content: In addition to MUX leakages, let's not forget board leakage here. Layout, guarding and cleanliness are going to be important too.

author: RandallMcRee
author_rank: Frequent Contributor
timestamp: May 22, 2019, 05:43:32 pm
content: Quote from: splin on May 22, 2019, 02:04:25 pmDid not know about the mux36d08--thanks (I think, $9.00 ouch!)Concerning the opa140, the problem there is: Very Low 1/f Noise:250 nVPP,0.1 Hz to 10 Hzwell, that is not low noise compared to the opa2189 at 100nV. So I guess I will try to model these params in spice to see if I can balance the different effects.

author: RandallMcRee
author_rank: Frequent Contributor
timestamp: May 22, 2019, 05:59:03 pm
content: Quote from: TiN on May 22, 2019, 04:13:04 amNot built, just have bits and pieces, 10V source, low pass filter, no DAC.I guess one of the reasons I posted, not just to get feedback but to make sure I actually "get 'er done".Need access to a good 10v source (like yours) to calibrate mine. I'm not in your league.

author: Kleinstein
author_rank: Super Contributor
timestamp: May 22, 2019, 06:14:06 pm
content: The really tricky part would be the DAC. Some ready made DACs use a somewhat similar system on a chip, so it may work in principle, but I am not so sure it would really work that well. One might consider to start with one DAC stage less. Even just 10+20 Bits would be plenty of resolution, even if some 2 Bits or so would be lost to some extra overlap that could be used for a kind of dithering / smoothing out the errors a little and get a calibration of the scales for the ADC compared to the DAC.At least for the start one should get away without the low pass filter, as the ADC can do much of the filtering.A first try would normally not use paralleled OPs and maybe lower grade resistors (e.g. 5 ppm/K), just to find out the tricky points in real hardware. For the input already the current noise and bias from a single OPA189 may be a problem. While low voltage noise is nice, it does not help if it comes with to much current noise or bias.

author: splin
author_rank: Frequent Contributor
timestamp: May 22, 2019, 08:18:19 pm
content: Quote from: RandallMcRee on May 22, 2019, 05:43:32 pm$6.23 from Arrow but yeah - priceyQuoteTrue but you could parallel 30 x OPA140s to get 45nVpp and still get rather less than a single 189's 300pA max Ibias - or 140 to get 30nVpp and still be inside the 189's 70pA typical. It would cost nearly $1k though!You'd still suffer 1/f noise for long integration periods. More sensibly, 4 in parallel would be a reasonable compromise @ 125nVpp, 2 to 40pA Ibias.Why not use a string DAC architecure rather than KV? Each stage is buffered so you don't need the resistance matching feature of a KV. By using a single amp it would half the leakage Ibias current problema and halve the cost (use a MUX36S16 for a 4 bit, 16 resistor first stage).One other problem with the OPA140 is it's CMRR is 140dB typical which equates to .1ppm linearity error when used as a voltage follower. That might be good enough for you but the worst case spec is only 126dB (@25C) which would mean you'd have to bootstrap the buffer.

author: RandallMcRee
author_rank: Frequent Contributor
timestamp: May 23, 2019, 02:00:43 am
content: Quote from: splin on May 22, 2019, 08:18:19 pmThanks for the Arrow pointer. Sometimes they have reasonable pricing.As for the first stage using a single amp I am not getting it--seems like the first stage (and subsequent, except the last) must create an interval. Can you sketch out your thinking?

author: RandallMcRee
author_rank: Frequent Contributor
timestamp: May 23, 2019, 02:15:51 am
content: Quote from: Kleinstein on May 22, 2019, 07:08:15 amAbout the filtering--yes, the ADC could do some filtering, but this defeats one of the main features of this design which is to measure the noise of the source. The noise floor of the popular and useful LNA from pipelie, for example is 100nV. Thus, a noise floor of 60nV from the filter would be of use in directly measuring typical source voltages from even an LTZ1000 or 2DW232. Here, a 40 second settling time would be fine when balanced against the many minutes needed to charge the LNA coupling capacitor. Does that make sense?See, for example, this maxim app note:https://www.maximintegrated.com/en/app-notes/index.mvp/id/6206which uses this idea but is limited in applicability.

author: Kleinstein
author_rank: Super Contributor
timestamp: May 23, 2019, 01:55:23 pm
content: A direct (no AC coupling) noise measurement could indeed make use of the filter. However this would be a relatively special case. Unless at a very low noise level, one could still measure the noise without the filter. In addition the filter part has very similar limitations as the AC coupling in front of a LNA. The filter works well for the higher frequencies, but tends to add noise in the transition region. So there is not much gained from having the filter. It is more in the direction that a low noise filter would compromise on the DC performance.So the filter part would be a rather special case. Normal DC measurements would work much better (lower noise, less offset, faster settling) without the analog filter.

author: RandallMcRee
author_rank: Frequent Contributor
timestamp: May 24, 2019, 05:32:41 am
content: Quote from: Kleinstein on May 23, 2019, 01:55:23 pmWell, I'm not understanding your remarks. Why would this be a special case? No, the filter has fewer limitations than the AC coupling, I believe. The filter works fine at the frequencies we are concerned with, around 3Hz, that is a typical ADC integration time. Here is a filter wizard showing what I am referring to. Not sure what you mean by adding noise in the transition region?Edit: note that eight of these in parallel would give approximately 55nV p-p which is what I was saying in post #1. Its a good result.Do you have some actual reference explaining your assertions?

author: Kleinstein
author_rank: Super Contributor
timestamp: May 24, 2019, 03:17:42 pm
content: The picture shows essentially the noise in the transition region, that comes from the resistor in the RC filter. The simulation does not include the OPs 1/f noise and thus a large part of the OPs noise. So I would expect about another 50-100 nV_pp noise from the OPs 1/f noise.It is possible to get a really low noise filter with paralleling more units, but it comes at high costs. Good 47 µF caps (e.g. PP or teflon film caps, maybe wet tantalum) are not cheap. The RC filter circuit is not that different from the AC coupling, so the same parts would make a low noise AC coupling with the same noise spectrum as the filter. For a filter the input impedance might be a little on the low side so that a buffer amplifier might be needed. However the proposed ADC also needs the buffer for the input.Unless the signal source is high impedance one might still get away with just a filter and thus without the noise from the buffer.For the settling of the filter and AC coupling it is not only the intended RC time constant that is important. At the ppm level dielectric absorption also matters. So chances are one could use AC coupling with a large resistor and thus cross over well lower than 0.1 Hz one would likely have to wait for the DA (time constant likely in the 10s of seconds) anyway. For this reason one would likely choose good quality PP caps.

author: RandallMcRee
author_rank: Frequent Contributor
timestamp: May 22, 2020, 01:19:08 am
content: Hey everyone, one year on and I have a working prototype.Needless to say the design has changed and I have updated the github repo given on page 1.Still using the 8428B (specified the "B" part now specifically) and am using a 24-bit ADC the LTC2499.My arduino uno program is already about 700 lines not including libraries and it still just does a basic measurement. Initial results are promising. I will try to follow-up when I am even further along. Attached is a small log showing monitoring of two ADR4525 2.5 volt references, there is a temperature sensor on the LTC2499 but I have still not incorporated that reading onto the output.You will see lines like:QuoteThe mi values are raw ADC readings. There are 15 measurements per second (so roughly half a second per line).These represent the delta between the DAC output (set to 2.49985Volts) and the VRef being measured *2000.The DAC output and the ADC reading are appropriately combined to give the final reading shown, e.g 2.50048784 volts. A running average is shown next.So far, no real calibration has been performed. Still, the differential meter agrees within 100uV with my other meters.Also, I have not put the circuit into its enclosure so the noise floor is high. Even so, I can easily see sub microvolt movements when measuring via the 731B vernier (0.0+deltaE, 1.018+deltaE, 1.019+deltaE).Again,Happy Metrology Day!Randall

author: Kleinstein
author_rank: Super Contributor
timestamp: May 22, 2020, 07:41:15 am
content: The parallel connection of the instrumentation amplifiers is an interesting circuit. Averaging is done via the filter pins.It gives low voltage noise, but the current noise adds up ! A single AD8428 has the best noise figure with a 1 K input impedance. With 4 in parallel this would be at some 250 Ohms.The MUX already has 2 x 125 Ohm. So one may get lower noise with less amplifiers in parallel.Connecting a new source or just changing the source could be a problem with only 2x590 Ohms in series to 1 µF. Something like an LTZ1000 circuit may not like this - I would at least consider the 590 Ohms borderline.

author: RandallMcRee
author_rank: Frequent Contributor
timestamp: May 30, 2020, 04:06:35 pm
content: I did find a problematic feature of this circuit. When the initial voltage is unknown and needs to be found then the DAC voltage will be "far" from whatever the unknown voltage is that is being selected by the input MUX. In that case, the protection diodes kick in to protect the instrumentation amplifier. This, in turn, causes a current to flow and the input is no longer high impedance. Once, the DAC voltage is set properly all is well.To overcome this the design must either include another switch to avoid this during the initial phase or buffer all of the voltages before the MUX....Thanks,Randall

author: Kleinstein
author_rank: Super Contributor
timestamp: May 30, 2020, 04:25:34 pm
content: It looks like the MUX is powered with +-15 V. So at least if inside this range, one could have the coarse measurement mode behind the MUX. The resistors R2 and R3 may need additional switches.The capacitors C3,C4,C5 are rather large, so this would quite some load to the input when switched one - so some slow charging (e.g. via R2,R3) may be needed. For the input one could consider doing this from behind U7B .With the current amplifier the input is only good for really low impedance sources (e.g. << 1 K) anyway.The input would also need some protection before the MUX. This alone is not simple with low impedance (e.g. < 100 Ohms). The protection could also help to limit the initial current. In later stages the DAC will have a limited speed to follow changes at the input. So some protection also for the source may be a good idea. One could do the protection a little similar to the input of the Keithley 2002, 2001 or 2182, with MOSFETs and PV mode opto-coupler.

author: splin
author_rank: Frequent Contributor
timestamp: May 31, 2020, 05:45:15 pm
content: The AD8428 outputs should have series resistors before combining them - the input offset at 25C is 25uV/100uV max depending on grade. With 2000x gain that could be up to 50m/400mV max at the outputs.Quote from: Kleinstein on May 22, 2020, 07:41:15 amIt's worse than that - 1k ohms applies at higher frequencies but the 0.1 - 10Hz typical noise specs are 40nV and 150pA pp so max source resistance is 250 ohms.Presumably you are measuring when R2 and R3 aren't shorted by the switches to provide filtering, so your total source resistance is around 1430 ohms. The noise is dominated by the i/p current noise at around 214nV (for one amp). I suggest you move the filter to the ADC input.The AD8421 might be a better choice - 70nV voltage noise but only 18pA current noise. You could parallel 242 of them together less than 6.5nVpp noise with 250 ohms source impedance.

author: Kleinstein
author_rank: Super Contributor
timestamp: May 31, 2020, 08:29:41 pm
content: The parallel connection works via the filter pins, not the output. This way one could get away without extra resistors.Anyway because of the high current noise the parallel connection usually does not make much sense. Especially for the initial tests, just one amplifier is probably better. Even than lower bias and current noise may be more important than extremely low voltage noise.

author: splin
author_rank: Frequent Contributor
timestamp: June 01, 2020, 02:58:48 am
content: Quote from: Kleinstein on May 31, 2020, 08:29:41 pmAh, OK - I was reading the OUT label as connected nodes. That's quite neat using the filter to combine the amps. However, using 4 resistors to combine the outputs instead would halve the 10x stage amplifier noise; the benefit would be pretty small given the 200x first stage gain but costs virtually nothing. The datasheet doesn't specify the noise of the ouptut amplifier however so it's impossible to calculate the benefit.Quote'May be'? Er - yes - I gave the numbers in my previous post.The current noise is too high so either a different amp is needed or the source resistance needs to be reduced. As far as I can see, all the MUX inputs are buffered so there is no need to use such a high resistance/ultra low leakage/expensive mux. Using a lower resistance mux, along with moving the filter to, say the AD8428 filter pins, would drastically reduce the noise contribution from the AD8428 current noise.

author: chuckb
author_rank: Frequent Contributor
timestamp: June 01, 2020, 01:58:28 pm
content: Love the concept of the differential voltmeter. Thanks for sharing.The OPA189s (and other choppers) really need a 47nF on the input pin to ground to stabilize their operation. It also keeps the input current spikes near the opamp to reduce interference with other parts of the circuit.I used a LTC6655 voltage ref once with no input or output caps and it worked fine, the next circuit oscillated like crazy. I think 1uF was enough to tame it.

author: chuckb
author_rank: Frequent Contributor
timestamp: June 01, 2020, 06:18:20 pm
content: Reference the attached "Flicker noise floor" pdf. I compared the voltage stability of a LT1028A and an OPA189. If you are averaging your data for more than 2 seconds the OPA189 with no flicker noise will provide better voltage stability than a low noise bipolar opamp with flicker noise.The LT1028A has a similar voltage and current noise spectrum as the AD8428.The OPA189 will reduce the bias current by 500X allowing a wider range of source impedances to be monitored. It also does not have input protection diodes.An OPA2189 could be setup as x1 buffers for the AD8428B IA. You would normally used current limiting resistors between the OPA189 and the protection diodes, but they add noise.Ref the Supertex appnote. This technique lets you keep a low DC resistance for low noise and limit the current to a reasonable value.Good luck with your development!