Getting full resolution out of an ADC - Page 1
Forum section: electronics / beginners

author: michaeliv
author_rank: Frequent Contributor
timestamp: September 22, 2015, 11:51:06 pm
content: Hi, I'm trying to read the voltage of a battery with high precision using an Arduino + a 24 bit ADC :http://datasheets.maximintegrated.com/en/ds/MAX11200-MAX11210.pdfThe claimed noise-free resolution is 21 bits at 10sps which means I should get 5 flicker-free decimal digits when using a 2.5V reference.But I'm getting more like 2 noise-free decimal digits.The setup is pretty basic : the ADC is soldered onto a DIP adapter then using a breadboard it's connected to a 3.3v Arduino micro.The battery is an alkaline battery which should be pretty stable ( I've confirmed 4 decimals stability using a 20,000 count multimeter + 40,000 count voltmeter ).The voltage reference is a low-noise 2.5v precision reference :https://datasheets.maximintegrated.com/en/ds/MAX6126.pdfPower is supplied from a USB adapter. There is no load on the battery when measuring the voltage.What is affecting the reading ? I'm guessing having it all on a breadboard ? would moving it to a proto-board bring major improvements ?Will designing a PCB for it make it live up to it's spec ? Does the PCB have to be designed in any special way ?What else needs to be taken into account in order to achieve the full 21 bits @10sps ?Thanks!

author: Bud
author_rank: Super Contributor
timestamp: September 23, 2015, 12:36:35 am
content: Powering such circuit from USB is not a good idea. Eliminate this unknown and use at minimum a linear power supply to start with. USB power is very dirty.

author: codeboy2k
author_rank: Super Contributor
timestamp: September 23, 2015, 02:42:00 pm
content: As Bud says, start with an external linear power supply first to eliminate the USB as the source. The 5V USB is definitely going to be noisy, and might have high ripple and switching transients on it. Use a scope to see if this is true for you. Using a linear PSU to power your ADC and reference, you will want to first get the system working and get your 5 noise-free digits. Then go back to the USB power and see what happens, and what you need to do to clean that up.Also check your decoupling capacitors on AVDD and DVDD. You will need good decoupling, 10uF and 0.1uF at least as a rule of thumb to start with. Further analysis and determining the source of any noise might lead to a few smaller caps needed still.Although I don't think the reference is the source of the noise, at 24 bits you might want to low-pass filter the output of your reference before going into the reference input pin of the ADC. Ideally a buffered filter is required, since the ADC reference input will draw current when taking a measurement, and even 250uA drawn across a 100 ohm resistor can result in 1% error at 2.5V. A simple RC filter can work, but don't make the R too high, or it will cause said voltage drop and error. Perhaps try 10-ohm, 470uF for a 33Hz filter, but you probably need the 3dB point an order of magnitude lower still, around 3 Hz. These RC filters have large time constants, so you might need to wait a minute or two for the reference to settle. Also, you can enable the REF buffer in the ADC to help reduce the current drawn from the reference (which helps reduce the voltage drop due to your RC filter, which might allow you to use a larger R and smaller C again). Ideally, in practice you will want to use an active low-pass filter so you can use smaller C's and get a lower breakpoint.Filtering your reference may not be necessary in your application, so try that as an added step if you're still seeing noise but you've eliminated everything else already.