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.

ADS8688A: ADS8688A

Part Number: ADS8688A
Other Parts Discussed in Thread: ADS8688

Hey Sylvain! 

I am trying to simulate ADS8688a ADC on proteus which is coded on using arduino IDE using the library contributed by you on GitHub. I am hereby attaching the schematic being used. 

We are trying to use an external clock from the microcontroller. When the code read_channel.ino from the example folder of Github is being executed, we are getting a full scale reading of 5.12V (0xFF) even though we are connecting a 3.7V source to AIN0P pin, AIN0_GND being grounded. 

Could you please help us in trying to debug this asap? 

Regards,

Amogh G 

Code:

/* ADS8688 library example
*
* PIN CONNECTION:
* GNF: GND
* REFIO: NC (output the 4.096V reference when REFSEL is connected to GND)
* REFSEL: GND (enable internal 4.096V reference)
* SDI: pin 11 / MEGA pin 51
* RST/PD: +5V
* DAISY: NC
* CS: pin 10 / MEGA pin 10
* SCK: pin 13 / MEGA pin 52
* SDO: pin 12 / MEGA pin 50
* ALARM: NC
* AVDD: +5V
* DVDD: +5V (Digital Logic Level)
*/

#include <ADS8688.h>

#include<SPI.h>

ADS8688 bank = ADS8688(); // Instantiate ADS8688 with PIN 10 as default CS
void setup() {
bank.setChannelSPD(0b00000010); // enable channel 0, power-down the others
bank.setChannelRange(0,R6); // set all channel range to +- 1.25*Vref
bank.autoRst(); // reset auto sequence
Serial.begin(115200); // start serial communication
}
void loop() {
Serial.print("CH0: "); // print label
uint16_t val = bank.noOp(); // trigger sampling
Serial.print(bank.I2V(val,R1)); // print value in Volts
Serial.println(" V"); // print Volt label
delay(500); // wait for 500 milliseconds
}

  • Hi Amogh,

    Thanks for your query. This is a technical forum supported by TI and Sylvain does not work for TI. Therefore, I'm going to support you since you are using TI device.

    1. Are you using blue wires to directly connect the ADS8688 device to your Arduino UNO for digital communication?

    2. The following hardware connections are missed by you. Please check the ADS8688 datasheet, you need to 

    • Use decoupling capacitors for REFCAP and REFIO pins, see the recommended cap value in the datasheet.
    • Short the REFGND to the ground
    • Short DAISY pin to the ground
    • short the /REFSEL pin to the ground to select the internal reference
    • Pull up /RST pin for normal operation
    • Make sure you have a ground connection between the ADC and the Arduino UNO board

    3. After you modify your hardware according to my suggestions above. Power up the ADC and check if the voltage on the REFIO is 4.096V. Then try to run your code again.

    Best regards,

    Dale

  • Hey Dale, 

    Thank you for responding to my query. 

    Am not getting to which wires you are referring to. The wires are connected to ADS8688 for digital communication from the microcontroller through resistors of 47 ohms. Did that answer your question? 

    I have done the suggested changes on the hardware. As there was no GND pin on Uno on Proteus, I have changed my microcontroller to Arduino Mini and there is now a common ground between Arduino Mini and ADS8688. But the voltage on the REFIO pin is still 0V. 

    I have attached the updated schematic below. The code remains the same.

    Could you please help me resolving this issue? 

    Regards, 

    Amogh G  

  • Hi Amogh,

    You are using blue wires instead of a pcb board and connector which will definitely affect the performance you are going to get.

    Thanks for providing the updated schematic, however

    1. Did you pull up the /RST/PD pin 2 to DVDD according to my suggestion above? 

    2. Did  you provide a +3.3V power supply to the DVDD pin 34?

    3. Did you provide a +5V power supply to AVDD pin 9 and 30?  

    Once you fix these issues, I would suggest you to use an oscilloscope or logic analyzer to check the timing on the SPI bus (/CS,SCLK, SDO and SDI).

    Regards,

    Dale

  • Hi Dale,

    1. RST has been pulled to DVDD 

    2. DVDD is at 3.3V

    3. AVDD is at 5V 

    But still the issue persists. 

    I however tried connecting a logic analyzer on proteus. I have attached the snapshot of the logic analyzer output.

    A0 - Green - SCLK

    A1 - Yellow - MISO

    A2 - Red - MOSI

    A3 - Blue - CS

  • Hi Amogh,

    Can you measure and let me know the voltage on the REFIO pin 5?

    You have to select a channel to start a conversion and read data, see the table 6 on page 45 in the ADS8688 datasheet. For example, send 11000000 00000000 to the ADC in order to select the channel 0. Also, see the timing in Figure 1.  At lease two data frames are needed because the command in the 1st frame will be executed in the 2nd frame, so you can keep sending the command in each frame within 32 SCLKs.

    Best regards,

    Dale

  • Hi Amogh,

    I did not hear back from you after around one month. I will close your post. You can start a new thread on this forum if you still have troubles to use this ADC, thanks.

    Regards,

    Dale