EEVblog Electronics Community Forum

Electronics => Projects, Designs, and Technical Stuff => Topic started by: quantumvolt on September 23, 2013, 02:08:52 am

Title: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 23, 2013, 02:08:52 am
After I saw (the late) Jim Williams video on the Linear Technology Voltage reference LTC6655, I bought the 2.5 V version (a bit more than USD 10). In addition to be a 'nice to have' very low noise modern reference, it came to me that I have seen a lot of DIY precision DMM designs out there - but few of them have made it to actually measure anything.

So I decided to make a 6 1/2 voltmeter and bought the cheap LTC 2400 ADC (a tad more than 10 dollars). After reading datasheets and looking around the web, I realized that you can have a breadboard built meter running in less than an hour.

The pictures show a working prototype on top of an Arduino. If you are hip/cool/serious or in any other way too good for Arduino, you can hook the meter to any microcontroller that has 3-5.5 V DC supply and SPI. But if you need protection against hundred of volts or ruggedness that survives falls from 6 feet height you'll be better off looking elsewhere ...

I like these LT devices better and better - they are quality, cheap, simple to connect, rugged and well documented. Combined with the low noise op amp LT1012 as optional front end (buffer/amplifier/ADC-protector), this gadget (which even uncalibrated will give accuracy better than 0.025% / around 4.5 digits) also fills a real need for me: I can measure voltages with more than 3 1/2 digit resolution even when my Agilent 34401A is locked up doing long time data acquisition .

I will use this thread to post all information I have found about these devices and uses of them  :-DMM :-+
Title: Re: PPMgeek! 5.5 Digit DVM + Volt Ref./Cal. (for Arduino or any uC w. SPI)
Post by: BravoV on September 23, 2013, 02:19:52 am
Thanks for sharing, really interested on how you deal with the analog front end for the LTC2400, please post the schematic.

I have few for this 24 bit adc gathering dust for years.  :-[
Title: Re: PPMgeek! 5.5 Digit DVM + Volt Ref./Cal. (for Arduino or any uC w. SPI)
Post by: quantumvolt on September 23, 2013, 02:34:02 am
Documentation from Linear Technology:


LTC6655

Jim Willams: 775 Nanovolt Noise Measurement for a Low Noise Voltage Reference
http://video.linear.com/p4187-7 (http://video.linear.com/p4187-7)

Product page
http://www.linear.com/product/LTC6655 (http://www.linear.com/product/LTC6655)

Datasheet
http://cds.linear.com/docs/en/datasheet/6655fc.pdf (http://cds.linear.com/docs/en/datasheet/6655fc.pdf)

Product Video
http://video.linear.com/p4187-36 (http://video.linear.com/p4187-36)

AN124: 775 Nanovolt Noise Measurement for A Low Noise Voltage Reference
http://cds.linear.com/docs/en/application-note/an124f.pdf (http://cds.linear.com/docs/en/application-note/an124f.pdf)


LTC2400

Product page
http://www.linear.com/product/LTC2400 (http://www.linear.com/product/LTC2400)

Datasheet
http://cds.linear.com/docs/en/datasheet/2400fa.pdf (http://cds.linear.com/docs/en/datasheet/2400fa.pdf)

Demo board
http://www.linear.com/demo/DC573A (http://www.linear.com/demo/DC573A)

AN78 - A Collection of Differential to Single-Ended Signal Conditioning Circuits for Use with the LTC2400, a 24-Bit No Latency Delta Sigma ADC ...
http://cds.linear.com/docs/en/application-note/an78fs.pdf (http://cds.linear.com/docs/en/application-note/an78fs.pdf)

AN80 - How to Use the Worlds Smallest 24-Bit No Latency Delta-Sigma ADC to its Fullest Potential
http://cds.linear.com/docs/en/application-note/an80.pdf (http://cds.linear.com/docs/en/application-note/an80.pdf)

AN86: A Standards Lab Grade 20-Bit DAC with 0.1ppm/ °C Drift
http://cds.linear.com/docs/en/application-note/an86f.pdf (http://cds.linear.com/docs/en/application-note/an86f.pdf)

Design Solutions 11 - Testing Linearity of the LTC2400 24-Bit No Latency Delta SigmaTM A/D Converter Help from the Nineteenth Century
http://cds.linear.com/docs/en/design-note/dsol11.pdf (http://cds.linear.com/docs/en/design-note/dsol11.pdf)


LT1012

Product page
http://www.linear.com/product/LT1012 (http://www.linear.com/product/LT1012)

Datasheet
http://cds.linear.com/docs/en/datasheet/1012afbs.pdf (http://cds.linear.com/docs/en/datasheet/1012afbs.pdf)
Title: Re: PPMgeek! 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 23, 2013, 02:41:18 am
Thanks for sharing, really interested on how you deal with the analog front end for the LTC2400, please post the schematic.

I have few for this 24 bit adc gathering dust for years.  :-[

I don't have a schematic. These bits are like LEGO - connect and play  >:D. But you will find a schematic at page 14 in the LT1012 datasheet linked over. (EDIT: Page 15. Also - you don't need +- 15 V as in the circuit diagram. Look at page 14 and page 1 and you will see that you can run single supply 3 V or more and symmetric minimum supply +- 1.2 V. Nice for batteries. If you want to include zero measurements you can use center tapped AA cells or use a charge pump inverter with the 9 V battery.)

Schematics, gerber and drilling is what I hope to get help for here  :-DD. I am too old for Eagle (my first programming was FORTRAN on VAC punch cards early 1970's). If a Shenzen PCB can be made these bits seem to be perfect for a low risk IGG project. Who knows? May be I'll do it.
Title: Re: PPMgeek! 5.5 Digit DVM + Volt Ref./Cal. (for Arduino or any uC w. SPI)
Post by: quantumvolt on September 23, 2013, 04:03:02 am
LTC2400+LTC6655 DVM on Arduino (https://www.youtube.com/watch?v=3xbDXnC2W-8#)
Title: Re: PPMgeek! 5.5 Digit DVM + Volt Ref./Cal. (for Arduino or any uC w. SPI)
Post by: dannyf on September 23, 2013, 10:15:12 am
Quote
LTC2400

That would be challenging for anyone to use.
Title: Re: PPMgeek! 5.5 Digit DVM + Volt Ref./Cal. (for Arduino or any uC w. SPI)
Post by: quantumvolt on September 23, 2013, 10:21:19 am
Quote
LTC2400

That would be challenging for anyone to use.

Sorry. I do not understand your post.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on September 23, 2013, 02:27:29 pm
After I saw (the late) Jim Williams video on the Linear Technology Voltage reference LTC6655, I bought the 2.5 V version
I will use this thread to post all information I have found about these devices and uses of them  :-DMM :-+

Hello,

one question: do you use the hermetically tight LS8 package or the plastic package?

Mhm, when looking at the video: how can you measure >3V with a 2.5V reference. There is only 12.5% overrange on the LTC2400 device. Or do you use a voltage divider? In this case the pricing of the resistor voltage divider will be much more than the semiconductor parts, if you want to maintain the quality of ADC+reference.

A complete 5.5 digit digital multimeter can be found here:
http://www.thoralt.de/wiki/index.php/DIV (http://www.thoralt.de/wiki/index.php/DIV)
http://www.heise.de/ct/projekte/machmit/ctlab/browser/Schematics/schem_DIV3.pdf?format=raw (http://www.heise.de/ct/projekte/machmit/ctlab/browser/Schematics/schem_DIV3.pdf?format=raw)

The LTC6655 has of course better initial accuracy, drift and noise than the used LT1019 in this design.
Also the LM399 which is a better device is useless when using a resistor divider to scale down to 2.5V.

The true RMS subboard and the power supply are described in separate articles:
http://www.thoralt.de/wiki/index.php/TRMSC (http://www.thoralt.de/wiki/index.php/TRMSC)
http://www.thoralt.de/wiki/index.php/IFP (http://www.thoralt.de/wiki/index.php/IFP)

Interesting tests which can be done:

- measure your own reference with the input. Should give exactly 2.5V except for the noise voltage. (how large?)
- measure inputs shorted. How large is the offset or did you adjust it?.
- is the reference voltage influenced by mechanical stress (board tweaking)

For lower offset than LT1012 a LTC2057 might be a better choice

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 23, 2013, 06:08:56 pm

Hello,

one question: do you use the hermetically tight LS8 package or the plastic package?

Mhm, when looking at the video: how can you measure >3V with a 2.5V reference. There is only 12.5% overrange on the LTC2400 device. Or do you use a voltage divider? In this case the pricing of the resistor voltage divider will be much more than the semiconductor parts, if you want to maintain the quality of ADC+reference.


Thank you for your info. This first prototype is mostly for testing and includes a homemade divider made from some surplus Vishay 2.5/5 ppm/degree as well as some manually measured and selected metal film parallelled resistors.

The whole project is more like a tinker kit. After studying the web and reading this forum I now have these devices from LT: 1236, 6655, 399 - 1043, 1012, 1050 and 1097. They are all a mix of plastic MSOP, SOIC/SOP, DIP (living in Thailand on low budget leaves me few options but take what I can get from Chinese dealers and fleabay).

I have ordered 2 more LTC2400 (9.99 USD :o). My next prototype will be with 3 references that are very stable according to my 34401: one for 2.5, 5 and 10 V each. Also DHT11 and BMP085 for measuring temp, humidity and barometric pressure. By letting relays circle through the 3 refs (5 and 10 V divided down to 2.5) and using environment data I will make a linear interpolating software autocalibrating feature. Much cheaper and more fun than a fortune in precision resistors.

I am not really a 'volt-nut'. It is more like a hobby that fills the void after stopping drinking beer all day  :wtf:. The most precise externally confirmed voltage ref point I have is a board from gellerlabs confirming a 10 yo uncalibrated 34401A. And I will leave it like that.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on September 23, 2013, 06:52:34 pm
I am not really a 'volt-nut'.

But it seems you are on the best way to get infected.

Just some thoughts:

with a LTC1043 you can get a 2:1 3:1 4:1 or 3:2 voltage divider which is much more stable over temperature or time than every resistor divider. (Although the absolute ratio will be off for some ppms and you will need a high impedance buffer like LTC1050 or LTC2057 at the output).

The LTC2400 LTC1043 and LTC1050 (all self adjusting or chopping devices) are nearly independent with temperature, humidity or mechanical stress. So the package and PCB material plays no role.

The voltage reference is the most critical part. The best experiences (for 5V references) regarding hysteresis, tempco and long term stability I have made with (selected, aged and mechanically decoupled) AD586LQ devices in ceramic package. The LM399 (hermetically metal package) will also be a very good choice after 2-3 months pre ageing.
On the plastic devices the general rule is that the same chip in a (larger + more stiff) DIP package will perform better than in a SO or MSOP package.

Standard metal film resistors have a relative large ageing rate (up to 1000 ppm). For precision applications you will need at least wire wound precision resistors (3-5ppm/K and 25-50ppm ageing) or vishay metal foil (0.2-2ppm/K and 25-50ppm ageing).

with best regards

Andreas

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 23, 2013, 07:26:32 pm
Thanks again. I think I will more or less stay away from high end resistors. I have 4 Vishay 0.01% and plan to buy a single 0.005% reference resistor (USD10+4shipping ).

I got the LTC1043 idea from one of your posts. I bought the LTC1050 together with a single 1N829A in order to make an old fashion ref.

But I realize that the LTC1043 and separate batteries for my 3 most stable refs combined with a lot of cheap good HK19F relays from fleabay makes me able to let the uC self calibrate the display at 0, 1.25, 2.5, 3.75 ... up to (10+5+2.5) 17.5 V. By using a software criterion the calibration will start by itself - and also I can force calibration with a push button. Since my front end dividers must hold calibration only for the few seconds it takes to perform the measurement, I can use almost any resistors. And metal film resistors are almost free today.

The method might be somewhat strange. But I like the mix of software, analog hi tech IC's, discrete logic, passive components and relays. I am more an experimenter than a builder ...
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on September 23, 2013, 08:54:58 pm
I bought the LTC1050 together with a single 1N829A in order to make an old fashion ref.

The LTC1050 can only deliver around 2mA. So if you want to supply the 7.5mA constant current for the 1n829A you will need a additional power stage.

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: echen1024 on September 24, 2013, 01:42:18 am
Would something like the LM399 work as the voltage reference? How would I get the voltage down, and also, are there any other ADI or TI parts that I can use?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 24, 2013, 05:01:16 am
Would something like the LM399 work as the voltage reference? How would I get the voltage down, and also, are there any other ADI or TI parts that I can use?

Yes you can use LM399. But it will need a PS/Batt 12 V or more. The LTC2400 takes 5.5 V max. The reason for the fuzz about LTC6655 is that it is modern 2.5 V and gives itself to battery operation in 3.3 V environments. To bring the LM399 down to 5 V you can use either a resistor divider/buffer or first bring it up to 10 V and then divide it with the LTC1043 capacitive divider. Andreas is the expert on all this, I am sure he will give advice.

You can get 24 bit ADC's from TI and others also. The same goes for refs and op amps. You can mix whatever you like - just keep in mind that your end product can quite easily give you some 17 - 19 'noisefree' bits (around 5-5.5 digits or 0.0025% or 25ppm) if you use pieces with similar precision.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on September 24, 2013, 07:02:31 am
Would something like the LM399 work as the voltage reference? How would I get the voltage down, and also, are there any other ADI or TI parts that I can use?

What other ADI or TI parts: references or ADCs?

In my opinion the most precise way (without using precision resistors within a temperature controlled cabinet) to divide the LM399 to usable ~5V is a 3:2 divider giving around 4.6V as reference voltage.

I have already simulated this with LTSPICE:

Input voltage is from a LM399 simulated as 6.86V with some "AC noise"
C4 is the 10 nF (but I need it doubled because the simulation uses 2 different LTC1043 instead of one)
C3 is charged to 1/3 of the input voltage and charged by C1+C2.
So the output voltage is Input voltage minus C3 voltage giving the 4.6V.
C5 is selected exactly for 1.5 times of C1...C3 to optimize settling time (and thus minimizing output ripple).
Of course the output has to be buffered by a OP-Amp to maintain stability.
It is a good idea to select C1...C3 for equal values. And C5 for a exact 1.5 fold capacity.
This will minimize startup time and ripple.
As power supply I have used 14V because I want to measure up to 10V with a second LTC1043 and because the heater current and PSRR of the LM399 will be lesser with higher power supply. Of course with specioalised cirquits you can use the LM399 from around >9V on.


With best regards

Andreas




Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 24, 2013, 09:48:25 am
I bought the LTC1050 together with a single 1N829A in order to make an old fashion ref.

The LTC1050 can only deliver around 2mA. So if you want to supply the 7.5mA constant current for the 1n829A you will need a additional power stage.

With best regards

Andreas

My plan is to copy the 'nostalgia' feedback loop typical of the Khron-Hite 10 V references. I see people buy them for 2-300 dollar. But the reference loop can be made for 20-40 dollar: an 1N829A, a LTC1050, a discrete 2-transisor current source with a low tempco zener, and a driver transistor. (Since you say a chopper is needed for the LTC1043 I can buy a LTC2057 later).

The resistive divider might be as you say the most expensive part (but I only need 2 resistors). I have seen on volt-nut that someone has posted schematic. If I do no find it, the schematic of the beauty of a simple circuit that is stable within a few ppm from year to year can be studied at 20:00 in this video.


EEVblog #210 - Krohn-Hite DC Voltage Standard Teardown & Calibration (https://www.youtube.com/watch?v=onqsjDJq4I0#ws)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: echen1024 on September 24, 2013, 03:54:48 pm
Probably just a precision voltage divider then... or more LT samples...
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: mtdoc on September 26, 2013, 02:12:52 am
Super cool project!  :-+

I picked up one of these LTC2400 Arduino breakout boards (http://www.ebay.com/itm/LTC2400-24bit-analog-to-digital-converter-ADC-module-temp-sensor-SPI-AVR-arduino-/111005456125?pt=LH_DefaultDomain_0&hash=item19d870d6fd) from Ebay to simplify using it in an arduino project to monitor current into and out of my solar system batteries via a 500amp/50millivolt shunt.  Didn't think I had the soldering skills to use it otherwise....   The voltage reference is not as high end as the LTC6655 but it's probably good enough for my project. The board does have pads in place to substitute a somewhat better Analog Devices REF195E 5.0V reference.

This stuff is all new to me but the LTC2400 is just the ticket I needed for my project since the Arduino's built in 10bit ADCs did not have the resolution I needed.

I'm looking forward to seeing what your final build looks like!
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 26, 2013, 03:54:44 am
Super cool project!  :-+

I picked up one of these LTC2400 Arduino breakout boards (http://www.ebay.com/itm/LTC2400-24bit-analog-to-digital-converter-ADC-module-temp-sensor-SPI-AVR-arduino-/111005456125?pt=LH_DefaultDomain_0&hash=item19d870d6fd) from Ebay to simplify using it in an arduino project to monitor current into and out of my solar system batteries via a 500amp/50millivolt shunt.  Didn't think I had the soldering skills to use it otherwise....   The voltage reference is not as high end as the LTC6655 but it's probably good enough for my project. The board does have pads in place to substitute a somewhat better Analog Devices REF195E 5.0V reference.

This stuff is all new to me but the LTC2400 is just the ticket I needed for my project since the Arduino's built in 10bit ADCs did not have the resolution I needed.

I'm looking forward to seeing what your final build looks like!

Yes - that is the same seller where I found the chip for some 10 dollar, while the plug-and-play-board you have bought is a bit more expensive but has on-board reference REF3040. It is OK for your use, but not for a Voltmeter (imo). I have studied the seller's download files, and there is schematic for your board. It is quite easy to put in a better reference later. He recommends REF195E, which imo also is good. I have a few that I use for other purposes. If you do it, you must put in a 7805 (solder pads are there already), feed the board with 9 V (that goes directly to the 5 V reference and via the 7805 to the LTC2400), and remove L1 (and better remove the old reference). If you go for a reference of another type that uses connections to more then pins 2,4 and 6 (standard), then you will have to put in a few small wires.

His code is a mod from the first (?) published code from a German man/university lab. There is code both for serial window and a 1602 display. I use parts of this code - it works OK but needs some cleanup.

I'll be back with a more decent shield-build that I will keep as my second precision DC Voltmeter  :-DMM
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: bingo600 on September 26, 2013, 03:25:05 pm
I have some MAX6198-AESA (8-Pin SOIC) (4.096v)
http://datasheets.maximintegrated.com/en/ds/MAX6190-MAX6198.pdf (http://datasheets.maximintegrated.com/en/ds/MAX6190-MAX6198.pdf)

They seem to have quite the same specs. as the suggested REF195E.
But DS says 500uA , would that work as a ref for the ADC ?

/Bingo
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 26, 2013, 09:18:42 pm
In my view the MAX6198 will work fine. Good for battery use. The LTC2400 has analog input leakage current max +- 10 nA, so 500 uA supply from the ref is ample. Some of the feinschmecker members here might think a max tempco of 5 ppm/degree CELSIUS* is a bit high (it will typically be lower), but I am more pragmatic. I never have the time for rigging decent measurement conditions. If I can see 5.000 0xx V once, I am OK  :-+ .

NOTE* The CELSIUS is an early Christmas present to some our European Central Continental brothers that like to point of that if it ain't Kelvin, it is not scientific. Nice to see an American datasheet using Celsius.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: branadic on September 26, 2013, 09:28:43 pm
Quote
NOTE* The CELSIUS is an early Christmas present to some our European Central Continental brothers that like to point of that if it ain't Kelvin, it is not scientific. Nice to see an American datasheet using Celsius.

Got it, but what do you want to expect of a continent that still measures in units of body parts  :-DD
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 26, 2013, 10:37:49 pm
Quote
NOTE* The CELSIUS is an early Christmas present to some our European Central Continental brothers that like to point of that if it ain't Kelvin, it is not scientific. Nice to see an American datasheet using Celsius.

Got it, but what do you want to expect of a continent that still measures in units of body parts  :-DD

Just joking  ;D. I must admit that I have learned a lot from the continental European members here. Thanks to all.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: echen1024 on September 27, 2013, 02:59:51 am
Rest of world: 10^x for most units
United States, 5280, 16, 128, 4, 1760, WTF????
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 27, 2013, 10:25:46 am
DVM Shield for Arduino. Need one day to fix the code. Video of functioning meter tomorrow  ::) Yep  >:D


(https://www.eevblog.com/forum/index.php?action=dlattach;topic=20959.0;attach=61604;image)


(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=61603;image)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: bingo600 on September 27, 2013, 03:34:51 pm
Thanx QV   :)

Nice shield  :-+ :-+

Is that a "SHTxx" or clone i can spot ? (Temp + Humi) ?

/Bingo
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 28, 2013, 12:49:00 am
Thanx QV   :)

Nice shield  :-+ :-+

Is that a "SHTxx" or clone i can spot ? (Temp + Humi) ?

/Bingo

Yes it is a cheap flebay DHT11 clone. There is little space for components on the main shield, so I have put in a relay for range, a temp/humidity sensor, a DIY low tempco (5-10 ppm,  I will calibrate in software) resistive divider (more than 10 series/parallel hand picked / measured metal film resistors :wtf:) and some small fleabay scrap PCB's behind the Nokia 5110 display. Serves two purposes - increases the area to which I can put components (also with SMD pads) and serves as support for the display (which is mounted on a single 2.54 header row).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 28, 2013, 03:31:31 am
https://www.youtube.com/watch?v=jr4AItPMjmM (https://www.youtube.com/watch?v=jr4AItPMjmM)

Precision Voltmeter Shield for Arduino - 5.5 Digit DVM Digital Voltmeter (https://www.youtube.com/watch?v=jr4AItPMjmM#)

.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: senso on September 28, 2013, 04:19:26 am
Nice project/idea, following  ;)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: walshms on September 28, 2013, 04:53:10 am
Rest of world: 10^x for most units
United States, 5280, 16, 128, 4, 1760, WTF????

Have you seen the dysfunction in Washington DC?  Can you really be surprised that imperial units still haven't gone away?  They can't even agree to disagree...  :-DD

Not everyone over here is that screwy... though admittedly, it depends on where you are in the US as much as anything else. 

Now, personally, I agree with Walter Lewin (professor at MIT) who said to his first semester physics students that in his class they work in SI units.  "12 inches in a foot?  Three feet in a yard?  It'll drive you nuts.  I prefer to work decimal, and I hope you will too."
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: BravoV on September 28, 2013, 05:08:44 am
About the ltc2400 results displayed at the lcd, do you use averaging ?

From the latest video, it looks like the lcd update speed is still a bit faster making those 2 least significant digits flipping wildly too fast.

Thanks for sharing this.  :-+
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 28, 2013, 01:18:02 pm
No, the ADC is still free running. The delay is from drawing the face and a delay command. I want to get as much stability I can out of the hardware before I manipulate the output from the ADC in software. I will test some changes in decoupling and supply regulation first.

I am very impressed with the LTC2400. It matches the 34401A for 4-5 decimal digits. Next week I will make a video that presents the display free running, averaging and showing median value (no more smiley  :o). Sooner or later - when I get a DAC - I will make simultaneous measurement pairs from the two meters via RS232 and do a linear regression Y=aX+b for the 256 measurement pairs on PC (8 bit or more DAC from fleabay, or maybe I use  PWM from Arduino).

Anyway - no averaging in the video. What you see is the raw (quite low noise) output from the LTC .
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on September 30, 2013, 07:17:36 am
I have done some changes on the regulator and front end, and added an average output to the display. More below the video ...

LTC2400 6 Digit Voltmeter DVM Accuracy +- 0.01% (https://www.youtube.com/watch?v=VPHH26H3gyY#)

I have also done some linear regression on the output of the LTC2400 vs. Agilent 34401A, and the correlation coefficient is of the type 0.9999... With data of this precision class, it is somewhat pointless to do statistics because only a single 'outlayer' sample - let's say 0.01% away from expected value - makes the correlation change an order of magnitude.

Furthermore - there is a small nonlinearity somewhere: for certain voltages the LTC2400 lies consequently over or under the Agilent. We are talking about the order of 10s of microVolts. I am too lazy to look into it.

What is imo important to know is that by just connecting the parts and give your software a single calibration constant (the value of the reference for the ADC as measured by another meter), you get a 6 digit DVM with accuracy better than +-0.01%. With some more work you will get 0.005 (the Agilent has basic DC accuracy 10 V of 0.0015).  Only if you are aiming for very high precision do you need a capacitive divider front end. A precision resistor divider is simpler and imo adequate in this case.

However - the open solution here means that I can choose almost any short time accuracy I want. This is the ultimate DIY artifact calibration:

1. Get access to a precision DVM with RS232 output stream.

2. Feed this meter and the LTC2400 with a full step cycle from a DAC fed by a precision ref.

3. Let your software for the uC read (from SPI and serial UART RS232) and store all pairs of measurement for the same DAC voltage value.

4. Create a software look up table based on thhe measured pairs, a binary search algorithm and linear interpolation.

5. Let the LTC2400 output the table search value for the voltage it has read. If this is in the table, the LTC2400 will output the value of the artifact instrument. If not,  it will interpolate between the smallest higher and the highest lower reading for the artifact meter.

This procedure emulates the other instrument to arbitrary precision (limited by number of bits for the DAC, available memory for the uC, and time span for short time drift for the LTC2400 board assembly). The calibration performs in seconds and can be done anytime you need known precision.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: BravoV on September 30, 2013, 07:49:15 am
Curious what will happened on the tempco/drift at your vref if you blow or swirl around that circuit board with warm air like from a hair dryer ?  >:D
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 01, 2013, 12:46:17 am
Well - since the gadget is now working and there seems to be at least a few people who would like to build this less than 50 dollar board (that beats most instruments up to USD 500) in its intended range - low DC voltage - it is time to look at some wiring.


Absolute Bare Bone Basic Versions (they are all the same, but a bit different - good for studying). First NOTICE that the LTC2400 takes a SINGLE positive supply voltage (red wire  :-/O) 2.7-5.5 V on pin1 (VCC) and the 'zero/black/negative' lead of the power supply is connected to pin4 (GND). Furtermore - the reference voltage on reference input pin2 (VREF) must NOT exceed VCC. The positive voltage that is to be measured on the meter input pin3 (VIN) must NOT exceed VREF*1.125 (more details in the datasheet). Both VREF and VIN are referenced to pin4 GND. After this unneccesary 'baby talk' it is your own fault if you fry the chip  :-DD

(LTC2400 24 Bit ADC Datasheet http://cds.linear.com/docs/en/datasheet/2400fa.pdf (http://cds.linear.com/docs/en/datasheet/2400fa.pdf))


1. fleabay board documentation http://www.ebay.com/itm/LTC2400-24bit-analog-to-digital-converter-ADC-module-temp-sensor-SPI-AVR-arduino-/111005456125?pt=LH_DefaultDomain_0&hash=item19d870d6fd (http://www.ebay.com/itm/LTC2400-24bit-analog-to-digital-converter-ADC-module-temp-sensor-SPI-AVR-arduino-/111005456125?pt=LH_DefaultDomain_0&hash=item19d870d6fd))

(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=61921;image)

This is part of the schematic for a board that plugs into Arduino SPI (pin 13, 12 and 10). It runs on 5 V from the Arduino with a 'so so' reference at 4.096 V. It is prepared for a better ref. If you choose VCC 5V you must choose Vref 4.096 or lower because of overhead for the reference chip. In this case both the ADC and the ref are fed from 5 V. If you supply the board with 9 V and put in a 78L05-type regulator for the LTC2400, you can use a 5 V reference (fed with the 9 V). Most references use only 3 pins: supply pin 2, ground pin 4 and output Vref pin 6, so you can put in almost any reference you like. But the better it is, the better you preserve the precision of the LTC2400. The capacitor (looks like C40?) is for hardware smoothing/averaging of the measured input voltage and is used/not used in Linear Technology's schematics. Full schematic for this plug-and-play board is in the link over. (If you are going to use more than one SPI device on Arduino then you will have to modify the connection of pin 5 Chip Select (CS). Consult an Arduino forum).

Notice the resistor divider. If you connect your measurement to VIN2 and then connect the center tapping in the divider to VIN (VIN1), then you can measure higher voltages then Vref. The four leftmost pins on the LTC2400 (pin 1 to 4) are explained in the beginning of this post - pins 5-8 are SPI (pin 5, 6 and 7) and noise suppression (pin 8 ). Pin 8 is connected either to VCC or GND depending on your mains frequency (see datasheet).


2. LTC2400 Datasheet http://cds.linear.com/docs/en/datasheet/2400fa.pdf (http://cds.linear.com/docs/en/datasheet/2400fa.pdf)

(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=61923;image)

This figure is from the LT datasheet, and should be self-explaining by now.



3. LTC2400 Datasheet

(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=61925;image)

Schematic of an LT Demo Board. Forget the 74HC14 pulse-shaper/drivers for SPI. Note that the board is fed by 9 V battery (8-15 V wall wart) and the reference chip LT1236 serves BOTH as regulator for the LTC2400 and as reference voltage for the same. Note the ample use of decoupling capacitors. LT advices to place them close to the IC pins.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 01, 2013, 04:51:28 am
Test code for LTC2400:

Arduino (C++ dialect):

http://interface.khm.de/index.php/lab/experiments/connect-a-ltc2400-high-precision-24-bit-analog-to-digital-converter/ (http://interface.khm.de/index.php/lab/experiments/connect-a-ltc2400-high-precision-24-bit-analog-to-digital-converter/)


(A copy of the code over, but for another display)

http://www.ebay.com/itm/LTC2400-24bit-analog-to-digital-converter-ADC-module-temp-sensor-SPI-AVR-arduino-/111005456125?pt=LH_DefaultDomain_0&hash=item19d870d6fd (http://www.ebay.com/itm/LTC2400-24bit-analog-to-digital-converter-ADC-module-temp-sensor-SPI-AVR-arduino-/111005456125?pt=LH_DefaultDomain_0&hash=item19d870d6fd)


C code:

http://www.embed4u.com/24-bit-adc-ltc2400-c-code/ (http://www.embed4u.com/24-bit-adc-ltc2400-c-code/)


Code for PIC (so it says, but I couldn't say ...)

http://www.piclist.com/techref/postbot.asp?by=thread&id=LTC2400&w=body&tgt=post (http://www.piclist.com/techref/postbot.asp?by=thread&id=LTC2400&w=body&tgt=post)


There is also some assembler code in the documentation for the Demo Board. Link in earlier post.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 02, 2013, 11:19:03 am
One of the members here has kindly agreed to help me make a LTC2400 experiment board. The main circuit will be based on fig. 4 in http://cds.linear.com/docs/en/application-note/an78fs.pdf (http://cds.linear.com/docs/en/application-note/an78fs.pdf):

(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=62038;image)


Over and to the right of the LTC2400 will be footprints for 2 reference chips and a 3 terminal regulator. This will allow the ADC and other circuitry to be fed by:

1. External 5 V (jumpers on the on board two refs and the regulator)
2. Any suitable 3 terminal regulator (jumpers on the two refs)
3. Any suitable 5 V ref or the low noise LTC1655-5
(... and all other combinations that makes sense by using jumpers/wires)
(... moreover - the LTC2400, LTC6655-2.5 (and a buffer op amp) can run on 3.3 V)

The capacitive front end can be used alone (or only half of it can be used) by putting a jumper for the op amp (please see the other circuit diagrams in the linked application note).

The op amp buffer - with or without a precision resistive 2-3 range divider - can be used alone by using jumpers on the footprint of the LTC1043.

Imo it will not be difficult to arrange numbered test points, jumpers and optional traces in a way that allows almost any circuit - from bare bone ADC with ref to a very high precision meter - to be made on the board.

There will also be room for a multiplexer front for people who does data logging of sensors or voltage references. All ideas will be gratefully considered. Guests can post comments on the latest/last video over. The Gerber files will be publicly accessible.

Trace layout, length, width, decoupling and ground will have to be discussed when the first layout is presented. Imo the schematic must be done first.

I will order a batch - hopefully by the end of this month.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 02, 2013, 11:21:10 am
There are chips with built-in high resolution adcs (C8051 for example). You could have done all of your stuff with one such chip + reference.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Harvs on October 02, 2013, 11:36:06 am
Cool, this would be a nice board to have a play with.

Do you know if there's any "jelly bean" equivalent to that switched cap building block.  I've just done some searching but haven't come up with anything.  It looks like a really flexible part that'd be very interesting to use, but really quite expensive at around $8 a pop.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 02, 2013, 11:40:18 am
I really do not know. I learned about the chip accidentally reading an old post from Andreas. I am sure someone will give him a hint so that he can answer your question,
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Harvs on October 02, 2013, 11:57:48 am
Yeah, first I've seen it as well.  I guess you could do something similar with a standard jelly bean analog mux by switching it with spare MCU timer, but probably unlikely to be as accurate. I haven't actually done any reading on that one, just a thought.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Harvs on October 02, 2013, 01:41:40 pm
I'm not going to de-rail your thread any further, but I thought I'd just add this.

The concept interested me enough that I just built up the basic voltage doubler circuit for the switched cap block as in the Jim Williams app note but using a jelly bean TI CD4052BP 2x 4:1 analog mux and some rubbish caps on a breadboard. Switching was at 500hz just using my function gen. The result, with 1V input -> 2V output, there was maybe 1 or two counts low on the least significant digit of my 5.5 digit bench meter (but that was unbuffered so had a 10Mohm load).  IMO that's incredible for <50c worth of parts and no matching of anything.

Ok, there's bound to be things like leakage for the likes of the 24-bit ADC, but for less volt-nuttery applications it could make for some pretty cool circuits.  I'll have to read that whole app note now...
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 02, 2013, 09:11:29 pm
Do you know if there's any "jelly bean" equivalent to that switched cap building block. 

The only cirquit that comes near to the LTC1043 is the MAX4053A (note you will need the A-version).
But you will need 4 MAX4053a + a clock cirquit to replace 3 LTC1043. And pricing of the MAX4053A is in the same range as LTC1043.

cap block as in the Jim Williams app note but using a jelly bean TI CD4052BP 2x 4:1 analog mux and some rubbish caps on a breadboard. Switching was at 500hz just using my function gen.

My experience with CD4053 (i.e. HCF4053) in a PWM divider cirquit is that you get around 200 uV (40 ppm) nonlinearity in a 5V range.
With MAX4053A you get below 13 ppm and 2-3 ppm are achievable with proper adjustment.
The 74HC4053 is even worse with 600uV nonlinearity.

So you get what you pay for.

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: mtdoc on October 02, 2013, 09:41:30 pm
Great stuff quantumvolt.

Any chance of seeing your modified Arduino code? :D


 
There are chips with built-in high resolution adcs (C8051 for example). You could have done all of your stuff with one such chip + reference.

It looks like the C8051s only have 10 bit ADCs (http://www.mouser.com/ds/2/368/C8051F34x-46984.pdf) (as do the Arduino Atmel chips) which just won't cut it for my application.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 02, 2013, 09:53:36 pm
Quote
It looks like the C8051s only have 10 bit DAC (as do the Arduino Atmel chips) which just won't cut it for my application.

You are looking at the wrong C8051. Look at the 350s: the analog features those chips have are nothing short of remarkable.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: mtdoc on October 02, 2013, 10:03:35 pm

You are looking at the wrong C8051. Look at the 350s: the analog features those chips have are nothing short of remarkable.

Ok - I see those now..  Thanks.

Still, for dilettantes like myself, the LTC2400's SO8 package and an Arduino is easier to deal with... ;D
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 03, 2013, 12:33:40 am
Thanks to Andreas for stepping in with expert knowledge  :)

Any chance of seeing your modified Arduino code? :D

Concerning the code and measurements (some people have asked why I do not give numbers for noise etc.):

I will put my code snippets in this thread, including a data logger time series module and a display from Arduino serial to USB PC that I am making now. But it is not MY code - it is all copy and paste and merge from different sources. Also I am too lazy to clean up the code, so my hope is that someone later on writes a clean modularized commented code.

Furthermore - I do some crude measurements and statistics of noise and stability. But I do not have good enough equipment. For me WYSIWYG and I am totally OK trusting the specs and other measurement results published by Linear Technology. This ADC family is very well documented, and as mentioned earlier - there even is a Demo Board with software from LT.



(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=62149;image)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 03, 2013, 07:33:30 am

You are looking at the wrong C8051. Look at the 350s: the analog features those chips have are nothing short of remarkable.

Ok - I see those now..  Thanks.


Mhm,

when comparing the C8051F350 ADC with the LTC2400 in the datasheet then the LTC2400 is about a order of quantity better. (It should be clear that analog + digital features on the same chip are always a bad compromize).

Gain/full scale error typ 4 vs. 20 ppm
Gain drift 0.02 vs 0.5 ppm/K
Offset 0.5 (of the shelf) vs 5 ppm (after calibration!)
Mains frequency rejection 130 vs 100 dB

The INL is specced equally. But on the LTC2400 the shape of the INL is well known and thus can be easily calibrated out by a single parameter (mid scale calibration) to below 1 ppm.

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 03, 2013, 04:39:39 pm
Thanks again Andreas. You are a walking Volt Lexicon  :D.

I am looking through all the links I have collected, and I found a new one that imo deserves presentation. There is a real DIY prototype (breadboard and copper clad), noise measurements and another version of the test code I have linked to in an earlier post in this thread. The chip is LTC2440 - a differential input version of the LTC2400. Imo interesting and useful for the real breadboarders and Manhattan style prototypers. And another proof that carbon film resistors are not precision stuff (the builder of the prototype knows very well):


Source: http://dangerousprototypes.com/forum/viewtopic.php?t=4247p=42053 (http://dangerousprototypes.com/forum/viewtopic.php?t=4247p=42053)



(http://dangerousprototypes.com/forum/download/file.php?id=8895&sid=95b34d9f144e3e0c884aba4d78b56786&mode=view) 
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 03, 2013, 04:50:31 pm
The 2440 is a great little chip, widely used (in comparison, 2400 is rarely seen) and a lot easier to manage than the 2400 (it being differential).

But still, 24-bit adc chips are far beyond what a good analog engineer could master.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: mtdoc on October 03, 2013, 05:29:50 pm
Thanks again Andreas. You are a walking Volt Lexicon  :D.

I am looking through all the links I have collected, and I found a new one that imo deserves presentation. There is a real DIY prototype (breadboard and copper clad), noise measurements and another version of the test code I have linked to in an earlier post in this thread. The chip is LTC2440 - a differential input version of the LTC2400. Imo interesting and useful for the real breadboarders and Manhattan style prototypers. And another proof that carbon film resistors are not precision stuff (the builder of the prototype knows very well):


Source: http://dangerousprototypes.com/forum/viewtopic.php?t=4247p=42053 (http://dangerousprototypes.com/forum/viewtopic.php?t=4247p=42053)


Yes- ironically that jbeale post on the dangerous prototypes board is what initially led me to the LTC 2400 (mentioned in one of the posts in that thread) for my project.   His board using the 2440 is a work of art! and likely beyond my skill set to reproduce.....
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 04, 2013, 04:09:57 pm
The 2440 is a great little chip, widely used (in comparison, 2400 is rarely seen) and a lot easier to manage than the 2400 (it being differential).

...

...

Yes- ironically that jbeale post on the dangerous prototypes board is what initially led me to the LTC 2400 (mentioned in one of the posts in that thread) for my project.   His board using the 2440 is a work of art! and likely beyond my skill set to reproduce.....

After I saw your posts, I broadened my web search to the whole LCT2400 family. By chance I looked closer at one hit for LTC2449. That and a fried USB sound card  :-// led me by chance to the Linduino (https://www.eevblog.com/forum/projects/linduino-smart-isolated-arduino-compatible-board-for-daq-demo-boards-etc/). From there I found LTSketchbook (http://www.linear.com/designtools/linduino.php) -  open C code for LT Demo Boards including LTC2418, LTC2422, LTC2449 and LTC2484.

So I will go through it, and try to copy/paste/edit a minimal code for the LTC2400. I challenge other Arduino users to do the same - please post it here.



(http://www.linear.com/images/general/dc2026.jpg)

Linduino - Isolated Arduino compatible demo/evaluation board mediator with open source code
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 05, 2013, 02:10:57 pm
Instead of sticking to my plans (build something easy, nice and new), I tried to do some measuring and made some C++ spaghetti code so that I can see the output from the LTC2400 before I start some serious averaging. As long as the signal is not drifting in trend, even noise of magnitude comparable to or greater than the signal usually can be smoothed out.

But I had problems like usual     :bullshit:  :scared:  :bullshit:

- Both the source and the meter are unshielded. The normal hands-holding-the-camera disturbance is obvious, but the readings changed when powering the camera and went back when turning it off. I will buy some copper tape and a tripod.

- The USB cable for serial data to PC shifted the readings. Different ground levels and ground noise (?). The only solution is opto couplers and isolation transformers (?).

- & other hassle ...


Anyway - the voltage source is the TI REF5050 based board from voltagestandard.com. The reference chip is proclaimed to have noise 3ppm / V. That should be 15 uV. But when the datasheet does not state whether it is max or typ, then there is imo no reason to believe it. The series plot is 20 uV between the upper and lower lines. The plot is raw ADC output - no averaging. Imo very good performance of the LTC6655 and LTC2400. And the cheap but in my case very stable REF5050 has a nicely distributed noise of around 25-30 uV that easily is averaged away.


LTC2400 DVM + LTC1655 REF measures TI REF5050 (https://www.youtube.com/watch?v=UHBgNWQ8HYc#)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 05, 2013, 06:01:20 pm

- Both the source and the meter are unshielded.

- The USB cable for serial data to PC shifted the readings. Different ground levels and ground noise (?). The only solution is opto couplers and isolation transformers (?).


Anyway - the voltage source is the TI REF5050 based board from voltagestandard.com. The reference chip is proclaimed to have noise 3ppm / V. That should be 15 uV. But when the datasheet does not state whether it is max or typ, then there is imo no reason to believe it. The series plot is 20 uV between the upper and lower lines. The plot is raw ADC output - no averaging. Imo very good performance of the LTC6655 and LTC2400. And the cheap but in my case very stable REF5050 has a nicely distributed noise of around 25-30 uV that easily is averaged away.

Hello,

In my experiments I use also unshielded LTC2400 devices.
In my lab I use a large metal ground plate where all devices are placed.

USB-cables are terrible (Standard RS232 lines are better but not good). I use opto couplers and battery supply for the references and for the ADC cirquit. Transformers also have large capacities between primary and secondary side and will create some shifts to the output.
Even the 0.25pF of the photo couplers create a few uV shift in the output depending on the placement of the USB-cables.

If you look closer to the REF5050 datasheet you will find that the noise is "typical" 15 uVpp within 0.1 .. 10 Hz.
Usually the typical noise values are reached by about 90% of the parts. Except for some "defective" parts which have much larger noise.
And the LTC2400 also has typical around 10uVpp noise. But if your pcb layout is not perfect you will easyly have a lot more noise than the 10uVpp. I would try to measure the own reference voltage or zero input (with short and long cables) to find out what the ADC noise is.

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 05, 2013, 06:11:16 pm
Quote
the noise is "typical" 15 uVpp

The "typical" noise doesn't matter. What matters is how "disperse" the noise is (standard deviation).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 05, 2013, 07:04:22 pm

...
USB-cables are terrible (Standard RS232 lines are better but not good). I use opto couplers and battery supply for the references and for the ADC cirquit. Transformers also have large capacities between primary and secondary side and will create some shifts to the output.
Even the 0.25pF of the photo couplers create a few uV shift in the output depending on the placement of the USB-cables.

If you look closer to the REF5050 datasheet you will find that the noise is "typical" 15 uVpp within 0.1 .. 10 Hz.
Usually the typical noise values are reached by about 90% of the parts. Except for some "defective" parts which have much larger noise.
And the LTC2400 also has typical around 10uVpp noise. But if your pcb layout is not perfect you will easyly have a lot more noise than the 10uVpp. I would try to measure the own reference voltage or zero input (with short and long cables) to find out what the ADC noise is.
...


Thanks for the tip about the metal plate. I will try it, but there is no ground in the room. I have been thinking about making a Faraday cage with a see-through liftable mesh lid for a long time. May be another day ...

I am not sure I understand the battery stuff. I also used a battery here. But 1) The ref and ADC must have common analog ground. And 2) The ADC SPI output must have common digital ground with the uC that performs the SPI controller function (?). Or do you use free running ADC with isolation between the ADC and uC - NOT on the USB port as is the case with the Linduino isolated Arduino-compatible board over (I only use Arduinos for uC)?

And finally - I understand that the LTC2400 has noise - you say around 10 uV. But in set-ups like this, the noise is imo not additive (EDIT I did a quick search for "additive noise". It seems that I have to study this more.). So the noise from the ADC will be masked as long as the measured source has a noise level significantly greater. So what we see in the plot will mainly be determined by the p-p performance of the REF5050 (I see I have written 3 ppm / V in my post instead of 3 uV / V  :=\ ).

And as for the datsheets - my experience is that even the big companies are not perfect. In this link http://www.ti.com/product/ref5050&DCMP=hpa_dc_general&HQS=Other+OT+ref5050-prtl (http://www.ti.com/product/ref5050&DCMP=hpa_dc_general&HQS=Other+OT+ref5050-prtl) it says that the noise is "0.1-10Hz Noise (Max) (uVpp)    15" (so not "typical" as you claim).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 05, 2013, 07:48:07 pm

 So the noise from the ADC will be masked as long as the measured source has a noise level significantly greater. So what we see in the plot will mainly be determined by the p-p performance of the REF5050


Hello,

The noise of the ADC is at the output of the ADC (and thus is not further filtered).
The noise of the REF5050 is at the input of the ADC and is integrated during sampling time. So you will only see a limited bandwidth of the REF5050s noise at the output of the ADC.
And yes: if the noise is really gaussian and with the same bandwidth then it will add geometrically. (as square root of squares).

What you currently see on the ADC output is the EMI noise of your USB lines. And I'm shure that if you place your hand on the cirquit, or battery pack, or on the connection line between reference and ADC you will see a voltage output shift.

In my case I use a star ground layout on the ADC PCB and a small 8 PIN PIC12F675 to convert from SPI to isolated RS232. USB is connected via FTDI USB to RS232 converters.
You have always to remember that 1mA on a 1mOhm line (and thats only several mm) creates 1uV voltage drop.

With best regards

Andreas

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 05, 2013, 07:54:25 pm
Very informative post. I guess I have to study this stuff seriously - or go back to my nice and cosy USD 9.99 three-and-a-half digit DMM  :-DMM
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Harvs on October 06, 2013, 06:45:48 am
If capacitive coupling through an opto coupler causes issues, you could use an audio fibre optic connection.  Just make up an adapter at the PC end and feed it into/out of the UART on the uC.

I've done this before, it's easy to do and cheap, however can be a bit power hungry if you want speed.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 06, 2013, 02:05:22 pm
If capacitive coupling through an opto coupler causes issues, you could use an audio fibre optic connection. 
I've done this before, it's easy to do and cheap, however can be a bit power hungry if you want speed.

For my battery powered devices a TORX173 for e.g. consumes nearly a order of magnitude more power than the rest of the cirquit; 1-2mA for the reference including ADC and a few hundred uA for the PIC processor including transmission of 8 bytes to PC via photo couplers each 160 ms.

With best regards

Andreas
 
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 06, 2013, 05:17:46 pm
Thanks to Harvs and Andreas for this optic stuff. I didn't even know it was used outside science and big scale communication systems. But it has made me think. If I follow the pursuit of noise reduction to the bitter end, I will have no time for other things. (There is imo no end - only the frustrating work that yields smaller and smaller improvements the more you have succeeded until now. I think economists call it diminishing returns).

---

I read that it is impossible to get rid of the USB ground connection without a USB isolator. If this is correct and I understand it correctly I want to try these two things:


- use optocouplers with the two-wire Rx/Tx of RS232. If the ADC+uC is battery powered and have good ground design (star ground as in the LT schematic in a post over), and the 4-wire USB cable stops at a USB-to-RS232 breakout board at the Arduino, then one can galvanically isolate the ADC+uC from the PC by using 2 optocouplers (Rx/Tx).

- buy or make a USB Isolator based on ADuM3160 or similar. This will be a more general thing that I also can use for other measurements for example measuring 1 V differential at common mode 50 V DC with an op amp, collect the 1 V measurement on analog I/O on the Arduino, and then transfer the 1 V measurement from the Arduino that now has floating ground 50 V DC to the PC via USB cable.


Alternatively - since I very seldom need any precision measurements, I could take away the USB cable completely. When I want to collect measurements that will be sent to PC, I can store them in a software declared array, in I2C EEPROM or in SD card, and transfer them after the measurements are finished. I also have bought EEPROM chips, but never used them.

I don't know - really. But I do know that there has to be a limit somewhere. And I am happy to know that my limit is before beginning with one more technology (optic fiber) when I haven't even tested more traditional solutions.

There is so many other things I should have made in analog and mixed signals. Thanks for making me realize that I have to make priorities ...

---

And I also must rethink the whole less-than-1-ppm 'philosophy' (from a pragmatical point of view 10 ppm is very good and 25 or 50 ppm seems to be realistic most of the time). I knew this from before, but he states it very clearly:

"Although the chip has 24-bits of reso-
lution, it isn’t really a 24-bit converter.
The speci?cation sheet says the typical
output noise is 1.5 uV RMS. Gaussian
random noise has a crest factor (peak
divided by RMS) of about ?ve so 1.5 x 5
x 2 = 15 av pk-pk. At 5 V full scale, the
least-signi?cant bit isjust 0.3 uV so the
converter noise effectively “uses up” the
lower ?ve hits; at best we have a 19-bit
converter, which is really quite good for
an SO-S 1C!"

Source: www.tdl-tech.com/hires-vm.pdf? (http://www.tdl-tech.com/hires-vm.pdf?)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 06, 2013, 05:50:30 pm
Quote
And I also must rethink the whole less-than-1-ppm 'philosophy'

The datasheet or application note should walk you through the calculation of "noise-free" resolution, or the like, assuming idea conditions. Typically 24-bit dacs, you get 22bits (at the high-end) and 20 bits (at the low-end) of noise-free resolutions, again, assuming idea conditions.

Many other factors contribute to degraded resolutions. Layout is an obvious one, power supply is another. The filters used and clock choices are frequently ignored by novice designers, as does phase noises.

I said this before, it takes an analog giant to use a 24-bit figure.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: mtdoc on October 06, 2013, 05:52:26 pm
Great info in this thread!



Alternatively - since I very seldom need any precision measurements, I could take away the USB cable completely. When I want to collect measurements that will be sent to PC, I can store them in a software declared array, in I2C EEPROM or in SD card, and transfer them after the measurements are finished. I also have bought EEPROM chips, but never used them.


While not super cheap. couldn't one use an XBee set up to wirelessly stream the data to a PC?
Title: Re: PPMgeek! 5.5 Digit DVM + Volt Ref./Cal. (for Arduino or any uC w. SPI)
Post by: quantumvolt on October 06, 2013, 06:08:30 pm
Quote
LTC2400

That would be challenging for anyone to use.

Sorry. I do not understand your post.

Thanks dannyf.

This last post makes me understand your earlier post. However - it is LT and the other manufacturers that operates with 24 bit - not me.

If you read post #13 you will see I write:

"You can get 24 bit ADC's from TI and others also. The same goes for refs and op amps. You can mix whatever you like - just keep in mind that your end product can quite easily give you some 17 - 19 'noisefree' bits (around 5-5.5 digits or 0.0025% or 25ppm) if you use pieces with similar precision."
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 06, 2013, 06:18:23 pm
Great info in this thread!



Alternatively - since I very seldom need any precision measurements, I could take away the USB cable completely. When I want to collect measurements that will be sent to PC, I can store them in a software declared array, in I2C EEPROM or in SD card, and transfer them after the measurements are finished. I also have bought EEPROM chips, but never used them.


While not super cheap. couldn't one use an XBee set up to wirelessly stream the data to a PC?

Very good idea. Bluetooth, RF, even IR (almost free) will work. I am obsessed with Arduino shields and am always looking for an excuse to buy a new one or two  >:D. It is just that I haven't tried anything before, because the need to get rid of USB related problems was never there. One learns to walk by crawling ...  :-DD
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: mtdoc on October 06, 2013, 06:40:20 pm
Well for my project (solar system current measurement and logging via a 500A/50mv shunt), I need to process the data on a PC so I'll need some ongoing connection - wired or wireless.  I hadn't considered the noise issues a  USB cable introduces - so this thread is a great education for me.

Quote
I am obsessed with Arduino shields and am always looking for an excuse to buy a new one or two  >:D. It is just that I haven't tried anything before, because the need to get rid of USB related problems was never there. One learns to walk by crawling ...

Ha - Looks like I'll have an excuse to buy a new shield and learn more new stuff as well.. ;D   In my case, I'm not sure I'm even crawling yet - just now learning how to roll over and lift up my head :-[
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Harvs on October 07, 2013, 01:38:55 am

- use optocouplers with the two-wire Rx/Tx of RS232. If the ADC+uC is battery powered and have good ground design (star ground as in the LT schematic in a post over), and the 4-wire USB cable stops at a USB-to-RS232 breakout board at the Arduino, then one can galvanically isolate the ADC+uC from the PC by using 2 optocouplers (Rx/Tx).


Just do this then. It's a straight forward solution that will still give you a very good result.

However, to make your life easier, use one of the digital isolators such as http://www.digikey.com.au/product-detail/en/SI8421AB-D-IS/336-1755-5-ND/2170662 (http://www.digikey.com.au/product-detail/en/SI8421AB-D-IS/336-1755-5-ND/2170662)

Much easier to use than dealing with actual optocouplers, just pop it on the board in the signal lines, add power and decoupling and you're done.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 07, 2013, 09:55:49 am
@ mtdoc. Yes, shields are cool. When my Manhattan style prototypes go up in smoke, I can always retreat to a plug-in shield. Works every time ...

@ Harvs. Nah - it is a RF Transceiver with 2.5 kV resistant silicon isolation (?). To fancy for me. I found some 4N25 I bought for my trains last year.

But I will take a break from measurements - I hope I can realize my first modern PCB experience (last PCB from me was in the early 1970's) - namely the Gerbers and a test batch of the Arduino DVM Shield  ;D
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 07, 2013, 06:49:14 pm
I found some videos from a Japanese "volt-nut"? I am envious of the software. It is "QuikEval" http://www.linear.com/designtools/software/#QE1 (http://www.linear.com/designtools/software/#QE1) with board DC590B http://www.linear.com/demo/DC590B (http://www.linear.com/demo/DC590B) and the LTC2400 board DC573A http://www.linear.com/demo/DC573A (http://www.linear.com/demo/DC573A). If I don't get them for free I will have to save up 100 bucks  ;D


LTC2400 TEST 20130507 (https://www.youtube.com/watch?v=9ZCggIZOwH4#ws)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 08, 2013, 01:40:33 pm

USB-cables are terrible (Standard RS232 lines are better but not good). I use opto couplers and battery supply for the references and for the ADC cirquit. Transformers also have large capacities between primary and secondary side and will create some shifts to the output.
Even the 0.25pF of the photo couplers create a few uV shift in the output depending on the placement of the USB-cables.


I have not yet clearly understood if there are any important differences between isolating the SPI serial bus or isolating the USB with optocouplers in RS232 Tx/Rx. In the first case the ADC and reference will not share common ground with the microcontroller.

I have several uses for testing out this isolation:

- external noise in precision measurements (see posts over)

- making a voltage/current LCD display for a 2-channel supply with separate grounds (2 single supplies with separate windings on the same transformer) - the Arduino shares ground with only one rail

- protecting the microcontroller from differential to single ended measurements with common mode voltage up to 50 volt in a discrete op amp that I make as 2-quadrant DC source/sink


I found a good article by Jim Williams showing opto isolation on SPI. Schematic of the circuit using the LTC2400 for measurements on divided-down mains AC voltages:

(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=62817;image)


Source: http://m.eet.com/media/1131750/14298-pdf.pdf (http://m.eet.com/media/1131750/14298-pdf.pdf)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Bored@Work on October 08, 2013, 05:51:22 pm
I have not yet clearly understood if there are any important differences between isolating the SPI serial bus or isolating the USB with optocouplers in RS232 Tx/Rx.

Isolating USB is usually more difficult. Further, if you isolate at the USB interface, then almost all of the instrument can be at dangerous voltages. So you need very good isolation of things like the display, the buttons, etc.

Quote
I found a good article by Jim Williams showing opto isolation on SPI.

The first opto-isolator is connected in the wrong direction.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 08, 2013, 08:35:17 pm
I have not yet clearly understood if there are any important differences between isolating the SPI serial bus or isolating the USB with optocouplers in RS232 Tx/Rx. In the first case the ADC and reference will not share common ground with the microcontroller.
When you isolate RS232 you will need only 2 photo couplers.
When you isolate SPI you need a additional isolated power supply and usually more than 2 photo couplers.
(except when using the auto conversion mode of the LTC2400).

The common ground of the microcontroller does not mind if you use a star point ground layout.
Further you can put the PIC into sleep mode during conversion. (But I see no difference between sleep mode and normal mode).

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 08, 2013, 08:37:27 pm
The first opto-isolator is connected in the wrong direction.

No the LTC is used in "clock out" (auto conversion) mode.

With best regards

Andreas


Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Harvs on October 08, 2013, 11:15:47 pm
I have not yet clearly understood if there are any important differences between isolating the SPI serial bus or isolating the USB with optocouplers in RS232 Tx/Rx. In the first case the ADC and reference will not share common ground with the microcontroller.

Where I've got free choice of interface, I always choose an async serial (i.e. uart) to isolate because it's the easiest of them all.  You only have to worry about getting one signal through at a time.  No problems with clock skew.

In this case with the 2400 in clock out mode you won't encounter the typical problem with isolating SPI, that is that the master clock gets delayed once through the isolation barrier, then the data return from the slave gets delayed again on the return.  So you have twice the round trip delay to count for when working out your timings.  This is where fast digital isolators become much easier to work with, and you realise just how slow that optocoupler is going to make things.  However, if it's purely unidirectional things are much easier.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 09, 2013, 06:37:11 am
Thanks to all for advice.

I think I got it now. I have decided to first try 2 optocouplers on SPI. These are my main reasons:

It is imo simpler and 'cleaner' to isolate the DVM measuring unit (at the SPI bus) from all other circuitry that might be the object of measurements - including analog stuff like external voltage references, sensors, power supplies, amplifiers etc. that share ground with the Arduino and other uC's (Attiny, Atmega) in a small 'rack'. This breaking of instrument ground and DUT ground will not be achieved by only isolating the RS232 serial bus.

This also allows me to measure differentially on all components (without using a differential front end DVM). (Common ground for meter and test circuit allows only measurements on ground referenced components. ) I can also - by accident - reverse the measuring probes without creating a short (but probably only kill the ADC itself and/or it's front end).

At least this is what I think now ... Thanks again :scared:
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: echen1024 on October 10, 2013, 01:37:24 am
What optoisolator did you use?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: branadic on October 10, 2013, 05:27:21 am
Quote
without using a differential front end DVM

What? Are you serious?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 10, 2013, 12:54:26 pm
What optoisolator did you use?

I am away from home working, so I haven't tested it yet. But I found some 4N25 that I bought last year. If they cannot be used, I will have to order something more appropriate. I have no experience with optocouplers, so I will just try and fail.


Quote
without using a differential front end DVM

What? Are you serious?


Yes, I think I am. If the DVM module (ADC+REF) runs on a separate (galvanically isolated) power supply or battery, then the only connection between the meter and the circuits under measurement is the digital data transfer through optocouplers to the Arduino (which shares ground with the circuits being measured on). No ground shared between meter and uC or other circuits - only some kind of photonic pulse train throught the optocouplers.

So (in my world) the meter can measure everywhere (within it's voltage range) - the high side of resistor dividers (for example around 3 volt at the high side resistor for the LM399 10 V reference amplification) or at a low side ground current sensing shunt (let's say 2 amp through 0.01 ohm - should be 20 millivolt). The meter has no current path shared with the devices-under-measurement, and should be as ignorant about common mode voltages and common referencing (ground) as any cheap hand held battery powered DMM.

But I might be wrong ...
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 13, 2013, 05:05:52 am
Well - I did manage to get optocouplers on SPI. But the ones I had - PC817 (meant for my model railroad) are far to power hungry (I needed drivers, placed under the shield  |O - there is no room for components on the top). Also - which is more important - I had to change the code and Arduino libraries because there is no communication from microcontroller to ADC any more.

So I have changed my mind - I'll tear it down and isolate RS232 instead the same way as Andreas has described in an earlier post. I have a lot of Arduinos, so I will dedicate one for the DVM module. When running on separate power supply it will be a voltmeter with it's own uC having floating ground and only communicating through optocouplers to USB and/or other microcontrollers with a different ground potential.

(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=63331;image)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 13, 2013, 09:07:41 am
PC817 (meant for my model railroad) are far to power hungry
I use them also, at around 1mA. Ok this makes them relatively slow. In this case you will get (with a well adjusted receiver resistor to CTR) around 4800(-9600) baud. The clou is to find the working point where the receiver transistor is not saturated. Otherwise only around 2400 Baud can be achieved at 1mA.

With best regards

Andreas


Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 14, 2013, 09:54:17 pm
Thanks Andreas - I will try different currents.

I think I will not do much more with the LTC2400 before I have managed to make a PCB with room for the LTC1043 and LTC1050. I also have a LM399 I will try to use as reference (divided down without resistors).

I am writing some code for real-time data analysis - and when looking for code to re-use, I found that MicroChip publishes the full C++ code for acquisition and scope/histogram/statistics display for the 22 Bit ADC MCP3551. So I ordered one from England - overpriced. But even if MicroChip ships from Thailand where I live, the minimum shipping cost is USD 22.50 or something like that for a chip that is almost free.

I also ordered a board with a 24 Bit ADC HX711 for USD 6.99 from fleabay (just for fun  ;D). Later I will also buy a 24 Bit ADC from TI. I want to set up a big board 18x30 cm with all my best references and these ADC's (+ relays/uC/RS232). If I go for heating I will put the whole board in a lunch polystyrene box heated to 45 degC.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Christopher on October 15, 2013, 01:55:56 pm
Simon from LT just came to see me at work, because I sampled these chips and offered me a couple of eval boards for these chips! He's making a 24-bit DMM for a home project, too.

He said keep the reference on your desk burning-in for 2,000 hours to improve reliability.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: babysitter on October 15, 2013, 07:21:54 pm
Finally I get here, too - from the almost orphaned LTZ1000 thread.

As somebody who spend parts of his childhood in relay-based telephone exchange offices, counting the steps that x-y selector switches do, I want to ask:

What do you guys think about using reed relays for the capacitive dividers ?
They have very low ON, really high OFF resistance, are suitable for high voltage, cheap and you can custom-make them at home with your own windings and ms-tubing as electrostatic shield.

(Edited about e Minutes later: And while you are at it, use them to short your ADC inputs together to check null, and connect the input to your reference to do a 2-point calibration)

Greetings
Hendrik
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on October 15, 2013, 09:24:44 pm
He said keep the reference on your desk burning-in for 2,000 hours to improve reliability.
A real burn in or only a "run-in".
2kHrs are not much. My references need around 4kHrs run in phase until I can tell if they will
give a "good" or "poor" device.

What do you guys think about using reed relays for the capacitive dividers ?
Many older equipment used mechanical choppers (relays) to stabilize the DC path.
But limited lifetime and poor reliability has led to the development of the newer techniques.
Of cause it would be interesting what can be achieved with "wetted" reed relays compared to
a LTC1043 divider.

On the other side the high switch resistance of the LTC1043 makes it possible to use the voltage divider directly at a unbuffered LTZ1000. With a pure capacitive divider you would need a buffer amplifier or resistor at the input of the divider. Otherwise the output of the LTZ gets shorted capacitively, so the temperature setpoint will be very high, and will leading to a hysteresis/ageing of the LTZ1000.

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 15, 2013, 09:32:20 pm
Quote
2kHrs are not much. My references need around 4kHrs run in phase until I can tell if they will
give a "good" or "poor" device.

Sounds like a perfect pre-requisite for that 125.5 digit meter I was thinking about building, :)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: echen1024 on October 16, 2013, 02:24:39 am
How would we up this one level, and add capability to go over the 5v max. Maybe buffer the input?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 16, 2013, 11:52:29 pm
How would we up this one level, and add capability to go over the 5v max. Maybe buffer the input?

This theme is extensively debated and described in many other threads on the forum. Mostly it involves a precision resistor voltage divider or the capacitive divider LTC1043 (the capacitive divider will AFAIK only help up to 2*5*1.125 V- i.e. some 11 Volt - which is enough for measuring 10 V references).

If one has a precision voltage source (adjustable output preferred) with some 10 to 1 ppm accuracy (resolution) and its own separate power supply/battery, one can expand the range of the measurement by subtracting a known quantity from the input signal before measuring the resultant 0-5 V residue.

Please search the forum for subsets of "PRECISION RESISTOR VOLTAGE DIVIDER LTC1043 CAPACITIVE SWITCH BACK-TO-BACK DIFFERENCE MEASUREMENT" or whatever you can imagine relevant. There is many highly knowledgeable posts written by the more volt-nut-oriented brigade of this forum.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 16, 2013, 11:57:50 pm
Buffers is a different theme (buffers have little to do with measurement - they are only supporting impedance-transforming infrastructure). Please see earlier posts and the datasheets / application notes from Linear technology that are linked to in this thread.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 17, 2013, 01:48:00 am
Quote
Mostly it involves a precision resistor voltage divider

I give you a different approach:

1) use a (composite) dac to output the desired voltage (say 0-10v). This dac is driven by a mcu specified in 3) below.
2) use a high resolution adc to adc the output voltage generated in 1);
3) use a mcu to change the output from the (composite) dac to minimize the error, via a PID controller for example.

To maximize effective (output) resolution,  you will need to use a high resolution dac - 16-bit or higher dacs are very rare and expensive. You could then use two dacs (or more), one output the most significant digits and another the least significant digits and run the output through a summing opamp.

In this set-up, you can output pretty any much any desired voltage from a fixed reference. The only limitation to accuracy is the adc + its reference. The only limitation to resolution is the (composite) dac.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: casinada on October 17, 2013, 06:24:40 am
http://cds.linear.com/docs/en/application-note/an86f.pdf (http://cds.linear.com/docs/en/application-note/an86f.pdf)

 :)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Harvs on October 17, 2013, 06:39:04 am
I'm pretty sure the question was about how to measure a voltage above the ADC input voltage limits, not how to generate a precision output voltage.

Hence the need for a precision voltage divider...
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 17, 2013, 10:48:31 am
Quote
http://cds.linear.com/docs/en/application-note/an86f.pdf

Wow! looked like I managed to get a few things right there. Pure luck. I grossly under-estimated the error correction, and stability issues, however.

That is a great app note. Worthy of anyone's annual read.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: echen1024 on October 18, 2013, 12:25:30 am
I'm pretty sure the question was about how to measure a voltage above the ADC input voltage limits, not how to generate a precision output voltage.

Hence the need for a precision voltage divider...
Thank you. So the prevailing opinion is a precision resistor divider?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 18, 2013, 03:21:15 pm
I'm pretty sure the question was about how to measure a voltage above the ADC input voltage limits, not how to generate a precision output voltage.

Hence the need for a precision voltage divider...
Thank you. So the prevailing opinion is a precision resistor divider?

Since none of the volt-nuts answer you - the traditional answer is a definitive YES. Please read the forum and search the web. If you are more than faintly interested, consult Low Level Measurements Handbook - Keithley Instruments (http://www.keithley.com/knowledgecenter/knowledgecenter_pdf/LowLevMsHandbk.pdf). To see why a capacitive switch divider has some benefits that are wanted in very high precision measurements, search "EEVBLOG LTC1043" from a web search engine.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 19, 2013, 06:41:18 pm
Very good news for me and others who want to use the LTC24xx family ADCs.

In the tread about the Linear Technology Arduino clone - LINDUINO https://www.eevblog.com/forum/projects/linduino-smart-isolated-arduino-compatible-board-for-daq-demo-boards-etc/ (https://www.eevblog.com/forum/projects/linduino-smart-isolated-arduino-compatible-board-for-daq-demo-boards-etc/) - an applications engineer from LTC posted that there is starting to be C++ code examples/libraries associated with the parts.

Below is the code for the 2 Channel 20 Bit ADC LTC2422. I have studied it and the libraries - they are professionally written and well documented. LTC even encourages "hacking" and all reuse of the free code. This also goes for "new unintended use" of the GUI Software QuikEval that is free as an .exe-file and now can be interfaced from Arduino (and PIC if you rewrite the I2C and SPI routines).

All you need to build a 4.5 to 6 Digit DVM with ready running software is the USD 5-10+ (depending on no. of channels and bits) LTC24XX chip and a suitable reference (another 5-10 dollars). Combined with an Arduino (you can use any Arduino Uno or similar - no need to buy the isolated Linduino from LTC) and a cheap display, you have both the PC based GUI and a portable measuring instrument.

So no more reuse of junk code floating around the web. And for me - no more code development before I know every line in the free LTC Sketchbook library.

There is no code for the LTC2400 specifically, but there is code for LTC2418 (18 Ch 24 Bit), LTC2422 (2Ch 20 bit), LTC2449 (16 Ch 24 Bit) and LTC2484 (Single Ch 24 Bit). As they are all based on the same 4 Byte SPI protocol, it is a piece of cake to write the code for the LTC2400 itself.

Below is a copy and paste of the LTC2422 test code (you also need the libraries to make it run - it's all in the links in this post).

Code: [Select]
/*!
LTC2422: 1-/2-Channel 20-Bit uPower No Latency Delta-Sigma ADC in MSOP-10
 
@verbatim
 
The LTC2421/LTC2422 are 1- and 2-channel 2.7V to 5.5V micropower 20-bit analog-
to-digital converters with an integrated oscillator, 8ppm INL and 1.2ppm RMS
noise. These ultrasmall devices use delta-sigma technology and a new digital
filter architecture that settles in a single cycle. This eliminates the latency
found in conventional delta-sigma converters and simplifies multiplexed
applications. Through a single pin, the LTC2421/LTC2422 can be configured for
better than 110dB rejection at 50Hz or 60Hz +/-2%, or can be driven by an
external oscillator for a user defined rejection frequency in the range 1Hz to
120Hz. The internal oscillator requires no external frequency setting
components.
 
@endverbatim
 
http://www.linear.com/product/LTC2422
 
http://www.linear.com/product/LTC2422#demoboard
 
REVISION HISTORY
 $Revision: 1922 $
 $Date: 2013-09-07 08:48:00 -0700 (Sat, 07 Sep 2013) $
 
Copyright (c) 2013, Linear Technology Corp.(LTC)
All rights reserved.
 
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
 
1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.
 
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of Linear Technology Corp.
 
The Linear Technology Linduino is not affiliated with the official Arduino team.
However, the Linduino is only possible because of the Arduino team's commitment
to the open-source community.  Please, visit http://www.arduino.cc and
http://store.arduino.cc , and consider a purchase that will help fund their
ongoing work.
*/
 
//! @defgroup LTC2422 LTC2422: 1-/2-Channel 20-Bit uPower No Latency Delta-Sigma ADC in MSOP-10
 
/*! @file
    @ingroup LTC2422
    Library for LLTC2422: 1-/2-Channel 20-Bit uPower No Latency Delta-Sigma ADC in MSOP-10
*/
 
#include <stdint.h>
#include <arduino.h>
#include "Linduino.h"
#include "LT_I2C.h"
#include "LT_SPI.h"
#include "LTC2422.h"
#include <spi.h>
 
uint8_t LTC2422_EOC_timeout(uint8_t cs, uint16_t miso_timeout)
// Checks for EOC with a specified timeout (ms)
{
  uint16_t timer_count = 0;             // Timer count for MISO
  output_low(cs);                       //! 1) Pull CS low
  while (1)                             //! 2) Wait for SDO (MISO) to go low
  {
    if (input(MISO) == 0) break;        //! 3) If SDO is low, break loop
    if (timer_count++>miso_timeout)     // If timeout, return 1 (failure)
    {
      output_high(cs);                  // Pull CS high
      return(1);
    }
    else
      delay(1);
  }
  output_high(cs);                      // Pull CS high
  return(0);
}
 
// Read ADC code from the LTC2422. Does not wait for end-of-conversion.
// To automatically wait for conversion to complete, use the LTC2422_EOC_timeout before this function..
void LTC2422_adc_read(uint8_t cs, uint8_t *adc_channel, int32_t *code)
{
  LT_union_int32_4bytes data, command;      // LTC2422 data
 
  command.LT_int32 = 0x00000000;
 
  spi_transfer_block(LTC2422_CS, command.LT_byte , data.LT_byte, (uint8_t)3);
  if(data.LT_byte[2] & 0x40) // Obtains Channel Number
  {
    *adc_channel = 1;
  }
  else
  {
    *adc_channel = 0;
  }
  data.LT_byte[2] &= 0x3F;                  // Clear channel bit here so code to voltage function doesn't have to.
  data.LT_byte[3] = 0x00;                   // Make sure MS Byte is zero, data is right-justified.
  *code = data.LT_int32;                    // Return data
}
 
// Calculates the voltage given the ADC code and lsb weight.
float LTC2422_code_to_voltage(int32_t adc_code, float LTC2422_lsb)
{
  float adc_voltage;
  adc_code -= 0x00200000;                         //! 1) Subtract offset
  adc_voltage=((float)adc_code)*LTC2422_lsb;      //! 2) Calculate voltage from ADC code and lsb
  return(adc_voltage);
}
 
// Calculates the lsb weight from the given reference voltage.
void LTC2422_calculate_lsb(float LTC2422_reference_voltage, float *LTC2422_lsb)
{
  *LTC2422_lsb = LTC2422_reference_voltage/(1048575);        //! 1) Calculate the LSB, ref_voltage /(2^20-1)
}
 
 
</spi.h></arduino.h></stdint.h>

Source: http://www.linear.com/product/LTC2422#code (http://www.linear.com/product/LTC2422#code)
Libraries: In Linduino sketchbook at http://www.linear.com/designtools/linduino.php (http://www.linear.com/designtools/linduino.php)


So now you can make a breadboard/Arduino/PC ADC/DVM platform like in the video below for USD 10-20. No need to buy demo boards, USB board and software. Just get an ADC and a ref chip. Nice ...

LTC2400 20130507C (https://www.youtube.com/watch?v=fYLHIjve_zo#)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 19, 2013, 07:03:45 pm
Quote
So the prevailing opinion is a precision resistor divider?

For fixed voltages. If you want to generate a reference voltage at any levels, follow the aforementioned app note from LT.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 19, 2013, 07:10:03 pm
Quote
There is no code for the LTC2400 specifically

It can be ported to ltc2400 fairly easily.

I would note two things:

1) it does not utilize error correction;
2) it uses float - 5/6 digit precision.

Those two would kill its chance to be used as a 5-6 digit volt meter.

The could would have been a lot useful had it stayed in the integer land, I think, so the conversion can be done by users on platforms that support doubles.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 19, 2013, 07:24:59 pm

...

Those two would kill its chance to be used as a 5-6 digit volt meter.

...


Really? Well - I am sitting on a functioning LTC 2400 based 6 Digit DVM that tracks my Agilent 34401A to a few PPM when properly set up. You seem to have a PhD in fast not-very-well-founded conclusions. I'll stick to my shield ...  ;D
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 19, 2013, 07:35:09 pm
Quote
You seem to have a PhD in fast not-very-well-founded conclusions.

Calm down. Understanding what I was referring to before responding to my post would have been helpful.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 19, 2013, 08:11:43 pm
...

The could would have been a lot useful had it stayed in the integer land, I think, so the conversion can be done by users on platforms that support doubles.

Sorry if I have misunderstood you. A float has a precision of 23 bits - 24 if normalized. Mathematically this is around 7.2 decimal digits. By keeping the ADC output and resolution normalized with a bit shift operation, precision is lost only in a single 'division by float' operation on normalized numbers.

As I have answered to one of your earlier posts, I expect no more than 17-19 noise free bits from my experimental DVM. Even if LT and TI name their ADCs '24 bit' - they vaguely state elsewhere that it is unrealistic to expect more than 20+ bit 'performance'. Microchip's comparable ADC is only 22 nominal bits, and AD writes:

"AD7712: 24-BIT SIGMA-DELTA ADC   
This converter utilizes sigma-delta techniques to offer 16-bit accuracy (0.0015% FSR) and no missing codes to 24-bits"

Accuracy 0.0015% of full scale is the same as the basic (best) DC accuracy for Agilent 34401A. Last time I looked at it it states that it is a 6.5 digit DMM.

So IMO the float - when used with care - is for all practical purposes good enough to represent 16-19 relatively noise free bits and leave the result of a single division/rounding almost immune to numerically introduced significant errors.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: sync on October 19, 2013, 11:57:42 pm
"AD7712: 24-BIT SIGMA-DELTA ADC   
This converter utilizes sigma-delta techniques to offer 16-bit accuracy (0.0015% FSR) and no missing codes to 24-bits"

Accuracy 0.0015% of full scale is the same as the basic (best) DC accuracy for Agilent 34401A. Last time I looked at it it states that it is a 6.5 digit DMM.
The 15ppm of the AD7712 is the integral non-linearity and only at 25°C. The 34401A ADC non-linearity is 2ppm of reading + 1ppm of range. It's an order of magnitude better than the AD.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: mtdoc on October 20, 2013, 01:17:35 am
Very good news for me and others who want to use the LTC24xx family ADCs.

In the tread about the Linear Technology Arduino clone - LINDUINO https://www.eevblog.com/forum/projects/linduino-smart-isolated-arduino-compatible-board-for-daq-demo-boards-etc/ (https://www.eevblog.com/forum/projects/linduino-smart-isolated-arduino-compatible-board-for-daq-demo-boards-etc/) - an applications engineer from LTC posted that there is starting to be C++ code examples/libraries associated with the parts.

Below is the code for the 2 Channel 20 Bit ADC LTC2422. I have studied it and the libraries - they are professionally written and well documented. LTC even encourages "hacking" and all reuse of the free code. This also goes for "new unintended use" of the GUI Software QuikEval that is free as an .exe-file and now can be interfaced from Arduino (and PIC if you rewrite the I2C and SPI routines).

All you need to build a 4.5 to 6 Digit DVM with ready running software is the USD 5-10+ (depending on no. of channels and bits) LTC24XX chip and a suitable reference (another 5-10 dollars). Combined with an Arduino (you can use any Arduino Uno or similar - no need to buy the isolated Linduino from LTC) and a cheap display, you have both the PC based GUI and a portable measuring instrument.

Very cool quamtumvolt.  I've been following the Linduino posts with great interest. Will try to incorporate the code into my project when/as appropriate.  Right now I need to focus on getting a Labview front end together - for data processing,  GUI, etc.  My time for this project is very limited so progress is slow.      As far as  GUIs go - I'll be interested to see if you get the LT QuickEval software working with your project. :-+
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dannyf on October 20, 2013, 01:26:24 am
Quote
A float has a precision of 23 bits - 24 if normalized.

Look up the gcc avr compiler manual. The "resolution" or precission for avr-gcc float data type is quite low.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 20, 2013, 01:00:24 pm

...

2) it uses float - 5/6 digit precision.

...

The "resolution" or precission for avr-gcc float data type is quite low.

...


First I want to apologogise for my somewhat disrespectful post over. Then I just present the facts: The Single Precision Float type has been around as essentially the same 4 bytes as long as I can remember (early 1960s) and has later beeen taken well care of:

"
IEEE 754 single-precision binary floating-point format: binary32

The IEEE 754 standard specifies a binary32 as having:

    Sign bit: 1 bit
    Exponent width: 8 bits
    Significand precision: 24 (23 explicitly stored)

This gives from 6 to 9 significant decimal digits precision ....

.... The true significand includes 23 fraction bits to the right of the binary point and an implicit leading bit (to the left of the binary point) with value 1 unless the exponent is stored with all zeros. Thus only 23 fraction bits of the significand appear in the memory format but the total precision is 24 bits (equivalent to log10(224) ? 7.225 decimal digits).  ....

"
Source: http://en.wikipedia.org/wiki/Single-precision_floating-point_format (http://en.wikipedia.org/wiki/Single-precision_floating-point_format)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 20, 2013, 01:17:35 pm

...

As far as  GUIs go - I'll be interested to see if you get the LT QuickEval software working with your project. :-+

Thanks. After starting  real work with the code, it turns out more problematic than I thought. This because the Linduino code uses an on-board MUX / line-sharing switch on data transfer - completely unknown to anything Arduino.

So the choice is to rewrite the code or - as I think now - build an Arduino breakout / connector shield with the MUX chip on and (by this hardware adding to Arduino) try to use the LTC code as it is.

This last solution is attractive because there also is a library for identifying chips / boards, store data, and save test measurement setup's and calibration constants (all in EEPROM) that is quite handy. We'll see ...

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 23, 2013, 07:31:34 pm
Well - it seems that that I am not the only one who wanted to use QuikEval. There are other posts around, and they all conclude the same way: Since LTC does not publish the source code - and that is fair enough - I have to look for something else.

So I am concluding this project. Status is:

- I'll keep the red shield as it is. I will make a new bigger one with the LTC1043 capacitive switch and my single LM399.

- I'll use the LTSketch Library free C++ source code as a ref for decent programming for Arduino. Since it is supported and updated, I will use it as it is. No copy and change - which just gives me more junk code. I'll add a library for my own permanent code.

- I'll go for the (good but slow) GUI MakerPlot instead of rewriting old junk code every time I need graphs, tables, statistics etc. It stores files from Arduino to harddisk, while the current Arduino thing is SD cards.

- I now have 3 different chips from the LTC24xx family. I also trust my single precision instrument Agilent 34401A. It is very difficult to systematically maintain anything that is permanently within 10 ppm, but it is possible. But no more 1 ppm dreams for me. I have very good experiences with Geller's ceramic ref board, so I will get more, and define those boards as my 10 V. The boards themselves are just another chip - what I reallly buy is the experience of opening up a packet that has crossed the Pacific and reads 10.000007 Volt or similar upon first firing up - every time. It is not the number of trim pots that makes precision gadgets, it's their measurement history ...

- I want to do some measurements and automated software calibration. So I'll move on to DAC / ADC setups - first a 16 Bit DAC with a large INL that has to be put in a closed loop firmware feedback - then I'll move onto 18 Bit state-of-the-art DAC's. I'll work with a single decade 1:10 ten position (rotary switch and quality relays) resistor divider with my new very expensive 0.01 / 0.005 % Vishay resistors. And I'll add software linearity correction.

- I will finish my 1N829 'nostalgia' reference, and I'll buy a single LTZ1000 for myself for Christmas so I have a new toy for next year ...
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: cellularmitosis on October 28, 2013, 08:29:59 am
Just wanted to say Hi quantum!  I've been lurking on the forum with my brain spinning around the topics of precision references, kelvin varley dividers, etc, and I noticed your posts in all of those interests.

I just ordered some LTC6655, LTC2400, LTC1599, etc and hope to join your DIY efforts soon :)

I was surprised that digikey and the like didn't have the 1599 in stock.  I ended up having to order it directly from Linear, and they only had 2 left (LTC1599ACN).  Have Linear superseded this with a more modern chip?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on October 28, 2013, 08:23:20 pm
...
I was surprised that digikey and the like didn't have the 1599 in stock.  I ended up having to order it directly from Linear, and they only had 2 left (LTC1599ACN).  Have Linear superseded this with a more modern chip?

I sent an email to LTC. This is what they said:

" ... the LTC1599ACN does have stock. We have 255 pieces in Singapore and 170 of the old lead finish in Milpitas CA. ...

... there is not much business on the DIP packages, that’s why Digikey is not stocking it."
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on November 10, 2013, 06:07:38 am
As I said in an earlier post - I'll keep the red shield from this thread as it is. I was planning to make a new bigger one with the LTC1043 capacitive switch for dividing my single LM399 from 10 Volt to 5 or 2.5 Volt. Well - I have changed my mind. I now have 4 pcs. LTC6655-2.5 that I'd like to connect in parallel and use as reference.

As I also wrote earlier, I would like to use the LTC GUI Software QuikEval that is free as an .exe-file (but has no published code - which is OK). As the intermediate board between all LTC demo boards and the PC you run QuikEval on is based on an 8 bit PIC, I guessed I would be able to hack it anyway.

After sending an email to LTC asking for the protocol for the QuikEval USB data transfer, it ended up with LTC giving me a DC573A LTC2400 demo board with a new Linduino interface board for QuikEval. All free! (I guess they liked that I made the red shield with parts that I have bought - not sampled).

Linduino is an Arduino-compatible board that is galvanically isolated from the PC USB port and has some extra hardware put on. LTC has published a library of C code called LTSketchbook for the Linduino. It is open and contains code for LTC's ADCs, DACs, sensors, synthesizers, power management chips etc.

So I am very grateful. Now I can run the QuikEval GUI as I wanted. I also have 2.5 kVolt galvanically isolated floating ground USB powered Arduino 'clone' and a copy of the library! Thank you LTC.

Hence I will slowly start making one more experimental DMM based on the LTC2400. But this time I will not make a small, compact Arduino shield. I will go more advanced in circuitry on a modularized (kind of) motherboard. And I also have better software and code this time.

The short video shows the green Linduino board with the LTC2400 ADC stamp board DC573A, a blue Arduino with 1602 display reading RS232 serial data from the Agilent 34401A, and the measured ref ADR441. The analysis software at the end is QuikEval.


Linduino - USB-Isolated Arduino-compatible + 6 Digit DVM (24 Bit ADC LTC2400) (https://www.youtube.com/watch?v=XFA_7I6NblI#)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: branadic on November 10, 2013, 10:23:52 am
Sorry for that comment, but what are this videos for? Some good quality pictures would be worth instead of bad quality spam-like videos. I see no additional benefit presenting mobile phone quality videos in each of your post. Is this some sort of tic?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on November 10, 2013, 10:38:58 am
Sorry for that command, but what are this videos for? Some good quality pictures would be worth instead of bad quality spam-like videos. I see no additional benefit presenting mobile phone quality videos in each of your post. Is this some sort of tic?

Yes.

(Which command? Your comment?)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on November 10, 2013, 04:21:03 pm
Hello,

if I look at the video then your LTC2400 has more than 100uVpp noise?
This is far from that what can be reached with a proper setup.
Is this with galvanically isolation from PC or not?

with best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on November 10, 2013, 05:22:10 pm
Hello,

if I look at the video then your LTC2400 has more than 100uVpp noise?
This is far from that what can be reached with a proper setup.
Is this with galvanically isolation from PC or not?

with best regards

Andreas


I guess that is because there is no averaging. And yes - it is the isolated Linduino.

As has been pointed out by an earlier poster, my videos are somewhat lacking in quality. But I think you will be able to see the button marked "Average" in the top left corner of the software window. When I use this average function (for example 16 or 64 observations), I get 6-7 steady digits without problems. Also - the LTC1236 LT1236 and the LTC2400 on the demo board are powered directly from a switch mode supply on the Linduino. LTC themselves states (in http://cds.linear.com/docs/en/demo-board-manual/dc573A.pdf (http://cds.linear.com/docs/en/demo-board-manual/dc573A.pdf)) that if you want lower noise, you can cut a trace and add a jumper so that the LTC2400 is powered from the LT1236. I will go even further and put in a linear regulator and filter in between.

Also, in the left bottom corner, there is a field named "RMS Noise". It shows around 3 ppm. For 2.5 V that should be around 7.5 uV. If LTC use a crest factor of 5 or so, it should indicate a p-p level of around 30-40 uV.

I will try to measure this by activating the Average function. I will also make a software peak-to-peak detector for the ADC output (that is why I want code), and tell you later.

Also - the voltage reading is far out. The LTC2400 software reference and offset constants are not calibrated yet. I guess I am too quick to show my new toys.

The library "Linduino sketchbook" http://www.linear.com/solutions/linduino (http://www.linear.com/solutions/linduino) does for now support LTC2418/-49/-61/84. But there is not yet any code for the LTC2400. So I have copied code for some of these other ADCs and written 'new' code for the LTC2400 based on different parts of the library and the format of the status/command/data words for the LTC2400.

The calibration part - which is read in from keyboard to software - is based on external measurement of the reference and then stored on onboard EEPROM on the ADC demo board. This code I have not implemented yet.

When it is finished, I will use a DAC to output a staircase of voltages that will be measured simultaneously by the 34401A and the LTC2400. So then everyone can judge for themselves the voltage level and linearity tracking for the two meters.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on November 11, 2013, 11:51:27 am
I have been working a few hours today with averaging, offset and gain estimation and adjustment. Everyone who knows a little bit about this will (like me - I am just starting to) understand the difficulties that lies in trying to "match" two meters for several points of measurement. As stated in the previous post, I will show tracking for a DAC staircase later. This is just to show unstability in the two meters' readings.

(http://m.eet.com/media/1166392/288638-tmw1102f2_fig3_450px.jpg)
http://www.edn.com/design/manufacturing/4388718/Manage-your-measurement-errors (http://www.edn.com/design/manufacturing/4388718/Manage-your-measurement-errors)


WARNING  :-DD
I would say that the LTC2400 (in averaging mode 64 points) is just as stable as the 34401A. Also = the QuikEval software shows some slow variations in the ADR441 named WH3. These are not reflected in the display of the 34401A, but if you study the 1602 display giving the RS232 stream from the 34401A, you will surely see it.

More will come ...

https://www.youtube.com/watch?v=wr_NscplB9o (https://www.youtube.com/watch?v=wr_NscplB9o)
https://www.youtube.com/watch?v=Wvmaun5veYM (https://www.youtube.com/watch?v=Wvmaun5veYM)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on November 11, 2013, 08:05:54 pm

Also, in the left bottom corner, there is a field named "RMS Noise". It shows around 3 ppm. For 2.5 V that should be around 7.5 uV. If LTC use a crest factor of 5 or so, it should indicate a p-p level of around 30-40 uV.

I will try to measure this by activating the Average function. I will also make a software peak-to-peak detector for the ADC output (that is why I want code), and tell you later.


Caution:

a crest factor of 5-7 is only valid if you have a single gaussian distribution.
When I look at the screen photo the distribution is built out of at least 2 distributions.
One from the ADC (nearly gaussian) the other "noise floor" which is much wider is probably from the switching supply.
I have seen at least 70-100uV difference on the screen and not the 7,5uV RMS * 6 = 45uVpp.

The problem with switching supply noise is that it shifts the average values out of the average value of the adc.
This introduces some kind of offset. But this offset is non-linear (depending on input voltage). Further it depends on parasitic capacitances. Any change of leads or even when you lay your hand on the lines or the power-supply will change the "offset".

So averaging is not the best solution. If you reduce the noise by filtering by a factor of 2 you will save a factor of 4 in number of measurement values to average for the same result. With a quiet power supply you should get around 20uVpp noise for the ADC. With further measures you should get the 10uVpp (= 0.3ppm RMS @ 5V) from the data sheet.

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on November 13, 2013, 07:25:35 am
... With a quiet power supply you should get around 20uVpp noise for the ADC. With further measures you should get the 10uVpp (= 0.3ppm RMS @ 5V) from the data sheet.

With best regards

Andreas

As I said I would in an earlier post, I have done some light surgery in order to run the LTC2400 on a transformer based PS with a linear regulator.

I found out that I am not willing to cut on the board (I like these slick toys), so I have only cut the ribbon cable. Accordingly I will not get maximum noise reduction (requires re-tracing and soldering jumpers on the board).

The power supply line is now: wall wart transformer w/ full bridge, 7809 linear regulator, LT1236-5 (and LTC2400). The switch mode supply reaches the board only at the separate VCC and GND traces for the EEPROM. The ADC input is shorted with a cheap 30 cm crocodile clip (probably more than 100 milliohm) lead.

I guess the screen is readable. If not - the RMS noise is reported to be 1-2 ppm based  on 64 obs., and the histograms are 18-30 counts/bins wide (each bin is 0.0075 ppm).

But as I said, with more surgery I think it could have been lower.

LTC2400 24 Bit ADC - Test with Low Noise Power Supply I (https://www.youtube.com/watch?v=-CwypBmWKR8#)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on November 13, 2013, 08:10:25 am
Same setup as over - but here the LTC2400 reads its own ref LT1236-5. Noise reported is a width of around 30 counts (0.0075ppm per count) in the histogram and less than 2 ppm RMS for the numbered output.

LTC2400 24 Bit ADC - Test with Low Noise Power Supply II [DC573A] (https://www.youtube.com/watch?v=51PrvIPJwp8#)



---ooo---

(PS. Not that I think anyone cares, I just say it to be polite for once  :-DD: I will be away for a week or two, and will probably not be able to post at the forum (that goes for all the threads I have started). Someone else will measure the ADR441 refs.)

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on December 05, 2013, 03:25:00 am
Quote from: Andreas link=topic=20959.msg328316#msg328316

... With further measures you should get the 10uVpp (= 0.3ppm RMS @ 5V) from the data sheet.  ...


With a cleaner setup the RMS noise when measuring the LTC6655-5 was around 0.4 ppm. But when shorting the same input leads used to measure the ref, the LTC2400's own noise (and maybe the LT1236-5 ref for the ADC) is some 0.9 ppm (for nominal 0 Volt). Can anyone explain this?


(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=69741;image)

(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=69739;image)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on December 05, 2013, 09:35:05 pm
Can anyone explain this?

Probably you have the mains noise on your gnd line.
What happens if you put your finger on different places of your cirquit?

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on December 07, 2013, 02:09:22 am
Yes, may be there is hum / mains noise that is masked when I measure 2.5 or 5 volt, but is 'visible' for near zero ADC reading (noise and offset). I will try to test this when I have time.

Also I have been thinking about the difference in stating noise "RMS" versus "RMS ppm". RMS noise is given in Volts (mV, uV) but "RMS ppm" is a dimensionless ratio. So a noise RMS voltage of 10 uV will be 1 ppm for a 10 volt DC signal, 20 ppm for a 5 volt signal, 100 ppm for a 1 volt signal and undefined for a zero volt signal.

So maybe the explanation also can be that when shorting the input of the ADC, the signal is ideally 0 volt DC. But in practice there will be a varying ADC output reading from noise and offset. This is the "signal" to the software with shorted input.

The software calculates the variation in the "signal" and uses this as a noise estimate. Then it divides this noise estimate with its estimate of the measured signal (which is just some "average" of the noise/offset).

This calculation - if it is actually done this way - will have large numerical errors due to the "noise" and "signal" being of similar amplitude and close to he resolution of the ADC (and close to zero). So the formula "noise RMS ppm [1x10^-6] = noise RMS [Volt] / signal RMS [Volt]" cannot be used when the signal is very small (and has large variation) .

I don't know for sure if my thinking is correct, but I will try to find web sites that explains this and also make an experiment for different DC signal levels. One idea would be to make a simple white noise generator outputting a small noise level (mV) and add this signal to a variable DC voltage (a low noise variable reference or regulator). When using the QuikEval software the RMS noise in ppm should approximately double when one reduces the DC level to 50 %, be 4 times as high when the DC level is 25% and so on. I might try this later.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on December 07, 2013, 05:49:57 am
Hello,

RMS ppm definitions of noise makes only sense in one area:
Comparing the noise of reference voltage devices.

The reason is that the reference element (1.24V or 6-7V) is fixed and constant in noise and the amplification to the final output voltage only multiplies the noise level according the amplification.
So buried zener elements usually have 0.6ppm (0.1-10 Hz peak-peak) noise
and bandgap references usually a factor 5-10 larger at the same output voltage.

In most other cases the noise is a more or less constant value.

When doing noise measurements the measurement bandwidth is important.
If you use your LT2400 to estimate noise of external devices you have to keep in mind that
due to the measurement window and the averaging within the window you will have
a bandwidth limiting and thus a noise shaping.

Further: statistical distributed noise does not add linearly (but geometrically).

So the value rms noise on your screen is only a value (= standard deviation) that you can use to compare different ADCs at the same measurement rate.

With best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: quantumvolt on December 08, 2013, 03:02:59 am
Thanks Andreas. I must admit I am a bit confused.

Parts per million - ppm - is widely used. Doing a search on the web digs out ppms in chemistry, production quality, electronics, economics, medicine  and many more areas.

I was under the impression that ppm was just a dimensionless ratio [1/10^6] - as in this tutorial (imo easy to read and quite good introduction to many aspects of voltage references - absolutely worth reading):

Accuracy Parts per Million
Another reference accuracy unit found in data sheets is parts per million, or ppm. This unit is typically used to specify temperature coefficients and other parameters that change very little under varying conditions. For a 2.5V reference, 1ppm is one-millionth of 2.5V, or 2.5µV. If the reference is accurate to within 10ppm (extremely good for any reference), its output tolerance is:
2.5V × 10/10-6 = 25µV
Converting this to voltage accuracy:
2.5V ± 25µV = 2.499975V 2.500025V
Converting to percent:
±(25E - 6V) × 100/2.5V = ±0.001%
http://www.maximintegrated.com/app-notes/index.mvp/id/719 (http://www.maximintegrated.com/app-notes/index.mvp/id/719)

But then I found what what you say about using RMS, ppm and standard deviation:

"a root mean square (RMS) voltage (identical to the noise standard deviation) in volts"
http://en.wikipedia.org/wiki/Noise_%28electronics%29 (http://en.wikipedia.org/wiki/Noise_%28electronics%29)

and the "6 standard deviation" and "6.6 sigma" rule (many variants) in for instance:

en = 1.26 µVrms or 8.3 µVp-p  {my comment:(8.3 / 1.26 = appr. 6.6)}
http://www.ni.com/white-paper/3295/en/#toc4 (http://www.ni.com/white-paper/3295/en/#toc4)

ADI has even used a whole video to explain that to convert from RMS to Peak-to-Peak you multiply with 6 or 6.6 (depending on a confidence interval probability):
https://www.youtube.com/watch?v=-KcODSYXiZA (https://www.youtube.com/watch?v=-KcODSYXiZA)

In general I find the whole area a mess with a lot of quasi-formulas that lack assumptions and documentation. So I will not reflect more on it now except from using the same ADC with the same software to compare different voltage references (with inter-comparison of 10/5/2.5 volt refs it doesn't matter much what measure the software uses).

But the topic interests me, so I think that next year I will make a project out of Noise in Voltage References, DACs and ADCs. A good point for me to start will be understanding this first:

Quantification

The noise level in an electronic system is typically measured as an electrical power N in watts or dBm, a root mean square (RMS) voltage (identical to the noise standard deviation) in volts, dB?V or a mean squared error (MSE) in volts squared. Noise may also be characterized by its probability distribution and noise spectral density N0(f) in watts per hertz.

A noise signal is typically considered as a linear addition to a useful information signal. Typical signal quality measures involving noise are signal-to-noise ratio (SNR or S/N), signal-to-quantization noise ratio (SQNR) in analog-to-digital conversion and compression, peak signal-to-noise ratio (PSNR) in image and video coding, Eb/N0 in digital transmission, carrier to noise ratio (CNR) before the detector in carrier-modulated systems, and noise figure in cascaded amplifiers.

Noise is a random process, characterized by stochastic properties such as its variance, distribution, and spectral density. The spectral distribution of noise can vary with frequency, so its power density is measured in watts per hertz (W/Hz). Since the power in a resistive element is proportional to the square of the voltage across it, noise voltage (density) can be described by taking the square root of the noise power density, resulting in volts per root hertz (\scriptstyle \mathrm{V}/\sqrt{\mathrm{Hz}}). Integrated circuit devices, such as operational amplifiers commonly quote equivalent input noise level in these terms (at room temperature).
http://en.wikipedia.org/wiki/Noise_%28electronics%29 (http://en.wikipedia.org/wiki/Noise_%28electronics%29)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: captbilly on December 11, 2013, 09:46:17 pm
Would something like the LM399 work as the voltage reference? How would I get the voltage down, and also, are there any other ADI or TI parts that I can use?

Yes you can use LM399. But it will need a PS/Batt 12 V or more. The LTC2400 takes 5.5 V max. The reason for the fuzz about LTC6655 is that it is modern 2.5 V and gives itself to battery operation in 3.3 V environments. To bring the LM399 down to 5 V you can use either a resistor divider/buffer or first bring it up to 10 V and then divide it with the LTC1043 capacitive divider. Andreas is the expert on all this, I am sure he will give advice.

You can get 24 bit ADC's from TI and others also. The same goes for refs and op amps. You can mix whatever you like - just keep in mind that your end product can quite easily give you some 17 - 19 'noisefree' bits (around 5-5.5 digits or 0.0025% or 25ppm) if you use pieces with similar precision.

Though it takes some very careful component selection, board design, reference selection and a good enclosure, a TI ads 1256 (used to be Burr Brown part I believe) can deliver 22+ noise free bits in a real circuit.  We use the ADS 1256 along with an LTC6655 (ceramic package) and a FET SSR input (<Nano amp leakage at typical input voltages) isolation system, in a DAQC system we manufacture, and we are seeing a few 100s of nanovolts noise at 5 volt full scale input (goes down to a few 10s of nanovolts at gain 64/ 78.125mv input range).  Of course few people will have the necessary equipment to even measure this performance, and you can't expect to get those numbers on a perfboard sitting on your desk, but it is possible to do it with a careful implementation.

If you do some careful calibration tables stored on the processor (or on the computer connected to the ADC) you can get accuracy pretty much up to the limit of your voltage reference.  Of course the LTC6655 isn't going to have the long term stability (about 20ppm per sqrt 1000 hours) to give absolute accuracy to 22 bits for more than a short time, unless it has been burned in a the drift has slowed down.

On of the things that many users of these 24 bit S/D ADCs don't realize is that most of them won't deliver anywhere near 24 bits of noise performance.  But there are some exceptions, like the ADS 1256, ADS 1282, that can get extremely low noise and linearity.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 20, 2014, 07:30:35 am
USB-cables are terrible (Standard RS232 lines are better but not good). I use opto couplers and battery supply for the references and for the ADC cirquit. Transformers also have large capacities between primary and secondary side and will create some shifts to the output.
Even the 0.25pF of the photo couplers create a few uV shift in the output depending on the placement of the USB-cables.

I have seen opto-interrupters used in place of opto-couplers to get the isolation capacitance down and isolation voltage up.  In extreme cases, high performance ones can be made using an LED, photo-diode or photo-transistor, and black heat shrink tubing.

Custom isolation transformers are not difficult to wind and electrostatic shielding can be included between the windings and between the windings and core but opto-couplers are easier to use.  I wonder if a transformer like this would work for an isolated power supply good enough to replace batteries.

One thing I wonder about is unloading the ADC digital outputs so that switching does not cause ground or Vcc bounce.  I would also try slew rate limiting the digital inputs.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on April 20, 2014, 09:29:44 am
One thing I wonder about is unloading the ADC digital outputs so that switching does not cause ground or Vcc bounce.  I would also try slew rate limiting the digital inputs.

Hello David,

The big advantage is that the LTC2400 does no conversion while it is read out.
So a series resistor for the digital lines is not a must if you use a low power processor.

Do you have experience with isolated power supplies without damaging the ppm accuracy range?
I think that is not so easy.

With best regards

Andreas


Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 20, 2014, 04:33:02 pm
The big advantage is that the LTC2400 does no conversion while it is read out.
So a series resistor for the digital lines is not a must if you use a low power processor.

This makes it seem like the noise problem is related to conducted common mode noise.

Quote
Do you have experience with isolated power supplies without damaging the ppm accuracy range?
I think that is not so easy.

I have related but not direct experience which is why I brought the subject up.  I have been interested in this area, instrumentation delta-sigma converters, for a while and wonder how feasible it would be to get to the 7th and 8th digit of accuracy.  Noise and linearity correction seem like the largest problems.

One trick we used was to phase lock any digital clocks including any switching regulators with the ADC conversion and sample clocks and any chopper clocks if used but I have not found or at least do not remember any LTC application notes discussing this in connection with the LTC2400 series ADCs.  If this was done, then I wonder if using the LTC2400 series conversion clock pin might cause more problems then it solves.

I remember one instance where noise in the least significant digit of a 5ppm design was caused by low Q in an RC oscillator and simply using an LC oscillator fixed it.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: BravoV on May 01, 2014, 09:29:40 am
Thanks for the link, great video.  :-+

The vref test board looks interesting isn't it ?

(https://www.eevblog.com/forum/projects/ppmgeek!-5-5-digit-dvm-volt-ref-cal-(for-arduino-or-any-uc-w-spi)/?action=dlattach;attach=92082;image)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: branadic on May 01, 2014, 09:50:31 am
Quote
Hallo all - there is a nice video from LTC about use of hermetically sealed packages (LS8) and recommended design practices to improve stability of your "next" voltage reference source ...

http://www.linear.com/solutions/1129 (http://www.linear.com/solutions/1129)

:-)
gazelle

Three threads and almost the same post, amazing.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 19, 2024, 10:04:31 am
Hello,

I am using LCT2400 with VRef ADR4540 and I used an AD8628 to buffer Vref.
Quesiton1, should I bypass the AD8628, or is it good as a buffer for VRef?
Question2, should I add any capacitor at output of the buffer? From datasheet reading I got impression this adds INL if capacity exists at both Vin or Vref.

Thanks,
Jorge
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 19, 2024, 11:02:57 am
The AD8628 is a relatively slow OP-amp and  I don't see the drive strength much better than directly the ADR4540 reference.  The ADR4540 seems to have a class B output stage and may get better when there is some actual load current (e.g. maybe in the 0.1-1 mA range as a resistor to ground). At least it can handle a relatively large capacitance with no problem. I would drop the AD8628 and diretly use the ADR4540. The INL from added capacity at the LTC2400 ref. inputs is a bit tricky - it can get better with a relatively large capacitance of some 1 µF. One usually wants quite some capacitance to provide the current spikes. With no capacitance it depends on the driver side - this can be better or worse and it hard to tell.
This is a general problem with SC based SD ADC chips: the INL depends on the reference input and signal driver, it is not just a function of the ADC chip.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on March 19, 2024, 06:36:08 pm
Hello,

I am currently evaluating a ADR4550D together with LTC2400:
https://www.eevblog.com/forum/metrology/stability-of-5v-references-compared-to-ad586lq/msg5392028/#msg5392028 (https://www.eevblog.com/forum/metrology/stability-of-5v-references-compared-to-ad586lq/msg5392028/#msg5392028)

to your questions:
I am using the ADR4550D directly as VREF + power supply for the LTC2400.
Decoupling on the output is 10uF Ta + 100nF X7R.
Supply input is 100nF directly at the ADR4550 and 10uF in 2 cm distance.

For best linearity I use a 825 R + 680-820 pF low pass at the input of the LTC2400.
This is also needed to avoid disturbances on the input of the LTC2400 from affecting the output of a buffer OP-Amp for the input signal.

with best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 26, 2024, 06:28:20 pm
Hello

Despite my efforts to shield the box, adding filtering to avoid noise captured by different parts, I am still getting around 400uV of noise on the ADC readings (1 sample/no digital filter on top). If I short OPAMP input the ADC readings go down to 50uV noise.
I am using an ADR1399 10V calibrator as source for testing. The Keithley reads it with 7-9uV noise.
The ADR5040 reference I measured with Keithley and is quiet. 10uV noise.

I found out that the "AD8628" which I am using as buffer (bought in Aliexpress) may be fake. Goes rail to rail and is 4uv Offset but 1/3 of the datasheet slew rate in unitary gain (so something else probably and not AD8628) so I am looking for a different opamp from reliable source as this may be the source of extra noise.

Should I go with AD8628 or use instead the LTC2057. In the end they are the same price from the source I am checking.

PS: Is very strange but I get more noise if I pull FO to VCC then to the ground and here I get 50Hz from powerline. Maybe some harmonic from Arduino or AZ or something. Well I keep it to the ground.

Cheers,
Jorge

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 26, 2024, 07:43:23 pm
..
Despite my efforts to shield the box, adding filtering to avoid noise captured by different parts, I am still getting around 400uV of noise on the ADC readings (1 sample/no digital filter on top). If I short OPAMP input the ADC readings go down to 50uV noise.
I am using an ADR1399 10V calibrator as source for testing. The Keithley reads it with 7-9uV noise.
The ADR5040 reference I measured with Keithley and is quiet. 10uV noise..
Are those measurements rms or peak-peak?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 26, 2024, 08:03:07 pm
Are those measurements rms or peak-peak?
I am using testcontroller and it states range. So I guess is Peak to Peak.
I have checked the Keithly and setting fast setting (NPLC=0.1), it also presents 78uV noise. If I set it 0.02 it presents almoust same level of noise as LTC2400.
So maybe I need to do some integration or something.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 26, 2024, 08:17:01 pm
In order to see some meaningful values do use NPLC=10, or better 100, for example. Those NPLC=100 is the most used value here when talking references, etc.
Btw, people here integrate the 2400's outputs for perhaps a minute long (in math) to get some "comparable" results, afaik.
PS: So it seems your values are p-p..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 26, 2024, 08:27:20 pm
In order to see some meaningful values do use NPLC=10, or better 100, for example. Those NPLC=100 is the most used value here when talking references, etc.
Btw, people here integrate the 2400's outputs for perhaps a minute long (in math) to get some "comparable" results, afaik.
PS: So it seems your values are p-p..
Really? Arduino is so slow with 100 samples and I still wanted to multiplex to monitor multiple references in parallel. :)
Like that they seems almoust the same, then I can start work in the calibration part.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 26, 2024, 09:57:39 pm
FYI NPLC=100 means it measures (integrates) for 100 mains periods long (50Hz=>20ms and x100=> 2seconds). With NPLC=10 -> 200ms long.. (plus minus autozero, it depends).
So set your Keithley to 100NPLC (if possible) and the LTC2400 such you averages its values for 2secs long (how many samples/second your 2400 does?)..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on March 26, 2024, 10:09:08 pm
Despite my efforts to shield the box, adding filtering to avoid noise captured by different parts, I am still getting around 400uV of noise on the ADC readings (1 sample/no digital filter on top). If I short OPAMP input the ADC readings go down to 50uV noise.
Hello,

you are doing definitely something wrong.
400uV is much too high.
Are you using a switchmode supply (or USB power for the Arduino?)

I have around 10-20 uVpp on my devices depending on input source.
1.5uV (RMS) is the datasheet value of the LTC2400 which corresponds to ~10 uVpp.
To achieve this I am using battery supply for the LTC2400 and the PIC12F675.
Photocouplers keep the noise from the RS232 interface away.

Formerly I used LTC1050 as buffer amplifier.
Then LTC2057.
Now I am using ADA4522 which gives the least (temperature dependant) noise interference between the different clocks (LTC2400, LTC1043 (2:1 divider) +ADA4522 chopper).

with best regards

Andreas

Edit: see also:
https://www.eevblog.com/forum/metrology/a-discussion-on-precision-opamps/msg4102900/#msg4102900 (https://www.eevblog.com/forum/metrology/a-discussion-on-precision-opamps/msg4102900/#msg4102900)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 26, 2024, 10:10:32 pm
The scope picture suggests that there is a awful lot of an AC signal (some 18 kHz ? - maybe a SMPS, or something oscillating).
It is a bit unclear where this signal is measured, but it looks like a big isssue.

The input divider may add quite some noise. depending on the resistors this could be more noise than from the AD8628. There is little need for a lower voltage noise - more like lower current noise.
A possible alternative, rather similar to the AD8628 could be the MCP6V76.

AFAIK the ADC noise should still be a bit higher: ~ 1.5 µV_RMS for some 6-8 SPS. My guess for the effective noise BW would be at some 8 Hz - but not sure on this and I can't easily find a number in the DS. This would translate to an input noise density of some 500 nV/sqrt(Hz) - so way more than the amplifier mentioned before. So one could as well use an OP with more voltage noise and even less bias. E.g.  max4238 or LTC2050 or OPA333 / OPA334. Besides the noise also the output impedance could be an issue - here the super low power amplifiers could have a problem driving the ADC.

It is normal to get less noise with a shorted input. That would normally be the 1st testpoint.

For testing it makes sense to start with single samples. The default 6-8 SPS are some 8 PLC as a starting point. With the higher order digital filter one does not have a simple integration, but a weighted avearge and often also overlapp between consecutive readings / a settling time of a few samples. The correlation may hide some of the noise.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 26, 2024, 10:21:43 pm
..Formerly I used LTC1050 as buffer amplifier.
Then LTC2057.
Now I am using ADA4522 which gives the least (temperature dependant) noise interference between the different clocks (LTC2400, LTC1043 (2:1 divider) +ADA4522 chopper)..

Did you try to run all three LTC1050+LTC1043+LTC2400 from the same clock?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on March 26, 2024, 10:55:39 pm
How shall that work?

I have definitely not enough pins to generate 3 synchronous clocks on my 8 pin PIC.
LTC1043 is optimized for ~400 Hz
LTC1050 has internal 2500 Hz
LTC2400 would need 128kHz  (50Hz suppression)

2 pins are supply
2 pins RS232
3 pins SPI (LTC2400)
1 pin NTC (temperature ADC)
3 pins programming interface
2 pins external multiplexer channel selection
2 pins accessory detection (multiplexer, buffer, 2:1 divider, 3:1 divider)

with best regards

Andreas

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 26, 2024, 11:30:15 pm
LTC1050 has got input at pin 5 for the external clock (4x the chopping rate).
Btw, that would be an interesting experiment to generate all 4 clocks (for the pic as well) in sync off a single crystal..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 26, 2024, 11:31:37 pm
I am running the arduino with usb power.
The analog part is separate from digital by the ISO7762. I am driving it with a transformer with Vout 15V rectified and a LM317 set at 9V, then there is the LDO for 5V.

The arduino takes 78 miliseconds to read the ADC and 129 miliseconds to run complete cycle. So I can have 15 samples in 2 seconds.
Keithly maximum NPLC is 10.

This is what I got with 15 samples and keythly with NPLC10.

I am trying to get the noise down with single sample first indeed. :) And I am still curious how the FO set to 60hz (GND) is doing betther then set to 50hz (VCC)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 26, 2024, 11:54:20 pm
Off your graph the K2000 shows aprox 9uVpp (NPLC=10), and LTC2400 shows 145uVpp (15 samples averaged) during a 6 minutes long measurement. That 9uVpp is a realistic value, imho, the 145uVpp is still too high..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 01:28:34 am
I observe somehow a similar pattern of crists and valleys between Keithly2000 and LTC2400. Slight variation and slight delay but then around 10 times fold.
I am using a 10:1 resister network divider configuration with a 1776-C6815. One of the legs is shorted to ground by a coto relay.

Turning off the relay/divider and measuring a reference of 2.5V the relationship of 10/1 on voltage P-P noise maintains.

So whatever noise is picked by the Keithly passes 10 time larger to the LTC2400. Could this be due to lower CMMR from whatever OPAMP I am using as buffer?

PS: The arduino is not yet coded for the lower voltage range (absence of 10:1 divider)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on March 27, 2024, 08:06:23 am
Hmm,

when I look at your photo it seems that the ground plane connects analog and digital part.
So why are you using a ISO7762 when not having a floating analog ground?

Where is the negative supply for the OP-Amp? (how do you do zero adjust?)
For the K2000: I have usually 2-3uVpp noise in 10V range with 10 NPLC when measuring a 7 or 10V low noise reference.
A complete schematic overview (supplies, input voltage divider, OP-Amps) would be nice to have.

It makes no sense to average out (unknown) noise.
If it is EMI related (from switchmode supply or USB or from your ISO7762) then it will be rectified on the input protection diodes depending on parasitic capacities (so it will vary).
This gives a variable offset voltage which cannot be calibrated out.
So averaging makes only sense when you are in the 10-20uVpp region (referred to the LTC2400 input).

By the way a high (> 1K Ohm) resistor in front of my LTC1043 input divider or on a Chopper OP input (>10K) also increases noise significantly.

with best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 08:38:21 am
Hi Andreas,

Regarding the ground this is isolated. There is a cap of 10nF between grounds which I copied from hp34401a circuit I thought could help.
Appart from that I moved the coil from the Coto reed relay from digital to analog side as was adding too much noise from digital.
The buffer opamp is a rail to rail. With zero input there will be 1-5mv output. Didnt considered negative rail as I thought could manage without that.

There is indeed a big resistor in opamp input that is the divider network. That is 9M in parallel to 1M in what it concernes to the voltage source the opamp sees.
Circuit in attachement.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 27, 2024, 10:47:10 am
Is the ISO7662 happy with switching the relay directly? The max i/o rating is 15mA only..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 10:52:16 am
Is the ISO7662 happy with switching the relay directly? The max i/o rating is 15mA only..
Should be. The relay consumes 15mA so is on the limit.
https://www.cotorelay.com/wp-content/uploads/2014/09/9000_series_reed_relay_datasheet.pdf (https://www.cotorelay.com/wp-content/uploads/2014/09/9000_series_reed_relay_datasheet.pdf)

Anyway the noise is also there when the relay is off.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 27, 2024, 11:06:41 am
As a test you may remove the L2 "pickup coil" from the input path..
Also the C20 22pF at the opamp's input - try it with say 1nF-10nF..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 11:13:52 am
L2 I added because I was struggling.
C20 22pF I selected based on antialyasing calculation to keep the low pass as 14X sample rate. Maybe this only applies to after the buffer?

Also noticed that taking Keithly from parallel from input of the circuit it reduced further 10uVpp the noise.

BR,
Jorge
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 27, 2024, 11:19:54 am
L2 I added because I was struggling.
C20 22pF I selected based on antialyasing calculation to keep the low pass as 14X sample rate. Maybe this only applies to after the buffer?

Also noticed that taking Keithly from parallel from input of the circuit it reduced futher 10uVpp the noise.

BR,
Jorge

With that coil you may easily pickup noises (unless it is a toroidal core).  It may even resonate with that 680pF.
Why would you need the first low pass at 14x sampling rate?? You have one at the ADC input (as Andreas has recommended the values). Try with C20=10nF (foil or C0G) and look at the output data.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 11:30:00 am
The coil is this type in picture.

Maybe I didnt fully understood the antialiasing filter behaviour. I know the signal we care is much lower so the Opamp input probably doesnt care with frequencies at sampling rate. I will try first increasing C20, and then the coil if nothing. :)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 27, 2024, 11:42:24 am
Your "ADC sample rate" is aprox 7 Samples per second (say 7Hz). I would set the first low pass to 2Hz, for example, with 1Meg the C20 could be, say 330nF.

Your coils - provided the small toroid there is the "ferrite bead at GND wire" and the L2 coil is the "green resistor like stuff" your L-filtering attempt is not good.

Take the small toroid and do pass the BOTH GND AND INPUT WIRE through it say with 2-3 turns. Get rid of the green coil.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 11:52:36 am
I think ADC is doing other stuff like averaging and other and justs puts out the data 7 times per second, or?
They mention in the datasheet sample rate of 153Khz.
Anyway antialiazing I think cames if bandwith of the signal persent at input of ADC/output of buffer is bellow 14x the sampling rate, but then I guess is this is more the speed of Opamp which needs to ensure the signal integrity for that bandwith.
Our signal of interest is just near DC. So filter until input of opamp can be lower frequency? Still trying to fit the requirements in my head. :)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 27, 2024, 11:57:10 am
Read my previous post on your coils at your input (!).

The "ADC's clock frequency" (your 153 kHz) is the internal rate at which its sigma delta converter operates.

The "ADC's sampling rate" is the number of input voltage measurements (samples) per second, with your ADC max 6-8 per second (6-8Hz) people say.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 12:09:16 pm
I observed the sampling events with osciloscope at output of buffer and is in the realm of 5uS, so close the 153Khz.
But I guess for the buffer input this is other story.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 27, 2024, 12:47:08 pm
Yes, those are 2 different stories. The input divider R with C20 should create the low pass at the input of the opamp for the ADC's "sampling rate" which is around 7Hz.
Clean up the stuff with the coils, make the common mode choke on that small toroid you have there (use a thin wire, see above the picture), and play with the C20 value (I would try up to 330nF).

Note: with the input divider connected (the relay ON) the input filter time constant will be aprox 1Meg*C20, with the relay OFF it will be aprox 9Meg*C20..

PS: the relay - I would definitely use a transistor for driving the relay off the ISO..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 27, 2024, 01:35:53 pm
The SD ADC is an integrating type, at least approximately. There is not need to have a classic anti aliasing filter for its data rage. There is already digital filtering as part of the SD ADC to suppress those lowr frequencies a classic AA fitler would suppress.  It only needs AA filtering for the much faster (~153 kHz) rate for the input samplig as part of the ADC inner workings.


Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 03:46:41 pm
Added the modifications didnt helped much.
220nF, super slow raising and still 59uvpp noise with average of 15 samples.

After reviewing the circuit I noticed I had set the 220nF capacitor between the reed relay terminals. Not sure as this resulted in this behaviour as should be a short anyway (100mOhms when relay closed).

I noticed when voltage raising some jumps like if opamp was consuming current at peaks. Maybe the bias current is too big or something.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 27, 2024, 04:55:33 pm
A little filtering with C20 is good, e.g. to limit the BW the amplifier sees at it's input. No need for 220 nF, more 220 pF or maybe 1 nF are reasonable compromise.

It still looks like there is something really wrong, like hum, supply ripply or something oscillating (e.g. the 18 kHz in post #132, what ever point of the circuit this is).
For a test one could try first with a hard 0 V sinal at the input and directly at the ADC input and than as a next step incluse the buffer.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 27, 2024, 05:05:39 pm
Hmm, I would not expect 40 minutes to settle..
My sim shows aprox 0.8sec to come to aprox 9.9V.
You need 22 minutes for the same..
Hmm, something is wrong.

Or Arduino code/MATH error?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 27, 2024, 05:31:20 pm
Thanks for the suggestions, will continue to troubleshoot next week as Easter breaker is coming. :)
Before I go just checked the analog current consumption. 16,82mA with 7uA variation.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on March 28, 2024, 07:18:30 pm
Hello,

I fear that there are several problems:
- The OP-Amp is not suited for a input impedance of 1 Meg. (choppers generally need below 10 .. 100K)
  -> you will need either a J-FET type or a low input bias current type + some offset adjustment from time to time.

- USB power  + capacitive coupling between digital + analog part.
  I usually make the coupling capacities as small as possible. This includes also to put the shielding somewhat away from digital ground planes.

- I am not shure about the ISO part. (Simply do not know it).
  In datasheet they have some EMI measures. Usually this works only for small bandwidth EMI receivers and makes it worse for analog cirquits.

What you should keep is R8 + C16 + C21 (I usually use 825R + 680 .. 820 pF).
This helps against the voltage spikes comming out of the LTC2400 and prevents that the buffer OP-Amp gets disturbed. (gives ~30 uV offset due to rectification on the output clamping diodes)

It has a reason why I use battery supply and photocouplers.
This helps against many (not all) noise problems.
And might be a good start to exclude your noise source(s).

with best regards

Andreas


Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 28, 2024, 08:39:03 pm
Indeed.
I did some simulation with AD8628 and is not so clean with this circuit. Current noise even gets worst with bigger C20.
ADA4522 I think is still the best bet.
Other issues will solve after op-amp.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 28, 2024, 08:58:35 pm
I don't think the models are that good to really tell the difference between the different Az op-amps. They can be both overly optimistic and pessimistic in such details.
I am afraid it would need real life tests for this. Even that datasheet values on the noise are not that reliable - some get worse when used as a buffer.

The ADA4522 is likely a very bad choice, as a version with rather high current noise. I have used MCP6V66 and MCP6V76 (somewhat similar to the AD8628) with 500 K source impedance with not so bad results. In my case also the a AD8628 is not so horrible with 10 Mohm.

My guess is more with a problem from the supply or the RF isolator.

A good JFET amplifier (e.g. OPA145) may be an option, but with different weak points. It could still be good enough for 5 digits, at least for not too small voltages.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on March 29, 2024, 12:20:45 am
you will need either a J-FET type or a low input bias current type + some offset adjustment from time to time.

Except for very old designs from maybe as late as the early 1970s, all of the digital voltmeter designs I am familiar with enclose the high impedance buffer inside of some variety of automatic zero loop, typically with the automatic zero cycle preceding each measurement.

Where it gets tricky is that the automatic zero cycle may or may not correct for common mode rejection.  If it does not, then the common mode rejection of the operational amplifier used as a buffer becomes very important.  That makes parts like the OPA140/OPA141/OPA145/OPA1641 amazing.

I guess the next step up is to bootstrap the input buffer to increase common mode rejection, although I have only seen this in electrometers because they need an input buffer to cover a wide input voltage range.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 29, 2024, 07:57:12 am
With only a 5 digit target there is no need to improve on the common mode rejection or input impedance. Another reason for bootstrapping the supply can be the limited supply range (e.g. 5.5 V max) of many AZ OP-amps. As an example this is done woth the Keithley 2000 DMM as the buffer at the input - though not bootstrapping in the strict sense from the output side, but more feed forward from the input.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on March 29, 2024, 09:12:24 am
With only a 5 digit target there is no need to improve on the common mode rejection or input impedance.

I first ran across this problem with the old Siliconix 4.5 digit integrating converter chipset.  Their automatic zero cycle did not correct for common mode rejection of the integrated CMOS input buffer, which could have been worse than 72dB when 86dB was needed, and I guess nobody realized in time that this would ruin the accuracy.  They released an update which brought out the signals after the input multiplexer so that an external JFET precision operational amplifier could be used.  Precision JFET parts were better, but could barely meet the requirements back then.  They recommended the Analog Devices AD542 which was about the best available part at the time.  These days there are lots of outstanding JFET parts which can handle 6 digits, and 7 digits with grading.  The OPA145 series amazes me.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: MegaVolt on March 29, 2024, 09:50:02 am
Their automatic zero cycle did not correct for common mode rejection of the integrated CMOS input buffer
How can this correction be made automatically?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on March 29, 2024, 01:42:46 pm
Their automatic zero cycle did not correct for common mode rejection of the integrated CMOS input buffer
How can this correction be made automatically?

Common mode rejection is the change in input offset voltage for a change in voltage at the non-inverting input, so to have the automatic zero cycle remove that error, the buffer must be zeroed with the input voltage applied to the non-inverting input instead of applying zero or ground.  As the input changes, changing the non-inverting input, the automatic zero cycles then follows it and corrects the common mode error as part of correcting input offset voltage.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 29, 2024, 02:41:11 pm
I am still targeting 6 or 6.5 digits. I just posted here where this specific ADC and Opamp buffer was in discussion. :) If target would be 5 digit I would just add digital filter on top and would be there. :)
My target is to monitor other references with a mux(MAX4051) and as such low impedance was not absolutely required, but I also want possibly to use it behind that, and as such high impedance is required. I have two temperature NTC rigged to the Arduino which I can log in parallel, and as such with single equipment I would be able to monitor multiple references and temperature variation with a single equipment.
I will test other AZ with this circuit. From the simulations I saw that Ad8628 is spread spectrum and current noise is all over the place, so maybe this is why I see noise. Since other AZ are constant current noise, maybe this will translate in constant offset which I can then get rid with calibration.
If this will not result will focus on the JFET with bootstrapping. Then I will need to change architecture, power supply, maybe negative and positive rail, and new boards. Maybe even LM399 as reference, but then other requirements for power supply. A lot of more work just to monitor a few references in parallel, and more cost as well. :)
My immediate next step when I get back home is: Reduce C20 back to 2nF or something, remove 10nF capacitor between digital and analog ground to make sure it is not bringing noise from laptop to analog side; use other AZ; test speed of PC817 for SPI as I have a bunch around, and maybe can replace isolator with a solution based on it in case noise is traveling through the capacitive isolator
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on March 29, 2024, 08:36:31 pm
As Kleinstein points out, nothing exotic is required anymore for 5 or even 6 digits.  If you find a chopper stabilized part which is suitable, then it will work without anything further.  A JFET part like the OPA140 or OPA145 is good for 5 or 6 digits without any further correction except for input offset.  I wish these had offset null terminals but input offset can be removed in other ways.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 29, 2024, 10:03:01 pm
The 1:10 divider at the very input may could be a weak point of the proposed circuit. Even the relatively expensive Caddock dividers have a limited stability and the high impedance naturally comes with some extra noise and makes it a bit tricky to use an AZ amplifier. For measuring voltage references at some 10 V one may want a different front end. More like a buffer at the input and only than some divider with a smaller ratio, like 1:2.5 or maybe even only 1:2. A divider at some 50-200 Kohm can be more stable than at 10 M. One would still also need some protection for the input, but this may need to be before a MUX chip.

The large 18 kHZ singal in the sope trace is definitely a problem - more like a supply problem, not so much a thing with the amplifier. Checking the supply and maybe an alternative to the ISO part can be a good idea.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 30, 2024, 04:53:28 pm
Just simulated ISO7762 and it seems that it is introducing 1VPP noise signal proportional to capacitor between Digital and Analog grounds through the reed relay coil that most likely is then capacitively coupled to resistor network in the buffer input. Simulation is with the cap I have in the circuit (10nF) and results on oscillation on the order of Khz. The larger the cap between grounds the lower the frequency the oscillation.
This isolator is based on OOK and this instability is probably the source of the noise I get.
I guess I should avoid use large capacitor. This oscillation would be limited but other CMM noise could get in from USB side.
There is noise also on the other signals "High" but more evident on the coil "High" value.

If I simulate PC817 then it gets limited speed of around 2Khz. What optoisolator people are using and with which SPI clock?

Or maybe I should just remove the cap between grounds and add low pass filter on the digital signals distributed in the analog board and drive the reed relay with low pass filter and Emitter follower?


Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 30, 2024, 05:18:44 pm
The cheap opto couplers are slow. With a careful choice if the load side one can get about a 9600 baud signal to still work, with a little luck and teaking maybe 19200.

For higher speed there are also faster optocoupler. A classic is the 6N137.

The capacirtance between the grounds can be an issue, but it should not be only one. One often has it because of common mode signals injected by the DCDC converter.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 30, 2024, 06:12:29 pm
Soon or later you will end up with the following architecture (has been discussed here many times already):

Bootstrapped high impedance buffer->10:1_divider->ADC->MCU->optoisolated_serial

while using floating power source, like +/-20V for the buffer, and 5V for the ADC/MCU.
The serial will send voltage values, and receives some config commands only.
10:1 divider for example the LT5400 2x 9k:1k.
I made many simulations here on that AFE in past (various setups).
 :)

https://www.eevblog.com/forum/projects/simple-dc-afe-for-adc-chips-with-unipolar-diff-inputs/msg2120179/#msg2120179 (https://www.eevblog.com/forum/projects/simple-dc-afe-for-adc-chips-with-unipolar-diff-inputs/msg2120179/#msg2120179)

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on March 30, 2024, 07:39:17 pm
while using floating power source, like +/-20V for the buffer, and 5V for the ADC/MCU.

I was still dreaming making it portable with some lion pack. :)
Going for +-20V we enter the realm of mains transformer or medical grade switching PSU, or how did you made it?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 30, 2024, 08:02:19 pm
Having a higher supply for the amplifier / buffer definitely helps. It needs a little more power, but not that much.  If battery supply is used, one can use a relatively normal switched mode up converter with some care to the filtering. The bootstrapped supply can be done with a current source and normal OP-amp, at least with a relatively low power amplifier.  E.g. I have used a MCP6V66 and TL061 for a useful range of some +-12 V. With a +20 and -15 V supply and some 500 µA of current consumption.

For the configuration one would likely not use a 1:10 divider, but less, more like a 12 V range as the target for the input. Much higher gets more tricky and power hungry for the amplifier.  Besides the amplifier also the choice of CMOS switches gets more limited beyound some +-15 to 18 V supply.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 30, 2024, 09:58:21 pm
..The bootstrapped supply can be done with a current source and normal OP-amp, at least with a relatively low power amplifier.  E.g. I have used a MCP6V66 and TL061 for a useful range of some +-12 V. With a +20 and -15 V supply and some 500 µA of current consumption.
..

Here is Kleinstein's idea modded by iMo (his schematics found in my archive..) :)

PS: it is a high impedance input AFE for +/-12V range, a bootstrapped opamp, with a divider 10k/(3k||50k) and with fully differential output for a max 5V ADC (aprox 5Vpp with 12Vpp input)..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on March 31, 2024, 08:22:05 am
The bootstrapped (actually more feed forward here) supply should also have a nagative side. This could be done with a divider across the zener for the feedback.
Depending on the OP-amp used one would want less voltage, more like 4-5 V as quite some of the AZ OP-amps have a limited supply range.

The circuit shown in the simulation is using a driven low side. This can complicate things when using gain for lower ranges.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 31, 2024, 09:35:10 am
The bootstrapped (actually more feed forward here) supply should also have a nagative side. This could be done with a divider across the zener for the feedback.
Depending on the OP-amp used one would want less voltage, more like 4-5 V as quite some of the AZ OP-amps have a limited supply range.

V2

V3 (simplified)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on March 31, 2024, 12:27:06 pm
With only a 5 digit target there is no need to improve on the common mode rejection or input impedance.

I first ran across this problem with the old Siliconix 4.5 digit integrating converter chipset.  Their automatic zero cycle did not correct for common mode rejection of the integrated CMOS input buffer, which could have been worse than 72dB when 86dB was needed, and I guess nobody realized in time that this would ruin the accuracy.  They released an update which brought out the signals after the input multiplexer so that an external JFET precision operational amplifier could be used.  Precision JFET parts were better, but could barely meet the requirements back then.  They recommended the Analog Devices AD542 which was about the best available part at the time.  These days there are lots of outstanding JFET parts which can handle 6 digits, and 7 digits with grading.  The OPA145 series amazes me.

..LD120/121A/122 I would assume.. Great app notes with very details you may find in the Siliconix 1982 databook.. I got 120/121A in my collection (except that I have a working DMM based on that chipset), perhaps it would work 5.5 digits with discrete chips instead of the 122 and a tiny fpga (instead of the 121A).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 01, 2024, 01:35:57 am
With only a 5 digit target there is no need to improve on the common mode rejection or input impedance.

I first ran across this problem with the old Siliconix 4.5 digit integrating converter chipset.  Their automatic zero cycle did not correct for common mode rejection of the integrated CMOS input buffer, which could have been worse than 72dB when 86dB was needed, and I guess nobody realized in time that this would ruin the accuracy.  They released an update which brought out the signals after the input multiplexer so that an external JFET precision operational amplifier could be used.  Precision JFET parts were better, but could barely meet the requirements back then.  They recommended the Analog Devices AD542 which was about the best available part at the time.  These days there are lots of outstanding JFET parts which can handle 6 digits, and 7 digits with grading.  The OPA145 series amazes me.

..LD120/121A/122 I would assume.. Great app notes with very details you may find in the Siliconix 1982 databook.. I got 120/121A in my collection (except that I have a working DMM based on that chipset), perhaps it would work 5.5 digits with discrete chips instead of the 122 and a tiny fpga (instead of the 121A).

That is the one.  If you check Google carefully enough, you will find that I have twice designed a replacement front end for these chipsets because burning out the input multiplexer is a common failure.   I designed a replacement twice because I forgot that I did it the first time.

The LD120 has the terrible integrated CMOS buffer, and the LD122 is the same chip without the integrated CMOS buffer, so that an external JFET precision operational amplifier can be used instead.  Tektronix used the AD542 for the buffer, and I have not seen any recommendation from Siliconix, but I assume there was an application note from Siliconix for the LD122 which I never found.  The datasheets for the LD120 and LD122 listed the same accuracy, which is a laugh; there is no way the LD120 could have met those specifications with an CMOS buffer uncorrected for common mode rejection.

I currently have a DM501A with the LD120 on my workbench with a bad input multiplexer, and picked up the parts to replace that part, including an OPA140 for the buffer and a DG419 for the input multiplexer.  Higher serial number DM501As used the LD122 with an AD542 which is just barely good enough.  At some point I would like to have a stack of DM501As for general use.  It might be fun to make a little board for fixing LD120/LD122 instruments, but I fear there will not be enough demand to make it worthwhile.

The run-up and run-down design should be more accurate than Intersil's dual-slope design because dielectric absorption produces proportionally less error, but Siliconix did not correct the common mode rejection of the input buffer so was worse overall.  HP published even better application notes about the run-up and run-down integrating ADCs, but for a modern design the LTC2400 or similar is better in every way.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 01, 2024, 08:22:13 am
You may easily download the "1982 Siliconix Analog Switch and IC Product Data Book" (24MB) where there is about 100pages dedicated to the 120/122. There are design notes for the external opamp/switch as well. They claim 1uV resolution at 20mV FS with the 122.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 01, 2024, 08:27:28 am
The bootstrapped (actually more feed forward here) supply should also have a nagative side. This could be done with a divider across the zener for the feedback.
Depending on the OP-amp used one would want less voltage, more like 4-5 V as quite some of the AZ OP-amps have a limited supply range.

V2

V3 (simplified)
The circuit would like a capacitor in parallel to R8 to improve stability.  The ADA4528 is not a good choice for a high impedance. More reasonable OP-amp choice for the input buffer are  max4238, LTC2050, OPA333, AD8628, MCP6V76, OPA387.  For the ADC driver the ADA4523 is also overkill and not idea with 47 K resistors - more like a job for a MCP6V76. The inverter part (u3) does not even need to be an AZ type,  it only sets the common mode voltage for the differential ADC. So this could be somerhing simple like MCP6001.


....
I currently have a DM501A with the LD120 on my workbench with a bad input multiplexer, and picked up the parts to replace that part, including an OPA140 for the buffer and a DG419 for the input multiplexer.  Higher serial number DM501As used the LD122 with an AD542 which is just barely good enough.  At some point I would like to have a stack of DM501As for general use.  It might be fun to make a little board for fixing LD120/LD122 instruments, but I fear there will not be enough demand to make it worthwhile.

The run-up and run-down design should be more accurate than Intersil's dual-slope design because dielectric absorption produces proportionally less error, but Siliconix did not correct the common mode rejection of the input buffer so was worse overall.  HP published even better application notes about the run-up and run-down integrating ADCs, but for a modern design the LTC2400 or similar is better in every way.

For a DMM the LTC2400 has some limitations as it is single ended input and essentially positive voltage only. To allow positive and negative readings other more modern SD ADC chips would be a better choice. The multislope run-up of the LD120/LD122 has quite some advantages compared to the classic dual slope. The ICL710x chips just had the better front end and better auto zero implementation.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 01, 2024, 09:08:42 am
..
The circuit would like a capacitor in parallel to R8 to improve stability.  The ADA4528 is not a good choice for a high impedance. More reasonable OP-amp choice ..

That schematics is just an idea, simplified (you have to add the decoupling, 5V driver opamps would require handling their Vcc voltage, etc.), the opamps in the above sim are placeholders for the sim only. Would be interesting if somebody here built that AFE and characterized it with a modern 24+bit ADC..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 01, 2024, 09:59:41 am
Hi,
That AFE is for ADC with differential input, right?
If I would like to use it with ltc2400 I would need some voltage level translation, or different grounds, is this right?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 01, 2024, 10:17:09 am
The LTC2400 is a bit odd, with only a positve sign. Most other SD ADCs come with differential inputs. It would make relatively little sense to add the level shift / differential conversion. It is just easier to use a different ADC, like LTC2410, MCP3561, ADS1219, AD7190 or a similar different type.

There is an older Hameg DMM that uses the LTC2400, but the extra polarity switching is a bit inconvenient.´

A starting point could be a configuration a bit similar to the Sigilent 3055/65.
From the pictures it looks a bit like using a buffer/ amplifier first with a circuit to generate a differential signal by driving the low side. This is a bit like the circuit IMo showed. Than come optional dividers and buffers right at the ADC inputs.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 01, 2024, 11:26:19 am
This is an another example of AFE (I elaborated here in past as well).
Example only, simplified, the opamps used in the sim are placeholders only.. :)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 01, 2024, 02:17:19 pm
For the LTC2400 you may try for example this unipolar one.
It has high input impedance (depends on the first opamp), bootstrapped, low output impedance, unipolar..
Example only.

Note: no need to have the +18V/-5V supply floating as the grounds are common. The output divider there is based on the LT5400 2x9k/1k version, you may use any such you get 0-5V at the LTC2400's input.
You may go to higher input voltages, as the input stage is bootstrapped. The zeners in the bootstrap have to be such you get required supply voltage at the opamps (like 5V max with 5V opamps). The second opamp there is a buffer deloading the first opamp. It is wired inside the loop of the first opamp, so it could be almost any opamp with some output current capability and 5V supply (in this example). The power source for the AFE has to be such the bootstrapped opamp stage "fits" inside its span considering the required input voltage range (see the bottom graph).

The overvoltage protection is bootstrapped as well under normal situation, thus there is almost none leakage current even with ordinary diodes, like 1N4148..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 01, 2024, 02:45:46 pm
You may easily download the "1982 Siliconix Analog Switch and IC Product Data Book" (24MB) where there is about 100pages dedicated to the 120/122. There are design notes for the external opamp/switch as well. They claim 1uV resolution at 20mV FS with the 122.

Thanks, I have been using various separate datasheets, and the 1985 databook which is missing the application notes.  I am not sure why I did not check the 1982 databook.

For a DMM the LTC2400 has some limitations as it is single ended input and essentially positive voltage only. To allow positive and negative readings other more modern SD ADC chips would be a better choice.

Hmm, I thought the LTC2400 was better than that, and now I cannot find the better LT parts on the Analog Device's selection guide.  Did AD discontinue them?

What is the current darling of high resolution and accuracy SD ADCs?

Quote
The multislope run-up of the LD120/LD122 has quite some advantages compared to the classic dual slope. The ICL710x chips just had the better front end and better auto zero implementation.

We used the ICL710x chips, and I did not find out about the Siliconix chips until after they were discontinued.  Getting 20 to 40 thousand counts out of the ICL710x chips was a real challenge because of dielectric absorption.  Texas Instruments had a flawed but competitive solution at that time also.

I think it was the old ICL710x application notes which showed an RC oscillator for timing, but we figured out that it had too much jitter causing flicker.  The Q of an LC oscillator was much better and solved this problem.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 01, 2024, 03:01:08 pm
90% of all modern 24+bit ADCs chips are with differential inputs, but both inputs must always be within Vgnd..+Vcc. So you have to create a floating AFE such the signals are differential around a "common voltage" which has to be always positive. There are several ADC chips (afaik) which work with negative voltages as well ("true bipolar", internal charge pump, like +/-5V or +/-10V inputs), but usually not "high end precision one".

Precision 24bit SD/SARs often mentioned here - AD7177, ADS1257/63, LTC2500-32, AD4630-24, AD4030-24  (all are not true bipolar afaik).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 01, 2024, 05:05:03 pm
There are a few low INL SD ADCs, e.g. :
AD7177    1 ppm INL typ  , very low noise , but a bit expensive
AD7190    1 ppm INL typ  , used in SDM3055
AD7175    1 ppm INL typ  , used in SDM3065   up to 250 kSPS
AD7768    1.1ppm INL typ  , up to 1000 kSPS
LTC2442   1 ppm INL typ with 4 V ref.
ADS125H   2 ppm INL typ , 40 kSPS,  up to +-20 V input range  - could be a simple solution
ADS1259   0.4 ppm INL typ  14 ksps

Especially with the faster, really low noise SD ADCs the INL is not just a function of the ADC chip, but also depends on how the reference and inputs are driven. So the real life INL may end up worse or it needs quite some extra effort for those drivers. So one would still need to check if the circuit is working as linear as planed. The older LTC2400 and other more low power ones are easier to drive.

The ICL71xx sereies is really made for 3.5 to 4.5 digits and not more. The DA is limiting and also the DNL at around zero needs trim and measureing the input only for 1/4 the time is limiting.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 01, 2024, 07:43:09 pm
Analog Devices changed (made worse) their selection guide and it seems to keep missing parts now.  The LTC2442 was probably the one I was thinking of.

The ICL71xx sereies is really made for 3.5 to 4.5 digits and not more. The DA is limiting and also the DNL at around zero needs trim and measureing the input only for 1/4 the time is limiting.

Dielectric absorption in the integrating capacitor limits all simple dual-slope converters to about that.  I think we had to grade the capacitors individually to meet the claimed ICL71xx specifications.  The run-up and run-down converter has a big advantage here because it gets a lot more "travel" across the integrating capacitor for the same dielectric absorption.  The HP applications notes have the most detailed description of what is going on that I know of.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 01, 2024, 07:59:35 pm
Here is a sim with the unipolar AFE and the latest AD4630-24 high end ADC.

Impedance of the 10V source is 10Meg, divider is 9k/1k, and the ADC's diff input is biased at +1V to see the difference against the output of the AFE (after the divider we should get 1V).

The AD4630 shows the output value as a "voltage", the ADC's timing comes from the ADI's example (2Msps).
Each step at the Vout (ADC data out) represents an ADC conversion, imho..
You may see the 1k divider impedance is still high, as we see couple of uV ripples there, coming from the ADC input, at least that is my current understanding..
:)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 01, 2024, 09:08:53 pm
Even at zero volts, 1N4148s have a lot of leakage.  To put it another way, the change in current for a change in voltage at zero volts is still high.  I would still use low leakage diodes for D3 and D4 even though they are bootstrapped to have zero volts across them.

Maybe their leakage current is smaller than the input current noise?

Bob Pease had the following to say about it, plus the leakage increases dramatically as temperature increases.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 01, 2024, 11:32:08 pm
You may easily download the "1982 Siliconix Analog Switch and IC Product Data Book" (24MB) where there is about 100pages dedicated to the 120/122. There are design notes for the external opamp/switch as well. They claim 1uV resolution at 20mV FS with the 122.

Thanks, I have been using various separate datasheets, and the 1985 databook which is missing the application notes.  I am not sure why I did not check the 1982 databook.

I see from application note AN80-8 that I calculated exactly the same common mode rejection that Siliconix did - 86dB.  That is reassuring.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 02, 2024, 02:59:19 pm
Btw you may replace the input buffer (or amplifier) in the LD120 as well.
You would need a switch (with inverter for M/Z) and an opamp.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 02, 2024, 04:51:26 pm
Btw you may replace the input buffer (or amplifier) in the LD120 as well.
You would need a switch (with inverter for M/Z) and an opamp.

That is what I am doing.  My DM501A has the LD120 and not the LD122, but later serial numbers have the LD122 with an air wired AD542 as shown below.  I am not sure if there is Tektronix documentation showing the changes.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 02, 2024, 05:08:39 pm
With your LD120 you would need something like this (that figure 7 shows how to bypass the internal crappy opamp in the LD120)..
So a small board with a DG switch and the opamp, and do redirect pins 15 and 1 on the LD120 to your new board, and wire the M/Z signal from the LD121A..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 03, 2024, 01:20:28 am
That is the plan.  The hard part was finding a suitable operational amplifier and analog switch.  It helped that there was the Tektronix reference design with the AD542, so I had some idea of what was required.  I finally got the DG419 for the switch but wish I could have found something with lower specified leakage.  The problem here was actually finding DG419's in stock.

I guess if you want lower leakage, then a discrete solution for the multiplexer is required, but I was not willing to go that far initially, and a search does not show any FETs which are better anyway.  First I will see how the DG419 works out.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 03, 2024, 07:03:42 am
The DG419 is a rather low resistance switch. There could be lower leakage ones with higher resistance. Even a slected 4053 could be an option, if the voltage range is sufficient. The specs are loose, but actual performance often not that bad. Today there are plenty of CMOS switches to choose from. A TMUX6119 would be a modern candidate with low leakage. Compared to this discrete JFETs are rarely wirth the extra effort.

It is not only the leakage that can be an issue, but also the switching spike (the off part is the charge injection but the turn on part can be the more troublesome).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 03, 2024, 08:03:36 am
LD120/121A is a 4.5digits voltmeter only, so the DG419 with its <+/-0.75nA @25C leakage may work fine. With modern opamps and switches and its multislope, with perhaps a 12bit ADC for reading the residual charge the LD120/121A concept will work 6 digits, my bet.. But that is an another story..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 03, 2024, 10:03:05 am
The DG419 is a rather low resistance switch. There could be lower leakage ones with higher resistance. Even a slected 4053 could be an option, if the voltage range is sufficient. The specs are loose, but actual performance often not that bad. Today there are plenty of CMOS switches to choose from. A TMUX6119 would be a modern candidate with low leakage. Compared to this discrete JFETs are rarely wirth the extra effort.

Of the ones I checked, the DG419 was about the best option.  I will try the TMUX6119 if the DG419 does not work out because I am not interested in buying a bunch of DG419s and grading them.

Quote
It is not only the leakage that can be an issue, but also the switching spike (the off part is the charge injection but the turn on part can be the more troublesome).

That is something I will just have to test for.

LD120/121A is a 4.5digits voltmeter only, so the DG419 with its <+/-0.75nA @25C leakage may work fine.

The series protection is 500 kilohms, which is pretty typical, so input bias and leakage current yield an error of 20 picoamps per count.

Better performance might actually be available by using an OPA140 as a buffer *before* the multiplexer if its offset could be nulled out, but only because the OPA140 has such good DC precision.

Quote
With modern opamps and switches and its multislope, with perhaps a 12bit ADC for reading the residual charge the LD120/121A concept will work 6 digits, my bet.. But that is an another story.

That might be the case since HP got that kind of performance out of their similar run-up/run-down converters.  Integrating dual-slope converters sure cannot achieve that.  Thinking about it now, I wonder why nobody ever implemented an integrating run-up/run-down converter with charge injection compensation as a generally available ASIC.  Maybe someone did, but I missed it.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 03, 2024, 10:21:21 am
..Thinking about it now, I wonder why nobody ever implemented an integrating run-up/run-down converter with charge injection compensation as a generally available ASIC..
Shit happens..  :D :D
PS: Moreover the LD12x is 44y old design with none supporting MCU (none supporting math!).
Imagine the RP2040 with the PIO state machines with the improved LD122, and with math for gain, offset, temperature, linearity compensation implemented.. Would be a nice project (and an attempt with LD120 as the template was done by "NNNI" occasional poster, afaik)..
https://hackaday.io/project/190528/logs
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 03, 2024, 11:34:23 am

Quote
With modern opamps and switches and its multislope, with perhaps a 12bit ADC for reading the residual charge the LD120/121A concept will work 6 digits, my bet.. But that is an another story.

That might be the case since HP got that kind of performance out of their similar run-up/run-down converters.  Integrating dual-slope converters sure cannot achieve that.  Thinking about it now, I wonder why nobody ever implemented an integrating run-up/run-down converter with charge injection compensation as a generally available ASIC.  Maybe someone did, but I missed it.

The LD120 type run-up and an ADC (10 bit) reading the residual charge is about how the multi-slope 3 ADC in the HP34401 works.
It still needs more care with the integrator and clock to get really low noise.

Integrating the ADC to a single chips was a bit tricky, as it includes digital and demanding analog parts that were not easy to make with the same process. At the time one would have wanted CMOS or PMOS for the logic, BJT based for the reference part and JFETs for the Integrator and input buffer.  There are a few chips for 4.5 digit dual slope and related with run-down variations, but AFAIK the LD120 is the only type with a multi-slope type run-up. The compensation for the charge injection (using the fast mudulation for the zero phase) was needed for a direct display version. It is no longer needed with a digital offset compensation / auto zero.

The classic MS ADCs used a CPU / µC for the control.  With a modern µC this can still be build relatively simple. The modern SD Chips are however still simpler, even though for high performance one also needs quite some drivers for the inputs and reference. So it is often not just the ADC chip (except for the ADS125H , that even includes an input amplifier and is fast enough for reasonable BW digital RMS).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 03, 2024, 12:03:31 pm
The ADS125H02 at +/-13.3V input and 2.5smps and 2.5 Vref shows (DS) 0.6-0.89uVrms noise, that is better than the 34401A, imho. Not sure about other params, but definitely worth of consideration..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 03, 2024, 02:11:14 pm
The noise performance of the ADS125H is good. However the INL and gain stability is not that good. With a 2.5-3 V reference one is likely not planing with a LM399 or similar reference and the Bandgap type reference chips tend to be not as stable anyway. It would not consider it worth dividing down a 7 V ref, with the ADC gain not that stable anyway.
It would still be a pretty simple way to get to the 5.5 digit or low end 6 digit range. The limiting part is more the INL and gain drift, not the noise. So it could be a pretty fast (e.g. 50/60 SPS) 5.5. digit meter.
Another limiting factor is the input current:  some 100-500 pA is a bit on the high side to directly use it for the input. So one may still want and extra buffer at the input for a lower bias input.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: NNNI on April 03, 2024, 02:32:26 pm
Quote
Imagine the RP2040 with the PIO state machines with the improved LD122, and with math for gain, offset, temperature, linearity compensation implemented.. Would be a nice project (and an attempt with LD120 as the template was done by "NNNI" occasional poster, afaik)..

My design was not based on the LD120/121 chipset (I discovered them after I started working on mine) but instead the basic outline in The Art of Electronics 3rd Edition.

When I started the project, I barely had any experience working with microcontrollers, having only dealt with the Arduino framework and some very basic STM32 + CubeIDE projects. I was then introduced to the Raspberry Pi Pico, with its on board RP2040. The PIO peripheral ended up being the saving grace of the multislope project. The RP2040 already seems to have been dismissed as a toy on this forum (https://www.eevblog.com/forum/projects/thoughts-on-the-rp2040/ (https://www.eevblog.com/forum/projects/thoughts-on-the-rp2040/)). Although its peripherals might not be as numerous or mature as the ones on, say, an STM32 microcontroller, the C/C++ SDK and documentation are excellent and quite accessible even to beginners. With a little bit of creativity, the PIO peripheral is quite powerful in the things it can implement. I like to say: one can only think out of the box if there is a box (in this case, limitations) in the first place.

I haven't found much time to work on my multislope project in the last few months. However, I plan to clear up my backlog of other projects soon and devote time to finishing and perfecting the design. Of course, I will be posting the results on Hackaday and here (I recollect creating a separate thread last year).

Edit: If using an integrated ADC IC is preferred, the RP2040 PIO can also help with that...I used it to talk to an AD5791 DAC. It should be possible to quite easily talk to ADCs (or anything, for that matter) that have a weird interface.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 03, 2024, 02:56:22 pm
..Another limiting factor is the input current:  some 100-500 pA is a bit on the high side to directly use it for the input. So one may still want and extra buffer at the input for a lower bias input.

A high time to develop a small easy to use "AFE Module" for all modern SAR/SD ADCs.
A small pcb, with bootstrapped opamps, input protection and the divider.
The Vcc/Vee say +/-60V max, thus the input say +/-50V, >10Gohm.

We have to ask TiN to recall a new design competition! Will Jaromir win again??
 >:D

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 03, 2024, 04:18:01 pm
Getting high voltage like +-50 V with high impedance is already quite special, more like the electrometer range. For the most part this is not really a challange.

The modern SD/SAR chips are similar at the inputs, but still not all the same.
E.g. the ADS1259, as one candidate supports an extra negative supply for the analog part, that can simplifiy things a little, but would make it incompatible with many other parts.
There are also types for a more +-2.5 V range and +-5 V range.
Another complication for a universal front end is the need for compromises (noise, bias, INL, costs, power, maximum voltage), that depend on the use case and ADC.

For a more normal SD ADC I would consider a front end similar to the Sigilent SDM3065, but starting with a 2.5 - 5 V reference. From crude reverse engeniering this look like it uses a driven low side / common terminal to get a 20 V range with high impedance with still only a +-15 V supply. The sequence is than like amplifier (or maybe just a buffer), switchable dividers, buffers , ADC. It does not look like it uses a bootstrapped supply though. One could use bootstrapping for the input amplifier, but it complicates the stability. For the lower end 6 digit range a single good OP-amp could be still be good enough.
Boostrapping may be more a thing to use a 5 V AZ amplifier.

When starting with a 7 V reference, I would still prefer the µC controlled multi-slope way. It simplifies the front end by starting with a +-10-12 V input range (and thus litte need for a divider stage in between) and easy drive. Once the support circuit for the SD ADC chip is included, the effort gets more comparable.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 03, 2024, 05:42:23 pm
..For the lower end 6 digit range a single good OP-amp could be still be good enough.
For 6 digits like
LTC2057HV up to say +/-25V input (+/-30V max supply range)
OPA189, OPA140, LTC2057 input max +/-15V (+/-18V max supply range)?


Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 04, 2024, 01:00:03 pm
Integrating the ADC to a single chips was a bit tricky, as it includes digital and demanding analog parts that were not easy to make with the same process. At the time one would have wanted CMOS or PMOS for the logic, BJT based for the reference part and JFETs for the Integrator and input buffer.  There are a few chips for 4.5 digit dual slope and related with run-down variations, but AFAIK the LD120 is the only type with a multi-slope type run-up. The compensation for the charge injection (using the fast mudulation for the zero phase) was needed for a direct display version. It is no longer needed with a digital offset compensation / auto zero.

The classic MS ADCs used a CPU / µC for the control.  With a modern µC this can still be build relatively simple. The modern SD Chips are however still simpler, even though for high performance one also needs quite some drivers for the inputs and reference. So it is often not just the ADC chip (except for the ADS125H , that even includes an input amplifier and is fast enough for reasonable BW digital RMS).

What I was getting at is that it would be a small step to modify the digital control section of the LD120/LD121 to implement charge injection compensation like HP did where a constant number of switching actions occur so the charge injection error is constant and can be treated as offset.  I assume they did not think of it or other errors dominated, which would have been the case anyway with the LD120's internal buffer or any likely external buffer on the LD122.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: dobsonr741 on April 04, 2024, 01:55:15 pm
Quote
A high time to develop a small easy to use "AFE Module" for all modern SAR/SD ADCs.
A small pcb, with bootstrapped opamps, input protection and the divider.
How about this one? https://www.analog.com/en/products/ada4255.html (https://www.analog.com/en/products/ada4255.html)

I am buddying it up with an LTC2440, in progress for a while.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 04, 2024, 02:58:56 pm
Integrating the ADC to a single chips was a bit tricky, as it includes digital and demanding analog parts that were not easy to make with the same process. At the time one would have wanted CMOS or PMOS for the logic, BJT based for the reference part and JFETs for the Integrator and input buffer.  There are a few chips for 4.5 digit dual slope and related with run-down variations, but AFAIK the LD120 is the only type with a multi-slope type run-up. The compensation for the charge injection (using the fast mudulation for the zero phase) was needed for a direct display version. It is no longer needed with a digital offset compensation / auto zero.

The classic MS ADCs used a CPU / µC for the control.  With a modern µC this can still be build relatively simple. The modern SD Chips are however still simpler, even though for high performance one also needs quite some drivers for the inputs and reference. So it is often not just the ADC chip (except for the ADS125H , that even includes an input amplifier and is fast enough for reasonable BW digital RMS).

What I was getting at is that it would be a small step to modify the digital control section of the LD120/LD121 to implement charge injection compensation like HP did where a constant number of switching actions occur so the charge injection error is constant and can be treated as offset.  I assume they did not think of it or other errors dominated, which would have been the case anyway with the LD120's internal buffer or any likely external buffer on the LD122.

LD120/121A does the charge injection compensation - see the small zig-zags at the multislope peaks..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 04, 2024, 03:02:53 pm
Quote
A high time to develop a small easy to use "AFE Module" for all modern SAR/SD ADCs.
A small pcb, with bootstrapped opamps, input protection and the divider.
How about this one? https://www.analog.com/en/products/ada4255.html (https://www.analog.com/en/products/ada4255.html)

I am buddying it up with an LTC2440, in progress for a while.

That is a cool chip, indeed, what is less impressive (at a first glance) is its noise - ie with gain 1/16V / V it is 100uVpp, with 1V/V 6uVpp, so at something close to +/-10V input range (1/4V /V) I would estimate 25uVpp (but perhaps I am mistaken somehow)..
That leads to max 5.5digits, perhaps (what is ok considering the subject of this thread).. Not sure with other params, however..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 04, 2024, 03:55:46 pm
LD120/121A does the charge injection compensation - see the small zig-zags at the multislope peaks..

I think there is more to it than that; there has to be the same number of switch cycles on every integration so that the same amount of charge is transferred.  HP published an application note about it.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 04, 2024, 05:21:39 pm
The way the LD120 works, it has the same number of switching events for each integration.  The small zig zags make shure to have the same switching sequence. The HP34401 still uses essentially the same pattern. The control is simple, but still quite good. Even a not perfect settling of the reference buffer or integrator in the short phases is not such a problem: the number of the short pulses is linear in the input signal and the settling errors thus don't add up to an INL contribution.

Even the zero phase gets a somewhat similar rate of switching events and thus a reasonable good zero.
It looks more that the quality of the amplifiers inside the LD120 is somewhat limiting, not the control logic ( LD121).

A downside of the LD120 is that the resistors (R1 and R2) effect the ADC gain and thus should be low TC, low drift ones.
At least the Datasheet version that I have is odd in suggesting a mica capacitor for the integrator. The obvious choices are PS, PP or C0G ceramic (was hardly available in ~ 1 nF size when the chip was new).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 04, 2024, 09:37:51 pm
You may easily download the "1982 Siliconix Analog Switch and IC Product Data Book" (24MB) where there is about 100pages dedicated to the 120/122. There are design notes for the external opamp/switch as well. They claim 1uV resolution at 20mV FS with the 122.

When you download the Siliconix 1982 data book you may find there an elaborate list of hints in various app notes how to handle the construction of the LD120/122 based meters. There is basically everything we know today as the best practices for uV and sub uV designs (EMF, noise, grounding, leakages, DA, etc).
There is an Appendix A with "Error terms" math.
Regarding the resistors and capacitors in LD120/122 - around the page 7-75 there is following (and more) - see below.
For example they mention the ratio TC of the R1 and R2 should be equal or smaller than the 10ppm/C recommended for the voltage reference with 4.5 digits.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 05, 2024, 02:49:30 pm
LD120/121A does the charge injection compensation - see the small zig-zags at the multislope peaks..

I think there is more to it than that; there has to be the same number of switch cycles on every integration so that the same amount of charge is transferred.  HP published an application note about it.

Not sure we have to discuss the LD120/122 in this thread (it is about LTC2400) - but when you are improving your multimeters - here is an another thing worth to have a look - the offset compensation of the LD120/122 as seen in the app notes with a small 200pF capacitor and the 100k trimmer.

Moreover  - I've spent some time reading the US patent US-4164733-A by Landsburg; George F. et al. (Siliconix) published in 1979 on the improvement of the LD120/LD122/LD121.

Interestingly, the patent describes an improvement where the AZ capacitor is connected to the "virtual ground" (the pin 9 - input of the integrator) instead to "ground" and the inv input of the comparator is wired to ground instead to output of the AZ amplifier (as has been depicted in all datasheets and app notes). In addition, the patent describes a split of the AZ phase into two parts AZ1 and AZ2, utilizing the different wiring of the AZ capacitor and comparator.
The patent claimed a significant improvement (see the patent).

It looks like Siliconix decided not to improve the silicon (in both chips) based on its own patent (filed in 1977, btw.).

PS: Or, perhaps all the datasheets lie?  >:D
Would be great to look at the actual signals with an oscope :)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 07, 2024, 01:21:22 pm
Hello,
I went and checked in AD forum someone complaining from noise from SPI lines and the AD expert suggested that was no SPI noise and for the guy to check LTC2508-32 page17 figure9 buffer example.
Then I had a look on configuration suggested bellow, and I see ADC VCC filtered with LC filter and reference with 10uF as well wich serves as well as floating voltage divider for Vin from that circuit.
https://www.eevblog.com/forum/metrology/7-5digit-diy-voltmeter/msg1393950/#msg1393950 (https://www.eevblog.com/forum/metrology/7-5digit-diy-voltmeter/msg1393950/#msg1393950)
Then also reference demo circuit for LT2400 has 10uF in Vref and Vin.

So I decided to do these changes one by one and try.
Initial OPamp wass not definitively AD8628. I measured unity GBW and was only 570Khz while should be 2Mhz.
Anyway replaced with LTC2050HV which I confirmed to have unitary GBW of 2MHZ so should be real thing.
With this opamp noise was still on the realm of 600VPP (single sample) so I think even got worst.
Then still with LTC2050 adedd LC filter at VCC and got slight improvement.
Then added 10uF at Vref (was 1uF) and slight improvement again.
Then added filter after LT2050HV to RC 1K 10uF and big improvement from around 450VPP to the realm of 89VPP over 30 samples.
Then changed FO from ground to VCC after LC filter and additional 5-10VPP improvement in noise.

Then averaged with 15 samples - average (2PLC) and I get noise on the realm of 20-30VPP over 30 seconds.

So I think with large BW filter the noise is somehow integrating inside ADC. So now I need to understand what is best strategy to put the filters as reference designs have large caps right at Vin but I gess the filter should be some second order done by the buffer opamp and antialiasing filter just between Opamp output and ADC Vin, or?
This all is still with same ISO on SPI.

Before I do more stuf with mutiplex and respective buffers and build different board I need to understand how the filters need to be set and what the ADC is doing whit the signal feed to it. At least I undestood that the chopper can be used with the 1Meg input with some acceptable level of noise as long as Vin is filtered down to near DC or something.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 07, 2024, 02:16:35 pm
For testing the noise one could start with a shorted input. This eliminated the voltage reference as source for LF noise.

The RC filter directly at the ADC input usually should be as low in impedance as practical. So more like a 100 ohm resistor - that is about what lower power OP-amps are compftable to drive as an RC combination.
The main point is to avoid aliasing from noise at frequencies above 153 kHz/2 from the LTC2400 internal sampling.  Usually the input signal is not that fast an one could get lower in the cross over than absolutely needed. 10 µF is still quite large, but could be OK.

The RC filtering at the divider output side could be at least a comparable speed. So with the 1K*1 µF filter at the ADC with would be 1 M*1 nF. So a little more than the 22 pF shown.
Because of the noise from the divider more filtering can make sense, as long as it does not make the system too slow.

For the noise values the units are somehow not right ( maybe µVpp ?) and it is not clear if this is noise at the very input of noise scaled to after the divider / at the ADC input.
It would make sense to look at the noise after averaging over something like 20 ms or 40 ms to suppress mains hum.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 07, 2024, 06:27:08 pm
Hello,

With the input shorted to GND the range of the noise output by the ADC is 50uVPP with average 20uV. This with single reading andwithout averaging.
Sometimes it jumps to 40v(Vref value). Could this jump be due to some out of sync bit or the internal cap not discharging somehow? It seems not doing that when not shorted.

When I measure the reference in circuit with Keithly2000 (PLC1) its range is 6-9uVpp, so around 1,5ppm noise read by Keithley.

So my reference is too noisy or not so much?

BR,
Jorge
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 07, 2024, 06:38:35 pm
Some points going all the way to 40 V sounds like a digital problem, like getting out of sync.

For the noise test the RMS value can be a bit more convenient to measure than the peak to peak value. The RMS values tends to have less scattering than the peak readings. So one can get an estimate on the noise faster.

With readings faster than 1 PLC one gets a mix of noise and hum and this could be a bit difficult to handle. Precision readings usually want to suppress the hum. It would make sense to define a usefull averaging (some 1 or 2 PLC worth of data) that suppresses hum well and use this for most of the noise tests. A noise level of 1.5 ppm_pp is not that bad. Part of the noise could also be from the Keithley meter.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on April 08, 2024, 06:56:33 am
Some points going all the way to 40 V sounds like a digital problem, like getting out of sync.
Most probably wrong interpretation of the "sign" bit of the LTC2400

@Jorge: how do you measure 1/f noise (over which time span?)
usually you measure (without averaging) over a 10 second time period.

50 uVpp after the 10:1 divider would be much better than datasheet value (1.5uVRMS or 10 uVpp at the input of the LTC2400).

with best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 08, 2024, 07:36:58 am
I think Jorge is sometimes using "V or VPP" in meaning of uV and uVpp.. He should be careful here with that.
Also the NPN transistor in the relay circuit, with relay wired in the emitter is not the best idea. Normally you wire the relay into the collector (with the emitter grounded).
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 08, 2024, 07:46:29 am
I observed the "noise" by shorting the ADC input and checking the adc converted values range (VPP) while the ADC was not sending full scale code (attached capture). The range (VPP) and average are the only measure I can effectively measure in my setup.
So I could observe the result for few seconds, sometimes up to 30 seconds for the range. A single sample per reading was used.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: MathWizard on April 08, 2024, 10:23:15 am
I need to make some voltage and current references. But I see I have a screen just like the OP used in their project, mine came with an Arduino kit.

I was looking for something to replace an unlit LCD screen off a Keithley DMM. So one of those screens will fit pretty good. And other people have done really nice mods like this, and the chip datasheets and people's code are out there. So I don't have to be a cryptographer to translate from one IC to another.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on April 08, 2024, 10:56:02 am
I observed the "noise" by shorting the ADC input and checking the adc converted values range (VPP) while the ADC was not sending full scale code (attached capture).
the captured picture shows clearly a (slightly, near zero) negative value (not full scale). (see data sheet)

with best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 08, 2024, 11:09:39 am
I observed the "noise" by shorting the ADC input and checking the adc converted values range (VPP) while the ADC was not sending full scale code (attached capture).
the captured picture shows clearly a (slightly, near zero) negative value (not full scale). (see data sheet)

with best regards

Andreas

Thanks. I was not expecting negative values as Vin was shorted to ground. But since is common ground to digital lines and I have no termination resistors between ISO and ADC maybe is bouncing back and generating negative stuff. I had not thought on that. Since I just have 1 cm copper path between ISO and ADC I never considered that part of the lines could require coupling.
In the demo board they have nothing bewtween 74HC14 and the ADC digital inputs. Is something needed over there?

This is Chip select line going down way ahead conversion is over and waiting for /EOC. I have not updated this code. I grabbed from the project which Scully started and most people is using. So I gess this CS transition is introducing bunch of noise in the conversions. So maybe ajudsting the code to whait /EOC and then pulling CS down could improve things?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 08, 2024, 11:52:25 am
With only a relatively short distance it should be OK to directly connect to the the digital isolator. For driving a higher load (e.g. optocoupler) one may want some driver in between to reduce ground bounce at the LTC2400.

From noise and a possible offset the result could be slightly negative, at least at times. This can happen even without extera disturbance.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 08, 2024, 12:50:01 pm
I updated the circuit again to more close what is suggested for LTC2508-32.
I also removed the cap in the chopper input as was adding lot of noise. Example attached with 330nF and without any cap - only difference.
I also changed code to whait since last reading 170ns before CS down. Not sure exact impact.

So values seems much bether.
PS, when I reffer noise I mean the VPP range. The value in the charts is in Volts.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Nominal Animal on April 08, 2024, 01:36:55 pm
ISO776x signal inputs source or sink at most 10µA of current according to section 5.9 of the datasheet (https://www.ti.com/lit/ds/symlink/iso7760.pdf).  (Figures 4-1 through 4-4 indicate each input has a Schmitt trigger, and e.g. Mouser agrees, but the datasheet does not explicitly say.)

It is such a high impedance that I personally might consider 10kΩ to 100kΩ suitable series resistors if there is risk of noise (capacitively) coupling to the signal tracks.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 08, 2024, 01:43:12 pm
I updated the circuit again to more close what is suggested for LTC2508-32..
I think your current wiring is not suitable for the LTC2508-32.
That beast requires a different front end, differential, low impedance inputs, with several complications..

PS: when people mix noisy digital sigs with sensitive analog they put, say, 100-1k resistors in series with all digital signals (like from an FPGA to ADC/MUX etc). The value of the resistors depends on the signalling speed (ie the edges) required.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on April 08, 2024, 02:11:36 pm
I fear you have not understood the LTC2400.
you can keep it simple.

During data transmission the LTC2400 is not able to do a analog conversion.
During analog conversion a data transmission delivers no useful data.
So you have an isolation analog / digital in time.

For the negative values:
the LTC2400 has an "overrange"
so at zero volts input voltage I would expect ideally +/-5uVpp (gaussian distributed) conversion values with respect to the LTC2400 input.

with best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 08, 2024, 02:55:43 pm
..
So you have an isolation analog / digital in time..
That would work fine when you are able to stop (no 1/0/1 transitions anywhere) all the digital circuitry around. Even there is none "active data transfer between logic and the ADC", the digital logic lines stay noisy (as well as the Vcc/gnd).

On your LTC2400 boards the PIC12F675 while with running internal clock is still spreading noise via its digital lines even when the 2400 is doing the conversion.
Unless you stop the PIC's clock fully..

PS: on Jorg'es pcb the ISOxxxx isolator is running internally as well all the time (capacitive isolation), I bet.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 08, 2024, 03:27:34 pm
I am running it as SPI/MICROWIRE Compatible. Means I can pull down CS during conversion and observe /EOC. Data transfer will just start when SCK starts. When pulling down CS if not properly coupled it rings through the same ground used to get measurements samples. The sequence can be optimized by waiting at least the conversion time after last CS pull-up before poking SPI again. 163ms in my case.
Anyway I think I am still 1 decade away from the optimized noise level. Will need to wait for the 6N137 to arrive to see if I can improve it.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 08, 2024, 03:37:01 pm
As I wrote above the digital chips may be a happy source of broadbanded noise (especially when chasing uVolts) even when they "do nothing useful". The ISOxxxx certainly has got an internal clock generating AC for the capacitive couplers, any MCUs internal clocks run when the MCU waits on an external or internal ADC conversion (some have option to stop the main internal clock during internal ADC), LTC2057 opamp (any chopper/AZ) has got an internal clock(s) as well.
In order to get rid of any uV level noise you have to stop ANY clock signals, inclusive those deeply hidden clock signals on silicon..
Therefore people put those small value resistors in any digital lines as it creates a weak RC lowpass filtering (C being the parasitic capacitancies of the pcb tracks and chip inputs, say 3-10pF usually).
The value of the resistors cannot be too high (usually 22-100ohm) as it will start to limit the rising/falling edges of the useful signals (and it introduces small delays) as well..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on April 08, 2024, 05:45:40 pm
That would work fine when you are able to stop (no 1/0/1 transitions anywhere) all the digital circuitry around. Even there is none "active data transfer between logic and the ADC", the digital logic lines stay noisy (as well as the Vcc/gnd).

I was referring to the direct signals (CS, Clock) to the LTC regarding eventually ringing.

By the way I have also the option to command the PIC12F675 to sleep mode until conversion ends.
(Pin change interrupt on DOUT/EOC line).
But I have not seen any visible difference in noise between sleep/non sleep during conversion.
Of course this may be different for other chips like the ISO.

with best regards

Andreas

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: David Hess on April 10, 2024, 02:18:18 am
In order to get rid of any uV level noise you have to stop ANY clock signals, inclusive those deeply hidden clock signals on silicon.

Therefore people put those small value resistors in any digital lines as it creates a weak RC lowpass filtering (C being the parasitic capacitancies of the pcb tracks and chip inputs, say 3-10pF usually).

The value of the resistors cannot be too high (usually 22-100ohm) as it will start to limit the rising/falling edges of the useful signals (and it introduces small delays) as well.

Series termination helps up to a point but the problem is often charge transfer.  A lower peak but longer duration may be integrated to produce about the same result.

Optocouplers or pulse transformers, which normally are used to provide galvanic isolation, work better because of lower capacitive coupling, and can be combined with series termination.  I have seen some high resolution meters which used opto-interrupters because they have even less capacitive coupling than optocouplers.

Somewhere in here the analog section should be powered by a supply which also has high isolation. Batteries are a simple way to get the ultimate in power supply isolation.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 10, 2024, 10:36:03 pm
I think my setup is not that bad. All values I divide by 10 and my code is multiplying by 10. I never thought it is multiplying noise as well. Now Andreas comments above make sense. :)
Shorting the ADC inpupt and not multiplying by 10 (and removing the overange values) I get 2,038uV RMS.

Anyway when not dividing by 10 with the in circuit chopper and reed relay open, I have input resistor as 9Meg so noise in chopper stays a litle high around 30uVPP.

I think I am topped up with this configuration and the best strategy for this ADC is to go with 5V reference so can measure up to 10V with a divide by two which will compute noise levels x2 in the Arduino if not averaging.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on April 11, 2024, 09:46:52 pm
Shorting the ADC inpupt and not multiplying by 10 (and removing the overange values) I get 2,038uV RMS.
Hello,

the "overrange" values are valid results. So you should not remove them.
Instead calculate the correct sign for it.
(Otherwise you get an unwanted offset when averaging).

And take care when calculating on a small processor.
Usually they have only single precision floats (4 byte) with 24 bit mantissa.
This is not enough to handle 24 bits + sign + overrange (+ 4 sub-LSBs)
And also not enough for averaging.
You get additionally unwanted quantisation noise.

I calculate the results on a PC with double floats (64 bit mantissa).

For 10V range I use a LTC1043 capacitive precision divider.

with best regards

Andreas
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 12, 2024, 05:25:44 am
On a small µC I would use fixed point integers. 32 bits are just OK for most tasks, though it can get tight for averaging.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: iMo on April 12, 2024, 07:26:34 am
32bits integer is not enough when doing something like y=(a*x)/b or similar with 24bit "ADC values".
I spent a week messing with it in my ADuC845 experiments (== 2x24bit SD ADC and single cycle 8052 on a chip), where C I have handy has got single precision float only and none 64bit integer math.
I had to go with my own 64 bit integer mult/div (plus printf) to calculate gain and offset calib properly, ending up with an 1nV math resolution  ;D ..
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 14, 2024, 06:09:52 pm
Hello.
I just realized the reference I am using which is 4ppm/C (actualy seing 5ppm/C with my circuit) as is 4,096V whenever temperature changes 1ºC it changes 20uV. This means ADC readings as I am multiplying by a factor of 10 should reflects around 10 times as well in the computed output. So with 1ºC change reading 10V I see ~100uV (didnt understood exact math. 10*5ppm*Vout/Vref?) changes on my readings. Definitivelly will need to drop the divide by 10 for some usefull reference tracking.
The DMMA.Volt I am passing it now in a IIR filter with factor of 6 until I decided how to change the circuit next.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 14, 2024, 07:06:32 pm
The temperature effect from the reference would be 5 ppm/K *V_out.  The change in the reference effects the scale factor no matter how the signal is scaled.
So when measuring an external 10 V reference this would be 50 µV/K.

The can be additional drift from the divider. Those 10 M resistance dividers can also have a TC in the 5 ppm/K range.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 14, 2024, 07:13:48 pm
Thanks. So at least that part is not directly dependant on the 10x multiplier. More on the grade of the reference.
By the price of a B or D grade almost make sense to use an LM399 somehow. :)
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 14, 2024, 07:28:20 pm
The Lm399 ref. is 7 V and thus needs an extra divider to get down from 7 V to some 3.5 V to 5 V. A stable divider can also be a bit expensive and add to the TC and drift.

Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: jorgemef on April 17, 2024, 11:15:37 am
How is people doing tracking of multiple references with these ADC+voltage references? Theses 5v references are for sure having a lot of temperature variation to keep track of other references. I see Andreas solder some NTC to close his board references ground.
Is it a practice to monitor voltage reference temperature and compensate for the temperature variation known ppm in the MCU or later on the PC?
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Kleinstein on April 17, 2024, 03:29:32 pm
It is possible to add a temperature sensor and compensate for temperature effects. This can be more than just the reference alone, but also amplifier gain or a divider that can be temperature dependent. The problem is however that the references in a plastic case have more than just a simple temperature effect, but usually also some humidity effect and possibly an effect of the past temperature profile / hysteresis. A NTC can help, but it is not a magic solution for stability. It also needs some time and effort to measurent the correction function.

A 5.5. digit meter is usually no enough to really check a good bandgap reference - this is more something where one wants a good 6 digit meter with a reference that is considerably better than the DUT.
Title: Re: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)
Post by: Andreas on April 18, 2024, 04:50:37 am
Is it a practice to monitor voltage reference temperature and compensate for the temperature variation known ppm in the MCU or later on the PC?

It gives a improvement of ~factor 10.
But it needs some pre-requisites:
The reference must be repeatable (no hysteresis (<1ppm)) over the temperature range of interest (e.g. 10-40 deg C)
To get no additional noise from temperature quantisation the temperature steps need to have a good resolution (e.g. 0.1 deg C with a optimized NTC and 10 Bit ADC).
Further you have to select references with < 1ppm/K in the interesting temperature range to keep compensation steps below 0.1 ppm.

The best results I have with AD586LQ references (buried zener in hermetically CERDIP8 package).
Usually I get 2-3 devices from a batch of 10 which meet my requirements.

The other possibility would be to put a reference in a oven. (but this prohibits battery operation).

with best regards

Andreas