ADS1115/A build and a check/11. When the reading is wrong
A build and a check · 11 of 11

When the reading is wrong

Four faults account for nearly every bad reading from this chip, and each one makes a different shape on a plot. Wandering is a floating pin, jumping is a ground that is not shared, steady-but-low is the source being loaded, and flat at the top is over-range.

Read the shape first

Before changing anything, print twenty readings and look at them. The four common faults do not look alike, and telling them apart takes seconds.

Four wrong readings, and the shape each one makes
Wandering
What the readings look like
Reading
18,022
Should be
16,384
Repeatable
no
An unconnected analog pin is not zero, it is an aerial. There is no pull-down on A0 to A3 — nothing on this board touches them — so an unwired input picks up whatever is in the room and the reading drifts with your hand. It is not a fault in the chip and it does not need fixing: connect the pin, or tie an unused one to ground.

Wandering

Symptom: the number moves constantly, and moves more when your hand gets near the wire.

Cause: the pin is not connected to anything, or is connected to something that is not driving it. Nothing on this board holds an analog input anywhere — no pull-up, no pull-down — so an unwired input is an aerial picking up the mains field in the room.

Fix: connect it. If you meant to leave it unused, tie it to GND.

Jumping

Symptom: mostly plausible, with occasional readings that make no sense at all.

Cause: the grounds are not joined. If the thing you are measuring has its own supply, "both are ground" is not enough — there has to be a wire. Without one, the two grounds drift apart and come back, and a single-ended reading measures against the one that is moving.

Fix: one wire between the two grounds. If the load is noisy, measure differentially instead, with the sensor's own return on the negative input.

Steady but low

Symptom: perfectly repeatable to the last count, and consistently under what a meter says.

Cause: the chip is loading your source. Its inputs are a switched capacitor and behave like a resistance to ground — about 6 MΩ at ±4.096 V, and lower at the narrow ranges, down to hundreds of kilohms differentially at ±0.256 V. A 1 MΩ potentiometer's wiper can be 250 kΩ from anywhere, and a quarter of a megohm against six is about 4% of your signal lost in the divider you did not mean to build.

Fix: a smaller potentiometer, a smaller divider, or an op-amp buffer. Failing all three, measure the error once against a meter and correct for it — it is a fixed percentage.

Flat at the top

Symptom: the reading sits at 32767 and the shape of the signal is gone.

Cause: the input is above the selected range. Either the range is too narrow for the signal, in which case nothing is harmed, or the signal is above the supply, in which case the protection diodes are conducting and the chip is being damaged for as long as it stays connected.

Fix: measure the input with a meter before reconnecting it. Under the supply, widen the range. Over the supply, put a divider in — measuring a 12 V battery has the arithmetic.

The order to check things in

  1. Is the power LED on? No LED, no supply, and nothing else matters.
  2. Does a bus scan find 0x48? That proves the supply, the ground and both bus wires in one line of output.
  3. Does a known voltage read correctly? A single AA cell on A0 with its negative on GND should read about 1.5 V at ±4.096 V. If it does, the chip is fine and the problem is downstream of it.
  4. Only then suspect the settings. Range too narrow, data rate too fast, reading the wrong channel.

Nearly every report of a dead ADS1115 stops at step three.

When it does not work

An unused input reads a random number

That is correct behaviour. There is no pull-down on A0 to A3 — nothing on this board touches them — so an unwired input floats and picks up whatever is around it. It is not a fault and it does not affect the channels you are using. Tie unused inputs to ground if the numbers bother you.

Touching the wire changes the reading

On a connected input, that means the source is very high impedance and the chip is seeing more of your body than of it. On an unconnected input it is simply the pin acting as an aerial. Either way the answer is the same: give the input something low-impedance to look at.

The reading changes when a motor or a relay switches

The ground is moving. Current through a shared return wire develops a voltage along it, and a single-ended reading measures against exactly that. Run the sensor's ground back to the board's GND on its own wire, or measure differentially so both wires shift together and the difference survives.

Everything reads right except one channel

Check that channel's wire before suspecting the chip. The four inputs go straight to the multiplexer with nothing in between, so a dead one is almost always a wire, a breadboard row, or a solder joint. Swapping the suspect wire onto a known-good channel settles it in ten seconds.

It worked yesterday and reads full scale today

Something has been connected that is above the supply. Disconnect the inputs and read them with nothing attached: if the chip still responds on I²C and reads sensibly with a known 1.5 V cell on A0, it survived. If a channel now reads full scale with nothing on it, that channel's protection diode has gone and the part needs replacing.

Where this goes next

The specification table, both boxes, and the datasheet.

Back to the ADS1115 reference

Edit this page — content/books/ads1115/when-the-reading-is-wrong.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