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.

ADS1299: ADC conversion off by ~order of magnitude

Part Number: ADS1299

I am using the ADS1299 for an EEG application. As part of the bringup of the chip I have tested it with both the internal test signals (set to -(VREFP-VREFN)/2400 = -4.5/2400 = -1.875mV) and with a series of sine waves generated from an external sig gen.

My problem is in the conversion from ADC values to volts. For my internal test signals, the recorded adc values alternate between about 2425 and about -4555, for a total amplitude of ~6980. This converts perfectly to about -1.875mV (-6980*4.5/(2^24) = -0.001872). However, the recorded values for my external test signals are always off by about a factor of ten. For example, I will input a 100mV DC signal or a 100mVpp sine wave and the value/p-p value come out on the ADC as 45000, which by the same math comes out to ~12mV.

In these tests I am not filtering my inputs and have a gain of 1.

Is there perhaps some internal decimation filter that could be causing such an error? They are mentioned in the datasheet but I didn't think they could cause this.

Ethan

  • Hello Ethan,

    Welcome to our forum and thank you for your post!

    When you apply the external test signal, can you probe the input pins of the ADS1299 and confirm that the signal amplitude is correct at the input? Make sure that ground is shared between your signal source and the ADS1299 circuit.

    Some additional clarifications:

    1. What are the register settings for the AD1299?
    2. What is the frequency of the sine wave?
    3. All channels expect differential inputs with a common-mode voltage that is at least 300 mV away from the supply rails. Can you specify what is being applied to both channel inputs during each test?

    Best regards,

    Ryan

  • I am using a differential configuration so I've just been connecting the sig gen leads over the IN1P and IN1N inputs of the ADS1299. I had been also routing the sig gen output to an oscilloscope to verify signal but over a BNC splitter not probing the leads directly. Currently out of the office but will verify signal amplitude input at the leads on return (Monday)

    1) The register settings are as follows:

    0x01: 0x96

    0x02: 0xD0

    0x03: 0xEE

    0x05: 0x60

    0x0D: 0x01

    0x0E: 0x01

    With the rest set to their values on reset.

    As stated I am out of the office currently but will verify the full set again on return. Hopefully the issue is obvious and lies in some settings here and can be resolved before Monday.

    2) The sine wave frequency is 1Hz

    3) As stated previously I have been simply connecting the two sig gen leads directly to the differential input of the ADS1299. The inputted sine wave is set such that the lowest value is 0V (equally an offset of 1/2 the peak voltage. In my case this meant an offset of 5-50mV on my 10-100mVpp sines)

    Thanks for your patience and assistance.

    Ethan

  • Register configurations below

    Reg 0x01: 0x96

    Reg 0x02: 0xd0

    Reg 0x03: 0xEE

    Reg 0x04: 0x00

    Reg 0x05: 0x60

    Reg 0x06-0x0C: 0x05

    Reg 0x0D: 0x01

    Reg 0x0E: 0x01

    Reg 0x0F-0x13: 0x00

    Reg 0x14: 0x0f

    Reg 0x15-0x17: 0x00

    The peak to peak amplitude of the sinewave as measured at the ADS1299 input is 104mVpp. 

    I also rooted around on the board some more and discovered a high pass filter that was attenuating my signal significantly, moving the frequency up to 10 Hz makes it much more accurate. However, there is still about a 10-15mV difference between the code and the measured value. Am I calculating it incorrectly or is there something else in my configurations that I can adjust to close the gap in accuracy.

    Ethan M.

  • I am also confused by whether or not I should be using 2^23 or 2^24 as the ADC scale. The datasheet refers to using 2^23 since the ADC outputs 2's complement values, but calculating with 2^24 as above gave me the correct values for the test signal.

  • Hi Ethan,

    Thanks for the update.

    Can you please share a schematic? If you have a high-pass filter in your signal path, that might explain the majority of the signal amplitude loss for a 1-Hz sine wave.

    For the last question, please refer to this FAQ post: How do I convert ADC output codes to volts?

    Best regards,