TI ADS1219 ADC driver

Discuss development of drivers for external hardware and components, such as LCD screens, sensors, motor drivers, etc.
Target audience: Users and developers of drivers.
Post Reply
User avatar
Mike Teachman
Posts: 155
Joined: Mon Jun 13, 2016 3:19 pm
Location: Victoria, BC, Canada

TI ADS1219 ADC driver

Post by Mike Teachman » Sat Mar 02, 2019 12:57 am

If you need a 24-bit ADC here is a driver for the Texas Instruments ADS1219

https://github.com/miketeachman/micropython-ads1219

All device functions are supported in this driver. Tested with uPy v1.10 running on ESP32 port.

datasheet:
http://www.ti.com/lit/ds/symlink/ads1219.pdf

User avatar
rcolistete
Posts: 352
Joined: Thu Dec 31, 2015 3:12 pm
Location: Brazil
Contact:

Re: TI ADS1219 ADC driver

Post by rcolistete » Sun Mar 03, 2019 10:21 am

This new 24 bits ADC seems to be very good, thanks for the MicroPython driver.

Do you have any suggestion of breakout board with ADS1219, besides this one (very expensive) at AliExpress ?
My "MicroPython Samples". My "MicroPython Firmwares" with many options (double precision, ulab, etc).

User avatar
Mike Teachman
Posts: 155
Joined: Mon Jun 13, 2016 3:19 pm
Location: Victoria, BC, Canada

Re: TI ADS1219 ADC driver

Post by Mike Teachman » Sun Mar 03, 2019 8:34 pm

At this time there is no low-cost breakout board available for this device. It is possible to make your own - I added a section to the github repo listing the parts I used.

https://github.com/miketeachman/micropy ... kout-board

ads1219-breakout.jpg
ads1219-breakout.jpg (20.38 KiB) Viewed 6518 times

User avatar
rcolistete
Posts: 352
Joined: Thu Dec 31, 2015 3:12 pm
Location: Brazil
Contact:

Re: TI ADS1219 ADC driver

Post by rcolistete » Sun Mar 03, 2019 10:58 pm

Thanks very much.
My "MicroPython Samples". My "MicroPython Firmwares" with many options (double precision, ulab, etc).

OutoftheBOTS_
Posts: 847
Joined: Mon Nov 20, 2017 10:18 am

Re: TI ADS1219 ADC driver

Post by OutoftheBOTS_ » Mon Mar 04, 2019 3:13 am

A noob question here.

If it is a 24bit ADC and your Vref is 3.3v then the sensitivity it has to read is 3.3v/(2**24) = 0.00000019669532775878905 volts

What sort of hardware would be needed to decouple and isolate the ADC so that such fine voltages are not just inducted from the air??

I have used the ads1115 with the RPi many times and have had others ask this question even though it is only a 16bit ADC

loboris
Posts: 344
Joined: Fri Oct 02, 2015 6:19 pm

Re: TI ADS1219 ADC driver

Post by loboris » Mon Mar 04, 2019 7:26 am

OutoftheBOTS_ wrote:
Mon Mar 04, 2019 3:13 am
A noob question here.

If it is a 24bit ADC and your Vref is 3.3v then the sensitivity it has to read is 3.3v/(2**24) = 0.00000019669532775878905 volts

What sort of hardware would be needed to decouple and isolate the ADC so that such fine voltages are not just inducted from the air??

I have used the ads1115 with the RPi many times and have had others ask this question even though it is only a 16bit ADC
You can hardly achieve 24-bit resoulution. ADS1219 is a delta-sigma ADC, and the actual (effective) resolution depends on voltage reference, the sample time and the overall circut design. See the section 7.1 in the datasheet for more details.
ADS1219 has an internal voltage reference of 2.048V. If the external reference is used, it must be a special voltage reference chip. Using power supply 3.3V as refference you will hardly get more than 12-bit resolution.
With a simple breakout board you will never get a good results. The ADC board must be very carefully designd, with good grounding and shielding. Reading the datasheet several times and studying some refference design is a must if you want to use this chip.

User avatar
Mike Teachman
Posts: 155
Joined: Mon Jun 13, 2016 3:19 pm
Location: Victoria, BC, Canada

Re: TI ADS1219 ADC driver

Post by Mike Teachman » Tue Mar 05, 2019 6:11 am

OutoftheBOTS_ wrote:
Mon Mar 04, 2019 3:13 am
If it is a 24bit ADC and your Vref is 3.3v then the sensitivity it has to read is 3.3v/(2**24) = 0.00000019669532775878905 volts

What sort of hardware would be needed to decouple and isolate the ADC so that such fine voltages are not just inducted from the air??
For this ADC the useful resolution is much less than 24-bits: it is 17.6 bits, not 24-bits as the first page of the TI datasheet suggests. (often I find that the first page of a datasheet is 1/2 marketing and 1/2 engineering specification). The 24-bit resolution is true in that the full scale of the device is divided into 2^24 steps, but due to noise in the device, the noise-free resolution ("flicker free") is only 17.6 bits in the best case. Also, if the device is used single-ended, another bit can be subtracted. For example, assume that the signal range matches the internal 2.048V reference - then, there are 16.6 noise-free bits to cover the voltage range 0 to 2.048V.

For the topic of hardware design I like this article:
https://www.analog.com/en/analog-dialog ... unded.html
I have used the ads1115 with the RPi many times and have had others ask this question even though it is only a 16bit ADC
Looking at the spec for this 16-bit ADC shows that the noise-free resolution is 16 bits at the majority of gain and SPS combinations. Again, subtract a bit for a single-ended system, leaves 15 bits.
Interesting ... the 24-bit ADS1219 ADC has only 1.6 bits more noise-free resolution than the 16-bit ADS1115 ADC

Why use the ADS1219? For my application, there are some features that make it better than the ADS1115
-- built-in input buffers to deal with high-impedance sensor outputs
-- a bit better noise-free resolution
-- separate analog and digital inputs for power and ground
-- option to use a high precision external reference (I likely won't need this though)
-- input channel configuration to calibrate the offset
Last edited by Mike Teachman on Tue Mar 05, 2019 6:19 am, edited 1 time in total.

User avatar
Mike Teachman
Posts: 155
Joined: Mon Jun 13, 2016 3:19 pm
Location: Victoria, BC, Canada

Re: TI ADS1219 ADC driver

Post by Mike Teachman » Tue Mar 05, 2019 6:18 am

loboris wrote:
Mon Mar 04, 2019 7:26 am
You can hardly achieve 24-bit resoulution. ADS1219 is a delta-sigma ADC, and the actual (effective) resolution depends on voltage reference, the sample time and the overall circut design. See the section 7.1 in the datasheet for more details.
ADS1219 has an internal voltage reference of 2.048V. If the external reference is used, it must be a special voltage reference chip. Using power supply 3.3V as refference you will hardly get more than 12-bit resolution.
With a simple breakout board you will never get a good results. The ADC board must be very carefully designd, with good grounding and shielding. Reading the datasheet several times and studying some refference design is a must if you want to use this chip.
I'm a bit more optimistic on the ability to get acceptable performance using a breakout board. I'm using this ADC in an air quality sensor project, documented on Hackaday:
https://hackaday.io/project/162059-street-sense

My first prototype will use a breakout board for the ADC + soldered veroboard (Adafruit Perma-proto) construction.
Separate LDO voltage regulator for the analog supply. Internal 2.048 reference.

The 2nd prototype will be built on a custom PCB using best practices for laying out a mixed signal board.

I'll try to remember to report back here on what performance is possible. If you are curious how this turns out, I think you can subscribe to the Hackaday project listed above. I update the project logs every couple of weeks.

OutoftheBOTS_
Posts: 847
Joined: Mon Nov 20, 2017 10:18 am

Re: TI ADS1219 ADC driver

Post by OutoftheBOTS_ » Wed Mar 06, 2019 10:07 am

I always learn so much by following these convos

Post Reply