This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1115 input channels are influence each other

Other Parts Discussed in Thread: ADS1115

I brought a little ADS1115 four channel 12 bit ADC module. Connected to our I2C bus, I let it continue to convert on single ended channel 0. However, its reads is not zero without connect anything. If I connected A0 to ground, it will reads back 65535.  In addition when A0 is floating, if I touch A1, A2, or A3, the result register value also change.

I am kind of confused, when connected A0 to ground reading 65535, and why other channels impact on A0 reading, when I only configured bit 14-12 only to 100.

  • Hi Wayne

    I'm going to move your post to the Precision Data Converters forum where the proper experts can address your question.

    Best regards,

    Jim B

  • Wayne,


    What you read will depend on your configuration. Normally the inputs should not be connected to each other since the multiplexer should isolate each of the inputs for measurement.

    If you have the multiplexer set to 100h for bits 14:12 in the configuration register, you will be measuring the voltage from AIN0 to GND. If AIN0 is floating, I would normally expect the data to go to a positive full scale reading. However, this might not be the case if the input has someplace to draw a minimum amount of charge. Regardless, this isn't a valid configuration.

    However, what you describe is data=65535. In hex, this is FFFFh, which is -1 since the data is reported in twos complement notation. In this case, what you may be seeing is a small offset in the measurement (not a large full scale reading). A positive full scale reading is 7FFFh, even in the single ended configuration.

    If there is a small change in the input, it's possible that there is some difference in input impedance reacting with the input bias current. Regardless the inputs should not be floating for a measurement.


    Joseph Wu
  • Thanks, Joseph. I figured out that by adding delay after sending configuration and started to read, It seems can make the channel isolated.  Because this chip by default is differential inputs, so that two analog inputs are internal configured as differential when power up. 

    I also noticed that with 5V power supply, if I configured the scale to 6.144 full scale, measuring ground is easily get to 0xFFFF which is -1 reading.  If I configured the scale to 2.048V, then it does not have this problem.

    However, I am not sure if this is due to power filtering or some other reason. When I measure 1.73V with multimeter very stable reading, this chip reads back from 1.51 to 1.71V fluctuate a lot.  Is there something I need to pay attention to make reading stable?  I am using a cheap module brought over eBay, which has this ADS1115 chip and few resistors on board.  Do I need to put additional capacitor to filter the input spikes?

  • Wayne,


    You can put some filtering caps in the inputs to help, but the noise that you describe is much larger than what I would expect for measuring a stable source. I don't think that will help. There shouldn't be much difference between measuring something on the 6.144V scale compared to measuring with the 2.048V scale. In the ADC, its just a matter of changing the reference sampling.

    Out of curiosity, what exactly are you measuring that is 1.73V? I just wanted to know if it's a potential source of noise. If you trust your power supply to be fairly low noise, you could construct a voltage divider with a couple of resistors to measure.

    I will say that a multimeter has a much lower bandwidth and will have a tendency to average the measurement result. The ADS1115 runs at a much faster data rate. If you need to, you might want to get an oscilloscope to make sure the noise isn't real.


    Joseph Wu
  • When sending first byte configuration 193, second byte configuration 131, then read back, it gets a lot of noise. Only using the example in page 11 of the datasheet, the noise is zero.  However, that is differential mode, we want single ended mode.

  • Hi Wayne,

    As you have mentioned, in the default configuration case the differential input pair of AIN0 and AIN1 is used.  If you connect AIN1 to GND, then you should see the exact same measurement as the single-ended case you later configured.  You should see the same results in either case. The advantage of the internal mux connection to GND is more input measurement connections are possible (4 instead of 3 single-ended measurements where one input is dedicated to GND).

    In the default configuration where you say you have no noise, how do you have your inputs for AIN0 and AIN1 connected?  Also, do you have any scope/logic analyzer shots of the communication that you can show us? 

    Best regards,

    Bob B 

  • In both case, I have inputs open, not connected to anything, then in default configuration, A0 reading is zero, in single ended, it is a big number like 3000 or so.
  • Hi Wayne,

    This is not the same condition.  In one case you have both AINP and AINN floating.  In the second case you have AINP floating and AINN tied internally to GND.  The underlying question is, what are you measuring with a floating input?  The answer is you are measuring nothing.  When you connect one of the inputs to GND, you now have a pathway where one input is connected to GND, which can be noisy due to any ground bounce or transient, and one input that is floating and meaningless.  In the end, you are still measuring nothing and the result has no meaning.  At the very least you should connect the AIN0 (AINP) input to GND so that the inputs are at the same potential.  If you connect AIN0 and AIN1 to GND, then both measurements should be the same for the default differential input case, and the single-ended case.

    Best regards,

    Bob B

  • Hi Bob,

    Thanks for your reply. In single ended mode, if I connect A0 to ground, I will get 65534, which is -2 and pretty stable.
  • Hi Wayne,

    The next thing to try is to change AIN0 to another voltage.  To keep it simple, I would suggest setting the ADS1115 input range to 6.144V and then attempt to measure the same voltage that is powering the ADS1115.  You should now see the same voltage that is powering the device.

    Best regards,

    Bob B

  • Then it has range as 9235 to 9248 up and down all the time.
  • Hi Wayne,

    What did you connect to the AIN0 input?  From the code values you have about 1.73 V with about 2.4mV of noise.  If this is your supply, it is too low. I noticed that earlier in the thread you posted that you connected 1.73V to the input.  Are you using the same source as before?

    Best regards,

    Bob B

  • Bob,

    You are absolutely right, I measured wrong ping, to the 1.73V. The supply is 5V.
    Since this part could be used for differential inputs, its output is 2's complement, which could be a negative number. In single ended case, why would we still get negative number? I assume the smallest number would be zero in single ended configuration. Thanks so much for your help!
  • Hi Wayne,

    The ADS1115 will always make a difference measurement, no matter what mux selection you make.  As the offset of the device can be as much as +/-3 LSB (2.048V full-scale), the offset can create a condition showing a negative result when close to zero.  Also, if AINP is slightly below GND you will get a negative result.  As long as you do not exceed the absolute maximum ratings for the ADS1115, you can read small voltages below GND even while in the single-ended mux selection.

    Best regards,

    Bob B