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.

ADS1015-Q1: Weird read value

Part Number: ADS1015-Q1
Other Parts Discussed in Thread: ADS1015

Hello,

We are using ADS1015 via I2C in an automotive product powered by Renesas RL78 microcontroller. The problem that we encounter is that from time to time the adc is reading weird values(65433(FF99) or 65434(FF9A)) altough the adc is configured as singled ended and it can only provide values up to 7FF0H and only positive values. FF9A seems to be a negative value(-103). Can it be something wrong within our configuration? We also need to wait 2ms after the configuration register is written to be able to get a valid result.

  • Roberto,


    Even when the ADC is configured as single-ended, the device still makes a differential measurement with AINP-AINN (where AINN is tied to ground). If AINP goes a little below ground the ADC will still report a negative value. Is it possible that AINP is dropping below ground?

    The one thing that concerns me is that the output data you get should have the last four bits as 0s. If you look at Table 3 in the datasheet on page 22, the 12 bit data is left shifted, with the last four bits zero padded. With an output data of FF99h or FF9Ah, this could be a reading of -6 or -7 with an error in the last four bits.

    This looks a bit like a communication error to me. Do you have any other communication errors? Can you get a plot of the digital communications through a logic analyzer or oscilloscope? In particular, can you get a shot of the data error coming out of the device? When you get this particular data error, what was the input voltage at the time? What is the configuration register set to?

    I had one last comment. In your last sentence, you say you need to wait 2ms after the configuration register is written to be able to get a valid result. Again, I'm not sure what your device configuration register is set to, and if you are running in continuous conversion mode or single-shot mode. Regardless of mode, when the device is taking a measurement, it requires the full data period to complete a conversion. If the device is 1600SPS, then this time is 625us plus you need to add on an extra 10% for internal oscillator variation. If you are running in single-shot mode, then this time plus about 20us for startup will be the amount of time needed to complete a conversion. For this example that's about 708us.

    If you are using continuous conversion mode, it's hard to know how any of the conversion timing at all. It's always converting and you never know when the data is really ready. On top of that, if you write to the configuration register, the device waits until the current conversion is done before writing to the register. Then the device starts the new conversion with the new configuration.

    If the configuration has changed (and the data rate has not), it may take twice as long as you expect to get data from the device in the new configuration. It just depends on when within the conversion period the configuration register is written. For this reason, we usually recommend running the device in single-shot mode.


    Joseph Wu
  • Roberto,


    Were you able to solve your problem with the ADS1015? I had thought this was a communication problem, but it is still not unexpected to possibly get a negative output from the ADC if there is some offset and AINP is near or below ground.

    I'll close this post for now, but if you aren't able to get the correct result, post back and we can continue with the debugging.


    Joseph Wu
  • It seems that the ADC is working fine now. Thanks for the help. If there will be any other problems I will contact you.