How to use ADS1115 ADC module with Arduino

As we know
that Arduino contains ADC channels of 10-bit resolution. But if we require the
measurement to be done with higher resolution then we can opt for the ADS1115
module. It contains 16 bit ADC with 4 channels and communicates with I2C
protocol.  Out of 16 bits, 15 bits are
used for the measurement and the 16th bit is for the polarity. So we
can measure the negative values from this also.

Setting the gain

In this, we can set various resolution as per level of our input signal. we just have to use below code to st the resolution. 

Gain select command                            Gain                 Voltage Range             Resolution

                                                                                                                 ADS1015         ADS1115

   ads.setGain(GAIN_TWOTHIRDS);      //  2/3x gain +/- 6.144V     1 bit = 3mV        0.1875mV

   ads.setGain(GAIN_ONE);                     // 1x gain   +/- 4.096V       1 bit = 2mV        0.125mV

   ads.setGain(GAIN_TWO);                    // 2x gain   +/- 2.048V       1 bit = 1mV        0.0625mV

   ads.setGain(GAIN_FOUR);                   // 4x gain   +/- 1.024V      1 bit = 0.5mV      0.03125mV

   ads.setGain(GAIN_EIGHT);                  // 8x gain   +/- 0.512V      1 bit = 0.25mV    0.015625mV

   ads.setGain(GAIN_SIXTEEN);             // 16x gain  +/- 0.256V     1 bit = 0.125mV  0.0078125mV

The default gai is the 2/3x gain.


(adsbygoogle = window.adsbygoogle || []).push({});

Image

The module
looks like the below image. 

The code is
very simple and uses the Adafruit ADS1115 library which can be downloaded from
this link- https://github.com/adafruit/Adafruit_ADS1X15 

 


(adsbygoogle = window.adsbygoogle || []).push({});

Connections

The
connections are very simple and are made through the pins available on board.

 

 

But to get
the data we just need to connect the below connections

Vdd:- To the
device supply

GND:- Device
ground

SCL:- SCL
pin of Arduino

SDA:- SDA
pin of Arduino

ADDR:- This
pin defines the address for the device for I2C communication. And if we are
using only one chip then just connect this to ground. Different addresses for
different connections are shown below as

 

 A0 to A3:-
To analog input lines 


(adsbygoogle = window.adsbygoogle || []).push({});

Circuit Connections

The sample
connections are shown below.

 

 

Example Code

Below is the
example code

 

#include
<Wire.h>

#include
<Adafruit_ADS1015.h>

 //
Adafruit_ADS1115 ads;  /* Use this for
the 16-bit version */

Adafruit_ADS1015
ads;     /* Use thi for the 12-bit
version */

 void
setup(void)

{

  Serial.begin(9600);

  Serial.println(“Hello!”);

  Serial.println(“Getting single-ended
readings from AIN0..3”);

  Serial.println(“ADC Range: +/- 6.144V (1
bit = 3mV/ADS1015, 0.1875mV/ADS1115)”);

  // The ADC input range (or gain) can be
changed via the following

  // functions, but be careful never to exceed
VDD +0.3V max, or to

  // exceed the upper and lower limits if you
adjust the input range!

  // Setting these values incorrectly may
destroy your ADC!

  //                                                               
ADS1015  ADS1115

  //                                                               
——-  ——-

  // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)

  // ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V 
1 bit = 2mV      0.125mV

  // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V 
1 bit = 1mV      0.0625mV

  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V 
1 bit = 0.5mV    0.03125mV

  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V 
1 bit = 0.25mV   0.015625mV

  // ads.setGain(GAIN_SIXTEEN);    // 16x gain 
+/- 0.256V  1 bit = 0.125mV  0.0078125mV

   ads.begin();

}

 void
loop(void)

{

  int16_t adc0, adc1, adc2, adc3; 

  adc0 = ads.readADC_SingleEnded(0);

  adc1 = ads.readADC_SingleEnded(1);

  adc2 = ads.readADC_SingleEnded(2);

  adc3 = ads.readADC_SingleEnded(3);

  Serial.print(“AIN0: “); Serial.println(adc0);

  Serial.print(“AIN1: “);
Serial.println(adc1);

  Serial.print(“AIN2: “);
Serial.println(adc2);

  Serial.print(“AIN3: “);
Serial.println(adc3);

  Serial.println(” “);

  delay(1000);

}

 The datasheet for this can be downloaded from this link

http://www.ti.com/lit/gpn/ads1115

Try the
module and comment your observations below. 

Aniruddh Sharma

Ani-Lab

 


(adsbygoogle = window.adsbygoogle || []).push({});

About The Author

Aniruddh Kumar Sharma
Aniruddh Kumar Sharma

I am an electronics enthusiast.

Articles: 243

Leave a Reply

Your email address will not be published. Required fields are marked *