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-6: suddenly reads nearly constant values, and doesn't change when electrodes are touched, shorted, etc.

Part Number: ADS1299-6
Other Parts Discussed in Thread: ADS1299

Hello Everyone,

I am part of a team working on an EEG device centered around the ADS1299 6PAR. We have been testing our first prototype for the last few weeks, and we've verified that everything is working, and we have even been able to read some basic bio-signals.

However, something happened since yesterday, and the ADS1299 now only reads constant values across all channels. They are in the range of 40-90 mV and are different on every initialization. We have tried shorting the electrodes manually, but the values don't seem to be impacted by any contact.

Here is a picture of the serial output from our device, where each line is a different data burst from the ads1299, with the first 6 numbers being the channel values in Volts, and the last 3 being the STATUS Bytes.

This is with all electrodes floating except the first two, which are manually shorted. These values didn't change as we stopped shorting or did anything else.

Here is our initialization protocol.

 ADS1299_init_spi();
    //send SDATAC command to write the registers
    ADS1299_cs_select();
    ADS1299_send_command(ADS1299_CMD_SDATAC);
    ADS1299_write_register(ADS1299_REG_CONFIG3, 0b11100000);
    sleep_ms(1000);

    //write configuration registers

        //enable CLK output and Set output data rate to 250SPS
        ADS1299_write_register(ADS1299_REG_CONFIG1,  0b11010110);

        ADS1299_write_register(ADS1299_REG_CONFIG2,  0b11010011);


        //Bias Settings
        ADS1299_write_register(ADS1299_REG_CONFIG3,  0b11101110);
        
        //close SRB1 swithces
        ADS1299_write_register(ADS1299_REG_MISC1, 0b00100000);

        //close BIASP switches
        ADS1299_write_register(ADS1299_REG_BIAS_SENSP, 0b11110000);

        //set channel to normal electrode input
        ADS1299_write_register(ADS1299_REG_CH1SET, 0b01100000);
        ADS1299_write_register(ADS1299_REG_CH2SET, 0b01100000);
        ADS1299_write_register(ADS1299_REG_CH3SET, 0b01100000);
        ADS1299_write_register(ADS1299_REG_CH4SET, 0b01100000);
        ADS1299_write_register(ADS1299_REG_CH5SET, 0b01100000);
        ADS1299_write_register(ADS1299_REG_CH6SET, 0b01100000);


            ADS1299_write_register(ADS1299_REG_LOFF, 0b00001100);
            ADS1299_write_register(ADS1299_REG_CONFIG4, 0x02 );
            ADS1299_write_register(ADS1299_REG_LOFF_SENSP, 0xFF);
            ADS1299_write_register(ADS1299_REG_LOFF_SENSN, 0x00);

We have tried shutting down various channels, which works, but the same issue persists with the remaining channels. We did accidentally write to a bit in a register that was supposed to be a constant value, but we don't know if that would cause problems.

Did we accidentally short something or damage the ADS1299, or is this an issue with our settings?
Thank you in advance for any help.
 
  • Since posting this, we have tested with the internal test functions, in both DC and AC square wave configurations, and verified that everything works in that regards.

  • Hi,

    You mentioned the Internal Tests all work probably, correct?

    If yes, what might be the issue for now?

    ---------------------

    Do you have an ECG or EEG simulator to generate/inject signals to your ADS for you to test&validate?

    Do you happen to have an ADS1299 evaluation kit/board(EVM)? 

    Thanks

  • Thank you for quick response.

    The test signals seem to be working in regard to the measured voltage, but the frequency of the test AC signal doesn't seem right. When we set the frequency to Fclk/2^21, the period of the square wave is roughly 6 seconds, with the ads1299 internal clock.

    The current issue is that for all the channels that are set to normal operation mode, they read roughly the same value, as shown in the image. The values don't change when we short the inputs to the SRB1 pin or inject a signal. However, this constant value does change on initialization, and changes slowly over time. Also, the lead-off detection doesn't work when we short a channel, srb1, and the Bias pin, despite it working before these issues started.

    We don't have any ads1299 evaluation kit.

    All of this seems to be a recent change, and we have tried to reupload the previous firmware to no avail. 

  • Hi,

    If 'The test signals seem to be working in regard to the measured voltage",  what are the voltage are you trying to inject and measuring?

    It's suggested to use an ECG or EEG simulator to generate/inject the test signal from external.

    -----

    For "normal operation mode, they read roughly the same value,"

    What signals or voltages are you injecting? and how? Are you setting up in sequential or referential montages?

    -----------------------

    Don't understand what does this mean "All of this seems to be a recent change, and we have tried to reupload the previous firmware to no avail. "?

    Could you clarify?

    --------------------

    it's suggested to get an ADS1299EVM for comparison.

    Thanks

  • Our montage setup is referential montage, with the SRB1 electrode acting as our reference, and the Positive pins acting as the measuring electrodes.

    The 'test signals' we are referring to are the internal calibration signals generated by the ADS1299.

    For the 'normal operation mode', we are injecting anywhere from a few microvolts to a few hundred milivolts, which doesn't appear to change the measurement across any of the electrodes. The image of data shown in the initial post was taken with the first two electrodes connected to SRB1, electrodes 3 and 4 connected to a few milivolts, and the last two electrodes floating.

    By "recent change", I mean that the ADS1299 was working beforehand. We were reading the right signals and all of our tests matched what we expected. In the past week, something happened, and now all the channels don't seem to measure anything from the electrodes. They all read the same values when in 'normal operation' defined by the CHXSET register bits 2:0 as shown below.

  • Please check all the power rails are correct with respect to the schematic, and inspect&probe on the PCBA to ensure no shorts.

    ------------------------------------------------
    Could you try read one channel only? and where does the SRB1 electrode go?
    Also, have you always tested with injecting hundred mV?

    What's your VREF? Make sure the input voltage meet section 7.3 Recommended Operating Conditions Analog Inputs.

    It's suggested to test with an EEG or ECG simulator or inject signal in less than 10 mV range.

    ------------------------------------------------

    "By "recent change", I mean that the ADS1299 was working beforehand. We were reading the right signals and all of our tests matched what we expected. In the past week, something happened, and now all the channels don't seem to measure anything from the electrodes. "

    Any design history file and/or V&V test reports?

    Do you have another known good board(KGB)?

    You will need to put a KGB with this suspicious board(let's call it Known Bad Board(KBB)) side by side to do a Root Cause Analysis(RCA) by comparing the all detailed perspectives.

    Thanks

  • Hello,

    Thank you for your suggestion.

    We checked all the power rails and we have no shorts anywhere on the board. Everything is still functional, including our microcontroller, flash storage, and other sensors. 

    When we read one channel only, we have the same issue. A somewhat constant value, without any reflection of the signal we are injecting. 

    The SRB1 electrode was placed on our ground input signal.

    We usually tested before with 10 uV to 1 mV, but when we encountered this issue, we started to test in the hundred milivolt range.

    We are using the internal VREF of 4.5 volts.

    We don't have any design history file. We haven't changed the design from when it was working. At this point, we assumed that either and ESD event broke something in the ADS, or we damaged it another way. We just wanted to make sure before we replace that $60 dollar part.

  • Hi,

    Do you have another known good board to test?

    Please make sure the injecting voltage range meet the data sheet page 8 Analog Inputs required conditions

    Full-scale differential input voltage VINxP – VINxN   ±VREF / gain

    and 

    VCM Input common-mode range (VINxP + VINxN) / 2  ; 9.3.1.3.1 Input Common-Mode Range

    ------------------

    Did you try read signal generated from ECG simulator? If not yet, please give it a try.

    ----------------------

    If you have checked all the suggestions and check points on this thread, and are sure nothing wrong with the PCBA, then you may consider replacing the ADS1299.

    -------------------------------------------

    Just to double check again that you said that you still read ADS1299's internal test signal correctly?

    ---------------------------------------------

    Please consider making/obtaining at least 2~3 extra PCBAs for good engineering, experiments and V&V and RCA practices.

    AND, keep very good detailed procedures, results and reports history for all the designs, configuration and experiments

    ------------------

    Thanks