Suggested ADC component


Well-known member

I'm looking to expand my analog read pins by using and external ADC chip. Main requirements are

  • 8 analog inputs
  • I2C, SPI, or even analogRead for the communication to the MCU
  • minimum of 12 bit resolution
  • must have Teensy library support
  • single or differential inputs
  • need at least 5000 reads per second

I saw a post with the ads7828e. I bough 5 for $5 on Amazon and none of them worked--but at that price, I'm not surprised.

Anyone have good success can can suggest a chip?

I have used the Linear Technology LTC1867L in several projects over the last decade.


The LTC®1863L/LTC1867L are pin compatible, 8-channel 12-/16-bit A/D converters with serial I/O and an internal reference.
The 8-channel input multiplexer can be configured for either single-ended or differential inputs and unipolar or bipolar conversions (or combinations thereof). The ADCs convert 0V to 2.5V unipolar inputs or ±1.25V bipolar inputs. The ADCs typically draw only 750μA from a single 2.7V supply. The automatic nap and sleep modes benefit power sensitive applications.
The LTC1867L’s DC performance is outstanding with a ±3LSB INL specification and 16-bit no missing codes over temperature.
This chip has been around since about 2005, but is still in stock at Digi-Key for about $20 at quantity 25.

The LTC1867 runs off 5V, but its inputs are 3.3V compatible. You need to have a level converter between the SDO output and the Teensy. I often used one of the single-channel 5V-tolerant SOT-23-5 buffers for that. The advantage of the LT1867 is the it accepts inputs over the 0 to 4.096V range. The LTC1867 is also more widely available through distributors. It's still about $20. I usually avoid the low-priced ADC chips from overseas sources. I think you have to accept that a good onboard reference and good linearity and noise figures just don't appear in the $5 range for 12 or 16-bit converters.

If this chip looks interesting, I can probably convert my test code into a library fairly quickly.
Have a look here. Isn't google great.
The code at that link isn't quite a Teensy-compatible library. It does show how to use the hardware to collect analog data. With a wrapper to handle the Teensy SPI transactions, it might save a lot of work. A complete library should have an LT1867L object and encapsulate things like the selected chip select pin, SPI clock speed, etc. A T4.1 library should also let you use SPI1. To those basic functions, it would be nice to select multiple channels to be sampled in response to a single timer interrupt. The library should also take advantage of the T4.x SPI libraries to allow such niceties as 16-bit transfers, interrupts, and DMA background collection.