I am currently working on a project, which involves measuring current in a DC circuit and storing that generated data on an arduino microcontroller. I decided to go with the ADS1115 and a shunt, which is located in series on the low-side of the circuit I want to measure. It is a 0.001Ω shunt, which results in a voltage drop of 1mV per amp.

I have attached a schematics of the wiring (Note that there are multiple other devices connected in parallel on the arduino, which all have very little power consumption; I left them out for better reading)

circuit showing the wiring

The issue I'm having are the results the ADS1115 is giving me: When no voltage is applied to the left circuit, i get a single-ended reading of about -20, which in my application is unacceptable. When voltage is applied and the load draws current, i also get a reading, which is -20 bits off.

The ADS1115's supply voltage is around 4.98V and I am not sure if the problem lies in all the other components that are attached to the arduino's circuit.

I am not an electrical engineer but a software developer, so please take that into consideration when commenting on my schematics and/or wrong wiring. :)

Any help is appreciated!

  • \$\begingroup\$ I have a couple of questions: What kind of load are you using? What values are you expecting? What exactly do you mean by "i also get a reading, which is -20 bits off."? \$\endgroup\$
    – jonathanjo
    Commented Jan 14, 2020 at 21:33
  • \$\begingroup\$ You have not mentioned anything how you have configures the chip. What is the input mux configuration, PGA settings, data rate selection etc? Are you even sure you use single-ended conversions? \$\endgroup\$
    – Justme
    Commented Jan 14, 2020 at 21:36
  • \$\begingroup\$ Are you saying you have a 20 count offset (error), no matter what voltage you are trying read? (I aasume you mean count, or quanta, and not 20 bits). \$\endgroup\$
    – SteveSh
    Commented Jan 14, 2020 at 21:38
  • \$\begingroup\$ Are you sure the measurements are actually not wrong? If there is supply return currents flowing, it might actually be that resistor is at lower potential by some amount than ADS1115 ground pin is. How much in volts the -20 counts is? \$\endgroup\$
    – Justme
    Commented Jan 14, 2020 at 21:43
  • \$\begingroup\$ @Justme I am using the Adafruit_ADS1115 Library, which lets me do something like "readSingleEnded(0)", with 0 being the channel. PGA is set to 16x. Data Rate Selection is set to default = 128 samples/second. \$\endgroup\$
    – storm85049
    Commented Jan 14, 2020 at 21:47

2 Answers 2


Unlike other devices in ADS111x series, ADS1115 includes source MUX that selects which of the input channels will be used as inputs for differential amplifier.

Since you are measuring shunt voltage referenced to the ground, you have to select GND as one of those inputs. See "9.3.1 Multiplexer" diagram in the datasheet. This is done by setting bits 14:12 in the Config Register to 0b100 (for A0 input).

Also, many ADC chips have "zero offset", which can be accounted for by calibration. I don't know if that is the case with this particular chip.

  • \$\begingroup\$ Maple, two questions: what do you mean by "zero offset"? and also, does this multiplexer config affect to differential measurements?. \$\endgroup\$
    – bardulia
    Commented Apr 4, 2023 at 20:14

Okay, so thanks to @Maple, i got it working!

The wiring was almost correct, one thing i had to add was another connection from the ADS's ground to its A3 Pin and configure the register just like @Maple suggested.

  • 1
    \$\begingroup\$ just to clarify: the connection to A3 pin should not have been necessary. By setting config register bits 14:12 to 0b100 you instructing MUX to connect AINn to the ground internally. See Table 8 in datasheet for details. \$\endgroup\$
    – Maple
    Commented Jan 18, 2020 at 7:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.