ADS1115 16 counts resolution?

Hi everyone,

Maybe someone in the forum can help me.

I have two ADS1115 modules and both show a minimum resolution of 16 counts in every input voltage range.

I've tested with several libraries like: Adafruit_ADS1x15, I2Cdev, ADS1115_WE and Rob.Tillaart libreary. With all of them, I've followed the connections properly and I've tested in several voltage input range as well. In all cases, I've found a minimum resolution of 16 counts, in all channels, variying the input voltage through a potentiometer.

Finally, I have to say that I've used, in all cases, the example codes.

Someone has faced the same problem?

Thanks in advance.

Kind regards.

Maybe someone in the forum can help me.

first off :

both show a minimum resolution of 16 counts in every input voltage range.

What do you mean by “16 counts” ?
If you mean “16-bits” you have say that explicitly since “16 counts” is not a valid description.
Can you provide an example of what you mean ?
What is the problem you are requesting ‘help’ for ?
16-bit resolution is 0.0000762939453125 V/per count
16 counts = 0.001220703125 V
12-bit resolution = 0.001220703125 V/per count
See any similarity ?
If you are trying to say you are only getting 12-bit resolution that means you forgot to comment out the
ADS1015 config line and enable the ADS1115 config line in the code because the library default is for the
12-bit ADS1015.
You need to change THIS:

// Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
Adafruit_ADS1015 ads;     /* Use thiS for the 12-bit version */

to THIS:

Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
// Adafruit_ADS1015 ads;     /* Use thiS for the 12-bit version */

in order to tell the library you are using the ADS1115 and NOT the ADS1015.

FYI, a more correct description of your issue would be :

"I should get 0.0000762939453125 V/per count but I’m getting 0.001220703125 V/per count.
5V/0.001220703125=4096
**5V/**0.0000762939453125 = 65,536
212 = 4096
216= 65,536
Why am I getting 12-bit resolution with a 16-bit ADC ?

I've highlighted another common deominator ...

I've tested with several libraries like: Adafruit_ADS1x15, I2Cdev, ADS1115_WE and Rob.Tillaart libreary. With all of them, I've followed the connections properly and I've tested in several voltage input range as well. In all cases, I've found a minimum resolution of 16 counts, in all channels, variying the input voltage through a potentiometer.

Of course, It'd be good to see your circuit and test code.

My money is on the code.

OK, I'll bet its a cermet pot.

There have been many reports of fake or counterfeit modules sold as ADS1115, but are in fact lower resolution. Sounds like that is what you have.

Treat it as a 12 bit ADC.

My money is on the code.

I also do not understand the 16 count resolution reference?

Post your code using code tags.

Ron

.

One of many discussions of the counterfeit ADS1115 modules

"Count by 16" is the hallmark.

Hope the OP clarifies … but if its a fake 16-bit ADS1115 but internally only 12-bit << 4, then the readings would indeed increment in steps of 16 counts. However, the OP said minimum 16 counts, so lets also throw in a ceremet pot with 3% variable contact resistance (heh,heh).

Not sure exactly what you want that's different from what I would guess is the default.

The TI datasheet in table 8 lists all the registers having to do with conversion speeds. You can look through it and if your library doesn't have code to change these registers you will have to do it manually (i.e. your own code).

TI Data Sheet

Hi!!!

First of all, thanks to everybody for your answers.

raschemmel:
Maybe I did not use the right words. When I said 16 counts, I meant that the ADC conversion changing in a 16-step that is, as if it has 12-bit resolution and not 16-bit.
Obviously, I chose the proper instance for the ADS1115: Adafruit_ADS1115, see below:

#include <Wire.h>
#include <Adafruit_ADS1015.h>
 
Adafruit_ADS1115 ads;
 
void setup(void) 
{
  Serial.begin(9600);
  delay(200);
 
  ads.setGain(GAIN_TWO);
  
  ads.begin();
}
 
void loop(void) 
{
  // Obtener datos del A0 del ADS1115
  short adc0 = ads.readADC_SingleEnded(0);
  Serial.print("A0: "); 
  Serial.println(adc0);
 
  delay(1000);
}

dlloyd:
I used the potentiometer as a voltage divider, it’s a very simple circuit.

jremington:
That’s something that I have been dreading. After read [this](http://“One of many discussions of the counterfeit ADS1115 modules”), do you know if that could be real? I bought both devices at Aliexpress and that post describes my problem. Is there any way, via register, in which is possible to difference them?

Thanks in advance.

Kind regards.

Is there any way, via register, in which is possible to difference them?

My reading suggests that this is not possible.

I have the genuine ADS1115, purchased from Adafruit, and it performs as advertised using the Adafruit library.

If yours does not, I think it is safe to assume that it is not a genuine ADS1115. There are examples on this forum of the exact same problem, but interestingly, people don't want to believe that they have been cheated.

With any cheap module that you buy from China, there is an excellent chance that it has one or more reject, recycled or counterfeit parts. Even ATmega328 MCUs are now being counterfeited and sold as "Arduino". They seem to work correctly, until you put them into sleep modes.

Both Adafruit and Aliexpress sell both versions having the exact same pinout ... 16-bit ADS1115 and 12-bit ADS1015. Have you double checked the part# on the module and IC? They're very similar.

Re: fake ICs

In other knockoff ID's it is often found the printing and logo in the IC is slightly different or the printing is of lower quality, or the font is slightly different (ie. 0 vs O )

If your concern is a fake part I would start to look there.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.