Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MilliVoltmeterDIY - accuracy #11

Open
raspberry007 opened this issue Jan 12, 2019 · 21 comments
Open

MilliVoltmeterDIY - accuracy #11

raspberry007 opened this issue Jan 12, 2019 · 21 comments

Comments

@raspberry007
Copy link

Hello,

I have assembled the MilliVoltmeter, but sadly accuracy is a bit off. When I calibrate it against 2.5V ref, I then measure 5V and 10V voltage standards. On 5V (gives me 5.000001v on the 6 1/2 DMM) I get 4.97V and on 10V I get 9.91V. Any idea why? I have used resistors with 1% tolerance.

On the Scullcom MilliVoltmeter, I do not have this issue. It is very precise and accurate.
What's accuracy on your meter please?

Thanks
Alex

@tardate
Copy link
Owner

tardate commented Jan 13, 2019

hi @alex1sh hmm, you're right. I've updated my notes with some measurements and more. I'm seeing skewed results from the LTC2400 far beyond the expected error rates from the datasheet. I don't yet see why that should be the case .. do you have any suggestions?

@raspberry007
Copy link
Author

Hi Paul. I think the problem is in the input section of your schematic. You are using 1Mohm and 100Kohm resistors for a voltage divider. Say, I applied 10.000 volts to VIN. According to the voltage divider calculation, I am not getting VINx10 (1 volts), but 0.909 volts. I will try to change 1Mohm resistor for 900Kohm one. This is give me exactly 1/10 factor. I have used both resistors with tolerance of 1%, but really they have to be 0.05% tolerance or better and low ppm as this may give you different readings for the same source. Thanks Alex

@tardate
Copy link
Owner

tardate commented Jan 14, 2019

The values of the voltage divider should not be critical @alex1sh .. as long as it is a stable (stiff) fraction R1/(R1+R2), that constant is accommodated in the calibration factor. i.e. when calibrated with the reference voltage (2.5V), the ADC value represents R1/(R1+R2) * 2.5

Boundary case is 0V i.e. VIN=0V, which I'd expect the ADC to report as 0, but I'm seeing ~0x4666 (27mV). I think I'll thrown an LT1019 and LTC2400 on a breadboard again and dive in a bit deeper; right now I'm distrusting the results I'm seeing from the LTC2400!

@tardate
Copy link
Owner

tardate commented Jan 16, 2019

btw @alex1sh I've been doing some investigations (which I'll write-up separately soon). Bottom line - seems I was a bit quick to just slap a voltage-divider directly on the LTC2400 input (it doesn't just act as a high-impedance passive load). The 1MΩ/100kΩ is "not bad", but the LTC2400 is meant to be capable of better, however it looks like I need a more sophisticated front-end to achieve that.

@raspberry007
Copy link
Author

@tardate

Have a look at the attachment. I do not see a problem attaching the voltage divider directly onto the LTC2400 input.

ltc2400

@raspberry007
Copy link
Author

raspberry007 commented Jan 17, 2019

Another interesting point @tardate about DAC is in this video

https://www.youtube.com/watch?v=z5Pnw9Xr2ME&feature=youtu.be
(start from 31:00)

HOWEVER, we should be talking about millivolts. Like 10 millivolts. I have had a much larger error. On calibrated VREF 5V I have had a reading of 4.97V, which is more like 30 millivolts. And on 10V is it enough 90 millivolts. This is why I think 1) Vref voltage has to be measured with 6.5 DMM and inserted into the sketch. Otherwise Vref inaccuracy will be taken into account when calculating voltage. 2) The voltage divider has to be more accurate (like in the scullcom original MillivoltMeter). For simplicity it is better to have 900k and 100k resistors (exactly x10 times) 3) non-linearity of LTC2400 has to be dealt with

What do you think?

@zoomx
Copy link

zoomx commented Jan 18, 2019

Take in account that datasheet says that ADC measures between GND and Vref-(Vref/1024),if vref is 5.000 V (and GND is 0.000 V!) then the range is 0.000-4.995 V

@raspberry007
Copy link
Author

@zoomx There is a voltage divider (100k / 900k - I have replaced 1m resistor with 900k) before LTC2400. This divides voltage by 10. Therefore, 10V becomes 1V etc.

@zoomx
Copy link

zoomx commented Jan 18, 2019

@alex1sh
I forgot that this project uses an LTC2400 and not the Atmega328 ADC!

@tardate
Copy link
Owner

tardate commented Jan 18, 2019

@alex1sh thanks, great video. But I really hope its possible to avoid multi-step calibration!

The demo board schematic certainly seems to imply no problem with a big cap on the input and potentially a voltage divider. But I've been reading p22 "Driving the Input and Reference" very carefully, and it seems to tell another story.

That's what I'm seeing experimentally too. I'm going to push my notes/wip tests when I get a chance so you can see what I have/haven't tested in more detail.

Re:

  1. Vref voltage has to be measured with 6.5 DMM and inserted into the sketch

yes, that could be key. Especially with a relatively low VREF, errors up at 10V etc are magnified.
I've got a 4.096 ref (like scullcom used) but haven't tried it yet to see if it is material

  1. The voltage divider has to be more accurate

with the current calibration approach, actually, I think no. The ratio should not have any impact on the result, as whatever it happens to be, the calibration step captures it. The only issue is that with that one data point, it assume straight-line through a 0 origin; any skew and offset errors of course undermine that assumption.

  1. non-linearity of LTC2400 has to be dealt with

yes! I'm slowly coming to the conclusion that a buffer opamp may be an unavoidable necessity. I really preferred not to do that, because I also wanted true 0 reading without needing a dual-rail power supply (I guess the same reason the precision voltage ref in the vid starts at 50mV;-)

I'l update here when I've pushed my notes and you can take a look (might be later this weekend as I have a few other things to take care of).

@zoomx yes for VREF=2.5V, the extended input range should – 0.3V to 1.125 • VREF (per Note 14, p4), but as @alex1sh says, with the voltage divider all of my/our testing has been well within that range.

@raspberry007
Copy link
Author

raspberry007 commented Jan 20, 2019

@ tardate I think you are correct - using AD820 opam or similar is unavoidable.
Something like this.
image

Unfortunately, I do not have a spare LTC2400 to test on the breadboard. I have a similar millivoltmeter designed by Scullcom with the buffer opamp and it works very-very precisely. FYG, the voltage divider is 0.1% tolerance and low tempco.

I think a small daughter board is required on the input here. This is not a bad thing as this analogue board will be completely isolated from the digital one.

@raspberry007
Copy link
Author

raspberry007 commented Jan 20, 2019

This is an idea for an analogue daughter board:

volt

Works really precisely.

@tardate
Copy link
Owner

tardate commented Jan 23, 2019

hi @alex1sh thanks for the front-end design suggestions. I'd like to try something like that out. (sorry, bit slow on this at the moment as "real work" got in the way;-)

@tardate
Copy link
Owner

tardate commented Jan 27, 2019

@alex1sh I finally got around to pushing some test results and notes - see https://github.com/tardate/LittleArduinoProjects/tree/master/Electronics101/ADC/LTC2400. Current situation: still failing to get decent results even with the most basic configuration. My next step is to try a better op-amp for the buffer. If you can make sense of my notes, I'd appreciate any comments you might have.

Cheers,
Paul

@raspberry007
Copy link
Author

@tardate Excellent notes I must admit. A week ago I have re-read LTC2400 datasheet and soldered 10uF cap to the voltage divider. To my surprise reading especially on the higher end, were completely off. So I cannot see how soldering this cap can help accuracy. Your datasheet findings just confirm it.
In fact I am pretty much in line with your on the datasheet readings re Absolute Maximum Ratings.

I think the only way to achieve a good result is to use a buffered VIN for LTC2400. LMV324 is a general purpose OpAmp. I do not think this would be an appropriate part for this project. What you really need is a good zero-drift rail-to-rail OpAmp. Good example could be OPA388. http://www.ti.com/lit/ds/symlink/opa388.pdf

I managed to find a few on Digi-Key:

https://www.digikey.co.uk/products/en/integrated-circuits-ics/linear-amplifiers-instrumentation-op-amps-buffer-amps/687?FV=284008a%2Cmu0.2%C2%B5V%7C975%2Cmu0.3%C2%B5V%7C975%2Cmu0.4%C2%B5V%7C975%2Cmu0.5%C2%B5V%7C975%2Cmu0.6%C2%B5V%7C975%2Cmu0.7%C2%B5V%7C975%2Cmu0.8%C2%B5V%7C975%2Cmu1%C2%B5V%7C975%2Cii1%7C2094%2Cffe002af&quantity=0&ColumnSort=975&page=1&stock=1&pageSize=500

The one chosen by Scullcom is a good one - AD8628ARZ. From its datasheet:
The AD8628/AD8629/AD8630 are single-supply, ultrahigh precision rail-to-rail input and output operational amplifiers. The typical offset voltage of less than 1 µV allows these amplifiers to be easily configured for high gains without risk of excessive output voltage errors. The extremely small temperature drift of 2 nV/°C ensures a minimum offset voltage error over their entire temperature range of −40°C to +125°C, making these amplifiers ideal for a variety of sensitive measurement applications in harsh operating environments.

@raspberry007
Copy link
Author

raspberry007 commented Jan 28, 2019

I am going to order OPA2388IDGKT now:

The OPAx388 (OPA388, OPA2388, and OPA4388) series of precision operational amplifiers are ultra-low noise, fast-settling, zero-drift, zero-crossover devices that provide rail-to-rail input and output operation. These features and excellent ac performance, combined with only 0.25 µV of offset and 0.005 µV/°C of drift over temperature, makes the OPAx388 ideal for driving high-precision, analog-to-digital converters (ADCs) or buffering the output of high-resolution, digital-to-analog converters (DACs). This design results in superior performance when driving analogto-digital converters (ADCs) without
degradation of linearity

@tardate
Copy link
Owner

tardate commented Jan 29, 2019

@alex1sh yup, I'm hoping to see some big improvement with a precision op-amp. I've got some AD8628 on order, so we should be able to compare notes;-)

@raspberry007
Copy link
Author

raspberry007 commented Feb 7, 2019

Hi Paul,

I have tried using OPA388.
Sadly, I cannot see beter performance - on 10.000000V reference I get 9.956889. I’m using precise resistors (0.1%) on the voltage divider.

What I did notice is that voltage is not stable down to a third or forth digit. I have not modified software.

Cheers
Alex

@tardate
Copy link
Owner

tardate commented Feb 8, 2019

@alex1sh I just received some precision op-amps incl AD8628 and OPA2388 and should get a chance to do some test over the weekend. I hope I can get some better results!

@tardate
Copy link
Owner

tardate commented Feb 15, 2019

fyi @alex1sh , added some more results for a test with a bunch of OPA2388 buffers, and starting to get some more decent results

adding lots of bypass caps and using a stable dedicated power supply, I'm finally getting readings that are stable within 0.06%, and accurate down to the 4th digit (sub mA).

There are more tests I want to do, and I haven't tested accuracy over the full voltage range yet. But I'm finally a little encouraged. I think the next I'll try is compare precision and stability with a 4.096V reference (as used in the scullcom design - I finally have an ADR4540 to test with)

@raspberry007
Copy link
Author

@tardate

Hi Paul,

Interesting observations.
As we are trying to extract everything down to 6th digit, I think there may be a problem using a breadboard. The breadboard is just one big capacitor and I saw voltage varying on my bench DMM as I was changing configuration on the breadboard (same schematic). Did you try to solder parts together on a simple PCB? This should improve results. Re Vref - my latest research into this showing that a decent LT399 (10V, but can do 5V with INA105) or LTC6655-4.096 would be required for a low drift. Ground is extremely important on the analogue side.
I have not used bypass caps in my last tests and yes you are correct after a little tinkering I can confirm it improves the final result, i.e. gives more "clean" power supply.

I have got a new bench power supply Elektro-Automatik. It does have a very low ripple - I'll run tests once again when it arrives if I have time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants