Author Topic: Easy DIY 5.5 Digit DVM + Volt Ref./Cal. (LTC2400+LTC6655 / SPI uC / Arduino)  (Read 145782 times)

0 Members and 3 Guests are viewing this topic.

Online David Hess

  • Super Contributor
  • ***
  • Posts: 17203
  • Country: us
  • DavidH
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.
 

Offline BravoV

  • Super Contributor
  • ***
  • Posts: 7549
  • Country: 00
  • +++ ATH1
Thanks for the link, great video.  :-+

The vref test board looks interesting isn't it ?



Offline branadic

  • Super Contributor
  • ***
  • Posts: 2448
  • Country: de
  • Sounds like noise
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

:-)
gazelle

Three threads and almost the same post, amazing.
Computers exist to solve problems that we wouldn't have without them. AI exists to answer questions, we wouldn't ask without it.
 

Offline jorgemef

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pt
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
 

Online Kleinstein

  • Super Contributor
  • ***
  • Posts: 14849
  • Country: de
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.
 
The following users thanked this post: jorgemef

Offline Andreas

  • Super Contributor
  • ***
  • Posts: 3305
  • Country: de
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

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
« Last Edit: March 19, 2024, 07:12:50 pm by Andreas »
 
The following users thanked this post: jorgemef

Offline jorgemef

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pt
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

« Last Edit: March 26, 2024, 06:35:27 pm by jorgemef »
 

Online iMo

  • Super Contributor
  • ***
  • Posts: 5244
  • Country: bj
..
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?
Readers discretion is advised..
 

Offline jorgemef

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pt
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.

 

Online iMo

  • Super Contributor
  • ***
  • Posts: 5244
  • Country: bj
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..
« Last Edit: March 26, 2024, 08:24:18 pm by iMo »
Readers discretion is advised..
 
The following users thanked this post: jorgemef

Offline jorgemef

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pt
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.

 

Online iMo

  • Super Contributor
  • ***
  • Posts: 5244
  • Country: bj
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?)..
« Last Edit: March 26, 2024, 10:09:46 pm by iMo »
Readers discretion is advised..
 
The following users thanked this post: jorgemef

Offline Andreas

  • Super Contributor
  • ***
  • Posts: 3305
  • Country: de
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
« Last Edit: March 26, 2024, 10:14:41 pm by Andreas »
 
The following users thanked this post: jorgemef

Online Kleinstein

  • Super Contributor
  • ***
  • Posts: 14849
  • Country: de
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.
 
The following users thanked this post: jorgemef

Online iMo

  • Super Contributor
  • ***
  • Posts: 5244
  • Country: bj
..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?
Readers discretion is advised..
 

Offline Andreas

  • Super Contributor
  • ***
  • Posts: 3305
  • Country: de
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

 

Online iMo

  • Super Contributor
  • ***
  • Posts: 5244
  • Country: bj
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..
« Last Edit: March 27, 2024, 12:06:28 am by iMo »
Readers discretion is advised..
 

Offline jorgemef

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pt
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)
 
The following users thanked this post: iMo

Online iMo

  • Super Contributor
  • ***
  • Posts: 5244
  • Country: bj
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..
Readers discretion is advised..
 
The following users thanked this post: jorgemef

Offline jorgemef

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pt
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)
 

Offline Andreas

  • Super Contributor
  • ***
  • Posts: 3305
  • Country: de
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
 

Offline jorgemef

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pt
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.
 

Online iMo

  • Super Contributor
  • ***
  • Posts: 5244
  • Country: bj
Is the ISO7662 happy with switching the relay directly? The max i/o rating is 15mA only..
Readers discretion is advised..
 

Offline jorgemef

  • Regular Contributor
  • *
  • Posts: 137
  • Country: pt
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

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

 

Online iMo

  • Super Contributor
  • ***
  • Posts: 5244
  • Country: bj
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..
« Last Edit: March 27, 2024, 11:09:30 am by iMo »
Readers discretion is advised..
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf