Why am I getting these (mostly) good readings with the built in ADC of the Arduino Uno (10 bits resolution):

enter image description here

and these scattered values (same analog sensor used) with the external LTC1418 ADC (14 bits resolution of which the last 2 bits were dropped) ?

enter image description here

For what is worth, the sensor is an G-NSDOG1-006 Also I once had this anomalous outcome from the built in ADC:

enter image description here

I am using the external ADC as shown in "Figure 24. Internal Conversion Clock Selected. Data Transferred After Conversion Using an External SCLK." at page 25 of the spreadsheet above. All of the readings were taken at every 0.5 seconds.

The electrical schematic is what they recommend in the same document:

enter image description here

The LTC1418 chip is soldered to a SSOP-to-DIP adapter PCB which is inserted into a solderless breadboard.

My final goal is to stabilize the external ADC unit (the LTC1418 chip)'s output.



In response to @Brian Drummond

Good thinking!

  • For the supposedly stable 3v3 output from the arduino and USB power the jitter stays within 11 units.
  • For the supposedly stable 3v3 output from the arduino and battery power the jitter stays within 6 units.
  • For the GND and USB power the jitter stays within 5 units.
  • For the GND and battery power the jitter stays within 5 units.

migrated from arduino.stackexchange.com May 16 '18 at 11:30

This question came from our site for developers of open-source hardware and software that is compatible with Arduino.

  • \$\begingroup\$ Did you put the capacitors as close to the chip as possible? \$\endgroup\$ – Gerben May 14 '18 at 16:51
  • \$\begingroup\$ @Gerben Yes I did. Although they are THTs on an 100 mil spaced breadboard. And tehre is a bit more copper trace on the SSOP-tto-DIP adapter, hmm... \$\endgroup\$ – kellogs May 14 '18 at 17:54
  • 1
    \$\begingroup\$ Divide and conquer. If you ground the ADC input or wire it to a suitable (and well decoupled) DC voltage, what does the ADC output look like? \$\endgroup\$ – Brian Drummond May 16 '18 at 11:49
  • 2
    \$\begingroup\$ Also. why is there such a big DC offset on the external one? (519 is approximately 512 or 0.5* full scale on 10 bit, 2500 is well above 2048 or half scale on 12 bit. One suspect : wrong or noisy reference voltage on the external? \$\endgroup\$ – Brian Drummond May 16 '18 at 11:55
  • \$\begingroup\$ @BrianDrummond edited the question. As for your second remark, are you talking about V_REF ? That one is connected as shown in the diagram, no mistake there. \$\endgroup\$ – kellogs May 16 '18 at 21:47

I have been using external 16-bit ADCs with Arduino, e.g. LTC1859. You need short leads to the ADC otherwise SPI will get noisy and lead to data corruption. If you are not already doing it, a PCB with routed and shielded traces also helps keep down the analog noise. Use a clean voltage source instead of USB.

According to the data sheet for your sensor, new data are available much faster than you need (10 ms vs. your 500 ms). You can take advantage of this to minimize effects of noise by signal averaging - e.g. moving average, or taking average of blocks of data every 0.5 s.


This could be a grounding problem (noisy SPI) Pay attention to the analog and digital ground leads and avoid sharing the two in a single connection to the Arduino. bringing all the grounds to a point (close the Arduino) is a good place to start.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.