Topics/Sensors/ADS1115 16-Bit ADC I2C Module
I2CANALOGbeginner

ADS1115 16-Bit ADC I2C Module

Four analog inputs on two wires, with a real 16-bit converter and its own reference — the part you reach for when analogRead is not good enough. Which range to pick, why the supply is the real ceiling, and the two addresses this board can take.

ADS1115 16-Bit ADC I2C Module, 3-Pack
ADS1115 16-Bit ADC I2C Module, 6-Pack

Specifications

In the 3-pack3 ADS1115 modules, headers fitted
In the 6-pack6 ADS1115 modules, headers fitted
ConverterTexas Instruments ADS1115IDGSR, 16-bit delta-sigma, with an internal reference and oscillator. VSSOP-10 package
Inputs4 single-ended, or 2 differential pairs, or 3 measured against A3 as a common point. One converter behind a multiplexer
Supply2.0 V to 5.5 V per the datasheet; the board prints 3 V to 5 V. About 150 µA converting continuously, 0.5 µA between single-shot conversions
Input rangeSix full-scale ranges from ±6.144 V to ±0.256 V, giving 187.5 µV to 7.8125 µV per count. An analog input must still stay between ground and the supply
Resolution16 bits across ±FSR. A single-ended reading against ground uses the positive half only, so it returns 0 to 32767
Data rate8, 16, 32, 64, 128, 250, 475 or 860 samples per second. Conversions settle in one cycle, so the conversion time is 1 / rate
NoiseOne count peak-to-peak up to 128 SPS in every range, rising to about 14 bits noise-free at 860 SPS in the narrowest range
Addresses0x48 as shipped, 0x49 with the ADDR solder pad bridged — so 2 modules per I²C bus. TI's other two addresses need the board's 10 kΩ pull-down on ADDR removed first
On-board parts10 kΩ pull-ups on SCL, SDA and ALERT; a 10 kΩ pull-down on ADDR; two 600 Ω ferrite beads isolating the chip's supply and ground; 10 µF and 100 nF decoupling; a power LED
ALERT pinOpen drain, pulled up on the board. A threshold comparator with hysteresis, a window comparator, or an 8 µs pulse at the end of every conversion
PinsVCC, GND, SCL, SDA, ADDR, ALERT, A0, A1, A2, A3 in that order, 2.54 mm pitch, headers fitted. Board 17.2 × 27.9 mm

What it does

A microcontroller's analog input divides its whole range into steps, and the step never gets smaller when your signal does. An ESP32 divides about 3.1 V into 4096 of them, which is fine for a knob and useless for a thermocouple.

The ADS1115 moves its range down to fit the signal instead. Six ranges from ±6.144 V to ±0.256 V, sixteen bits spent inside whichever one you choose, and its own voltage reference and oscillator three millimetres from the inputs rather than on a die shared with a Wi-Fi radio.

It costs two GPIO pins that the I²C bus was probably already using, and a few milliseconds per reading. It is a precision part, not a fast one — 860 conversions a second at the very top.

The ADS1115 module at an angle: a black board with gold-plated edge and pads, ten labelled holes down one long edge reading VCC, GND, SCL, SDA, ADDR, ALERT, A0, A1, A2 and A3, a ten-pin surface-mount chip near the lower end, a two-pad solder jumper marked ADDR, and ADS1115 printed in gold on the soldermask.
17.2 × 27.9 mm, headers fitted. The four analog inputs are at the far end from the supply pins.

The two boxes

Both boxes hold the same board — the 3-pack and the 6-pack differ only in how many. The converter is a genuine Texas Instruments ADS1115IDGSR, and the board adds what a bare chip on a breadboard does not have: pull-ups on the bus, a pull-down that fixes the address, two ferrite beads isolating the chip's supply and ground from the wires running back to your microcontroller, and three decoupling capacitors.

The underside of the ADS1115 module: a black board with the ten pin names printed in white down the right edge, VCC marked (3V - 5V), and a gold panel in the middle reading ADS1115, 4-CH 16-BIT I2C ADC, ANALOG TO DIGITAL, with Lonely Binary down the left side.
The back repeats all ten pin names, so the board can be read whichever way up it lands.

Which range for which signal

Your signal reachesRangeOne count
up to 3.3 V, board on 3.3 V±4.096 V125 µV
up to 5 V, board on 5 V±6.144 V187.5 µV
up to 2 V±2.048 V62.5 µV
up to 1 V±1.024 V31.25 µV
a few hundred millivolts±0.512 V15.625 µV
tens of millivolts±0.256 V7.8125 µV

Anything above your supply is not a range question. It needs two resistors in front of the pin, and measuring a 12 V battery works one through start to finish.

Wiring, in four lines

  1. VCC to 3.3 V — or 5 V, but only if your microcontroller is a 5 V board.
  2. GND to ground, and to the ground of whatever you are measuring.
  3. SDA and SCL to the microcontroller's I²C pins.
  4. Then the signal to A0, with its return on GND or on A1.

Leave ADDR and ALERT unconnected. Both already have a resistor holding them where they need to be, and a wire in either hole at the start can only make things worse.

A scan should find the board at 0x48. That single line of output proves the supply, the ground and both bus wires at once.

Where to start

The handbook below is eleven short articles with a working figure in each. If you read one, read the gain is a range, not an amplifier — it is the difference between a good reading and a damaged chip. If your readings are already wrong, when the reading is wrong sorts the four common faults by the shape they make on a plot.

When it doesn’t work

Can it measure 6.144 V if I select the ±6.144 V range?
No, and this is the mistake that costs people chips. The range setting decides what one count is worth, and nothing else. The voltage a pin may actually see is the supply — TI's absolute maximum is 0.3 V above VDD, past which the protection diodes conduct and the part can be permanently damaged. On a 3.3 V board the ±6.144 V range simply throws away half its codes. Anything bigger than your supply needs a two-resistor divider in front of it.
Is it really 16 bits?
Across a differential measurement, yes. Against ground, no: the chip always converts a difference and always returns a signed number, and these inputs cannot go below ground — so the negative half of the scale is unreachable and a single-ended reading runs 0 to 32767. Fifteen bits and a sign bit that is always zero. The step size is unchanged; it is the span that halves.
How many of these can I put on one bus?
Two. The board fits a 10 kΩ pull-down on ADDR, which is what makes it answer at 0x48 out of the box, and bridging the solder pad ties ADDR to VCC for 0x49. TI's other two addresses need ADDR wired to SDA or SCL, and that pull-down would then hold the bus line at half the supply — neither a high nor a low. Removing the resistor opens them up; short of that, use the microcontroller's second I²C bus for boards three and four.
Why are my readings noisy?
Check the data rate first. Up to 128 samples per second the noise is one count in every range, which is as quiet as the chip's own resolution. At 860 SPS it is several counts, and in the narrowest range under fourteen bits are real. Drop to 8 or 16 SPS for anything that does not move fast, and average in the sketch if you need both speed and quiet.
Do I need pull-up resistors on the bus?
Not for one or two of these — each board brings a 10 kΩ on SDA and on SCL. Two boards make 5 kΩ, which is still comfortable. A crowded bus with several other modules all contributing their own pull-ups can end up pulled harder than devices can drive against, which is worth measuring if a busy bus starts misbehaving.
Can I power it from 5 V and use it with an ESP32?
Not directly. The pull-ups go to VCC, so a 5 V module puts 5 V on SDA and SCL when the bus is idle, and a 3.3 V microcontroller should not have that on its pins. Either run the module from 3.3 V and divide your signal down, or put a level converter in the bus. The first is almost always the better answer.
My unused inputs read random numbers.
That is correct behaviour. Nothing on this board holds A0 to A3 anywhere — no pull-up, no pull-down — so an unwired input floats and picks up the mains field in the room. It does not affect the channels you are using. Tie unused inputs to GND if the numbers bother you.
Which library should I use?
ADS1X15 by Rob Tillaart, from the Arduino Library Manager, is the one the handbook's sketches use. Adafruit's ADS1X15 library works too. Worth knowing: Rob Tillaart's library starts at gain 0, which is the ±6.144 V range, so a sketch that never calls setGain is using the coarsest setting there is.

The ADS1115 handbook

11 articles · about 50 minutes

This page is the reference: what the part is, what it is made of, and the questions people arrive already asking. The handbook is the walk — the same part in the order somebody actually meets it.

Why a separate chip

2 articles

Your board already has an analog input. It is twelve bits of it, it is not linear, and it moves when the Wi-Fi starts. This is what the ADS1115 is instead.

The board in your box

2 articles

Ten pins, four of them analog, and four parts already fitted that decide how it behaves before you write a line of code.

Getting a good number out of it

3 articles

Three settings stand between a reading and a measurement: the range, which inputs are compared, and how long each conversion takes.

More than one board

2 articles

The address pad, the two addresses this board can take, and the pin that tells you a reading has arrived without asking.

A build and a check

2 articles

A 12 V battery measured through a divider, with the arithmetic that keeps it under the supply, and the four things to check when a reading is wrong.

Edit this page — content/modules/ads1115.mdx

Community

Questions about this product

See what other owners have asked, and read their solutions.

This page covers several products. Choose yours to see the right discussions.

Discuss this article

Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.

Browse Modules and blocks on the forum