RPi Pico B.Tech/Diploma Intermediate

ADS1115 16-Bit ADC Module with Raspberry Pi Pico

Interfacing ADS1115 16 Bit ADC Analog-to-Digital Converter Module with Raspberry Pi Pico using MicroPython Code & measure Voltage & ADC value

  • Suitable forB.Tech/Diploma RPi Pico students
  • Build time1-2 weeks
  • LevelIntermediate
  • Available atAjvika Labs, Kakinada

About this project

Overview
In this comprehensive guide, we will explore the process of integrating an ADS1115 16-bit ADC module with the Raspberry Pi Pico, a versatile microcontroller board developed by the Raspberry Pi Foundation. The ADS1115 breakout board is a high-resolution analog-to-digital converter (ADC) that can be used in conjunction with microcontrollers such as Arduino, ESP8266/32, STM32, and of course, the Raspberry Pi Pico.
The Raspberry Pi Pico, powered by the RP2040 microcontroller, offers a built-in
12-bit ADC
with a maximum resolution of 3.3V / 4096 = 0.0008V (800uV). While this is an improvement over the Arduino’s 10-bit ADC, it may still be insufficient for projects requiring more precise analog readings. By incorporating the ADS1115 module, which boasts a 16-bit ADC resolution, Pico’s ADC capabilities can be significantly enhanced. With the ADS1115, the smallest voltage that can be measured is 5V / 65536 = 0.000076V (76uV), providing higher precision for your projects. If you want more precison up to 0.3uV, you may check
ADS1220 24-Bit ADC
Module.
In the following sections, we will discuss the specifications and benefits of the ADS1115 module, outline the required components and connections for integrating it with the Raspberry Pi Pico, and provide a sample MicroPython code to help you get started with this powerful ADC upgrade.
Bill of Materials
To thoroughly understand the ADS1115 ADC Module when used with Raspberry Pi Pico, we require the following components:
S.N.
Components
Quantity
Purchase Link

Raspberry Pi Pico

Amazon
AliExpress

ADS1115 ADC Module

Amazon
AliExpress

10K Potentiometer

Amazon
AliExpress

Breadboard

Amazon
AliExpress

Connecting Wires

Amazon
AliExpress
ADS1115 Chip
The ADS1115 is a precision, low-power, 16-bit, I2Ccompatible, analog-to-digital converter IC.
Features of ADS1115
16-bit Resolution
Four (4) Channel Single-Ended or Two (2) Channel Differential Inputs
I

C Protocol Interface
Programmable Comparator
Wide Supply Range
Low Current Consumption
Continuous-Conversion Mode
Programmable Data Rate
Programmable Comparator
Single-Cycle Settling
Internal Low-Drift Voltage Reference
Internal Oscillator
Wide Operating Temperature Range
Available in Ultra-Small X2QFN Package
ADS1115 Pin Configuration
The below image shows the pin configuration of the ADS1115 chip.
Pin 1 is the ADDR pin that selects the I2C address for the chip.
Pin 2 is the Alert/Ready pin which serves as a data ready and alert signal.
Pin 3 is the GND terminal.
Pins 4, 5, 6 & 7 are the four (4) ADC input pins. We can use these pins as either four (4) single-ended inputs or two (2) differential inputs.
Pin 8 is the positive power supply pin which accepts 2.0 V to 5.5 V
Pins 9 and 10 are the terminals for the I2C interface, SDA and SCL respectively.
ADS1115 Functional Block Diagram
The below is the functional diagram for the ADS1115 Chip.
Initially a multiplexer selects the input signal. Then, the selected signal feeds into a Programmable Gain amplifier (PGA). The PGA can be programmed to provide amplification of small signals prior to conversion.
Subsequently, the input is converted by a 16-bit Delta Sigma converter. The converter uses its own built-in voltage reference and built-in oscillator in measuring the input signal. Finally, the result of the conversion goes into the I2C interface. Also, a comparator provides a signal to the external interface that the result is ready for fetching.
Typical Connections of the ADS1115
The principle I2C connections for the ADS1115 is shown in the image below.
The ADS1115 interfaces directly to standard mode, fast mode, and high-speed mode I2C controllers. Any microcontroller I2C peripheral, including master-only and single-master I2C peripherals, operates with the ADS1115.
For more information refer to
ADS1115 Datasheet
ADS1115 Module or Breakout Board
The ADS1115 comes with X2QFN & VSSOP package which can’t be used for prototyping. Therefore we need the ADS1115 Module or Breakout Board to use it with Raspberry Pi Pico or Any other Microcontroller.
These modules are widely available from different manufacturers and are very inexpensive. They are breadboard friendly and can be easily used in prototyping and testing applications.
ADS1115 Module Pinout
The ADS1115 Module has a total number of 10 Pins.
Pin. No.
Pin Name
Pin Description

VDD
Power supply: 2.0V to 5.5V

GND
Ground

SCL
Serial clock input: Clocks data on SDA (used for I2C communication)

SDA
Serial data: Transmits and receives data (used for I2C communication)

ADDR
I2C address select (slave)

ALERT/RDY
Digital comparator output or conversion ready

AIN0
Differential channel 1: Single-ended channel 1 input or Negative input

AIN1
Differential channel 1: Single-ended channel 2 input or Negative input

AIN2
Differential channel 2: Single-ended channel 3 input or Positive input

AIN3
Differential channel 2: Single-ended channel 4 input or Negative input
ADS1115 Module Schematic
The schematic diagram shown above is Adafruit’s version of the ADS1115 module.
It follows the typical connection for the ADS1115 chip. The 10K ohms pull-up resistors are installed on the I2C and Alert pins. Also, there is a 1uF capacitor installed between the VDD pin and the GND which serves as a decoupling capacitor.
How to use ADS1115 Module with Raspberry Pi Pico
Interfacing an ADS1115 module with a Raspberry Pi Pico is straightforward, as both devices use the I2C communication protocol. In this tutorial, we will guide you through the steps to connect and configure the ADS1115 with the Raspberry Pi Pico.
Connect the VCC pin of the ADS1115 to the 3.3V pin (Pin 36) of the Raspberry Pi Pico.
Connect the GND pin of the ADS1115 to any GND pin on the Raspberry Pi Pico (e.g., Pin 38).
Connect the SDA pin of the ADS1115 to the SDA (GP14, Pin 19) pin of the Raspberry Pi Pico.
Connect the SCL pin of the ADS1115 to the SCL (GP15, Pin 20) pin of the Raspberry Pi Pico.
You may connect the A0, A1, A2, and A3 pins of the ADS1115 to the sensors or devices whose analog values you want to read. In this example, we will use a 10K Potentiometer.
MicroPython Code/Program
Now let us write a MicroPython Code to read ADC Value from ADS1115 connected to Raspberry Pi Pico.
The code doesn’t require any libraries. Hence you can copy the following code and paste it to the Thonny Editor. Save the file with name main.py.

import
utime
from
machine
import
I2C
Pin
dev
=
I2C
(

freq
=
400000
scl
=
Pin
(

)
sda
=
Pin
(

)
)
devices
=
dev
scan
(
)
for
device
in
devices
:
(
device
)
address
=

def
read_config
(
)
:
dev
writeto
(
address
bytearray
(
[

]
)
)
result
=
dev
readfrom
(
address

)
return
result
[

]
<<

result
[

]
def
read_value
(
)
:
dev
writeto
(
address
bytearray
(
[

]
)
)
result
=
dev
readfrom
(
address

)
config
=
read_config
(
)
config
&=
~
(

<<

)
&
~
(

<<

)
config
|=
(

<<

)
(

<<

)
(

<<

)
config
=
[
int
(
config
>>
i
&
0xff
)
for
i
in
(

)
]
dev
writeto
(
address
bytearray
(
[

]
+
config
)
)
return
result
[

]
<<

result
[

]
def
val_to_voltage
(
val
max_val
=
26100
voltage_ref
=
3.3
)
:
return
val
/
max_val *
voltage_ref
(
bin
(
read_config
(
)
)
)
while
True
:
val
=
read_value
(
)
voltage
=
val_to_voltage
(
val
)
(
"ADC Value:"
val
"Voltage: {:.3f} V"
format
(
voltage
)
)
utime
sleep
(
0.5
)
Code Explanation

import
utime
from
machine
import
I2C
Pin
These lines import the
utime
I2C
, and
Pin
modules.

dev
=
I2C
(

freq
=
400000
scl
=
Pin
(

)
sda
=
Pin
(

)
)
This line initializes the
dev
variable as an instance of the
I2C
class, which is used to communicate with I2C devices. It is initialized with the parameters:

as the bus number,
400000
as the communication frequency,
Pi

Technologies used

ESP8266ArduinoRaspberry PiSTM32BLEPythonI2CADCMicroPython

Hardware components

  • ESP8266
  • Arduino
  • Raspberry Pi
  • STM32

Software & tools

  • Thonny
  • MicroPython

What you get

  • Working project / hardware kit, tested before delivery
  • Complete source code with explanation
  • Project demo and guidance for your viva
  • Project report, PPT and IEEE paper support (on request)
Delivery & Payment
Delivery takes a minimum of two weeks from the date your inquiry is confirmed. Payment is in two parts: • 50% advance to start the project • Remaining 50% before delivery Note: • Documentation and PPT are not included by default • If you need documentation/PPT, it can be arranged for extra time and cost We'll confirm the exact timeline and cost with you after reviewing your requirements.