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.
Part Number: ADS1015
So I have this ADS1015 hooked up to my Arduino, but it doesn't really work properly.
I'm measuring differentially, and when I'm measuring positive values, it works completely fine. No problems there.
However, problems start to arise when I want to measure negative values. Sometimes it measures value of about 1.6 volts just fine, but when you change the voltage in even the slightest way, it just stops measuring anything and returns nothing. It also seems to work fine around 400mv, and 5.1v. I have no clue what could be cousing this.
I have the Addres pin pulled to ground, i'm feeding it with 5V and I'm using A0 as the positive input and A1 as the negative input.
I'm using a lab bench power supply to supply different voltages, and my arduino is hooked up to a laptop which doesn't have it's charger plugged in, so it won't be shorted to ground.
I've included my code at the bottom of this post (taken from the Adafruit ADS1015 library example)
I'm looking forward to your suggestions,
Thanks in advance,
This is how I've wired everything. L_IO1 and LIO_2 can either be GND or +30V.
(the insert image option didn't work so I uploaded it somewhere else)
// Adafruit_ADS1115 ads; /* Use this for the 16-bit version */
Adafruit_ADS1015 ads; /* Use thi for the 12-bit version */
Serial.println("Getting differential reading from AIN0 (P) and AIN1 (N)");
Serial.println("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");
// The ADC input range (or gain) can be changed via the following
// functions, but be careful never to exceed VDD +0.3V max, or to
// exceed the upper and lower limits if you adjust the input range!
// Setting these values incorrectly may destroy your ADC!
// ADS1015 ADS1115
// ------- -------
ads.setGain(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 3mV 0.1875mV (default)
// ads.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 2mV 0.125mV
// ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 1mV 0.0625mV
// ads.setGain(GAIN_FOUR); // 4x gain +/- 1.024V 1 bit = 0.5mV 0.03125mV
// ads.setGain(GAIN_EIGHT); // 8x gain +/- 0.512V 1 bit = 0.25mV 0.015625mV
// ads.setGain(GAIN_SIXTEEN); // 16x gain +/- 0.256V 1 bit = 0.125mV 0.0078125mV
/* Be sure to update this value based on the IC and the gain settings! */
float multiplier = 3.0F; /* ADS1015 @ +/- 6.144V gain (12-bit results) */
//float multiplier = 0.1875F; /* ADS1115 @ +/- 6.144V gain (16-bit results) */
results = ads.readADC_Differential_0_1();
Serial.print("Differential: "); Serial.print(results); Serial.print("("); Serial.print(results * multiplier); Serial.println("mV)");
Seeing how you are getting correct reading at times, this eliminated timing issues in the digital communications.
I also suggest using an oscilloscope connected to the digital bus lines to visually check the communications are as expected.
Can you also elaborate when you say the device stops working? at certain input voltages, the devices simply does not respond?
Let's begin eliminating:
can you confirm that the voltage at each pin is a positive voltage? The device can only read positive voltage. The differential voltage between the two can be negative, but the voltage at each pin has to be within GND and VDD.
Are you interpreting the output correctly? note the table below for the output code.
We are glad that we were able to resolve this issue, and will now proceed to close this thread.
If you have further questions related to this thread, you may click "Ask a related question" below. The newly created question will be automatically linked to this question.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.