ADS1115 ADC checkout – #1

I have application for an analogue to digital converter (ADC) in a noisy environment, so a possible solution is to place an ADC module very close to the analogue sensors and use some form of digital connection back to a microcontroller. A possible protocol is I2C, and has the advantage that several ADC modules can be attached to the same bus, along with other peripherals Eg LCD.

ads1115-00The above ADS1115 modules have four input channels, 16 bit conversion, flexible input mux, and were available on eBay for less than A$4, so worth a try.

A quick search reveals Adafruit sell something similar and have published an Arduino library for the devices.

Next step is to test one of the examples, straight from the repo. So, the repo was cloned to my Arduino library folder and the single ended example copied to a source folder and compiled and loaded.

ads1115-01Above is the test framework, an Arduino Pro 16MHz 5V board with FTDI adapter for programming and IO, to the left a 5V/3V converter, and to the left the ADS1115 module on 3.3V (it can run on 5V, but I wanted to test it on 3.3V). Ain1P is grounded, the other inputs left floating.

screenshot-27_10_16-10_11_19Above is a capture of the I2C commands to set the config register to read Ain1P against ground.

screenshot-27_10_16-10_08_42

A few ms later, the read of the ADC register for Ain1P, and there it is, data is 0x00.

ads1115-03

Above is the breadboard with added I2C LCD, a 10k/3950 thermistor with 22k series resistor from 3V and code to sample, average 10 samples, calculate and display temperature on the LCD (and logged to the serial port).


Above is the prototype code.

screenshot-29_10_16-17_58_49

Above is a I2C bus trace of 10 measurements then the LCD output.