Post Go back to editing

Maximum Sensitivity + Noise Mitigation for AD5940

Category: Hardware
Product Number: AD5940

Hello,

I am working in the current range of about 0 - 500 nA.

I am seeking a Limit of Detection of 10-20 nA upon making analyte additions using the Amperometric + AD5940main firmware.

Does anybody have any suggestions on how to achieve the maximum sensitivity with as little noise? As of now, I am using the max gain (512k) with rload of 3k6. I have enabled I believe notch filters in the Amperometric.c file but if someone can point to exactly where in the code that is that would be great verification that I did it correctly. I'm afraid a gain of 512k isn't sufficient and perhaps an external TIA will be needed assuming the current range is still regarded as 0.9V/RTIA. 

But if there is anything else I can do to improve the sensitivity of the AD5940 please let me know. 

Thanks! 

  • Hi,

    1Notch filter is configured inside AppAMPSeqCfgGen() function:

    static AD5940Err AppAMPSeqCfgGen(void)

    ................

    ................

    dsp_cfg.ADCFilterCfg.BpNotch = bFALSE;

    ......................

    memset(&dsp_cfg.StatCfg, 0, sizeof(dsp_cfg.StatCfg)); /* Don't care about Statistic */
    AD5940_DSPCfgS(&dsp_cfg);

    ....................

    }

    For increasing sensitivity:

    1) You may increase ADC PGA gain 

    .ADCPgaGain = ADCPGA_1P5


    * @brief ADC PGA Selection
    * @note Only gain 1.5 is factory calibrated.
    * @{
    */
    #define ADCPGA_1 0 /**< ADC PGA Gain of 1 */
    #define ADCPGA_1P5 1 /**< ADC PGA Gain of 1.5 */
    #define ADCPGA_2 2 /**< ADC PGA Gain of 2 */
    #define ADCPGA_4 3 /**< ADC PGA Gain of 4 */
    #define ADCPGA_9 4 /**< ADC PGA Gain of 9 */

    2) You may also set value of Rload  which is in series with sensing electrode input.

    pAMPCfg->LptiaRtiaSel = LPTIARTIA_1K;
    pAMPCfg->LpTiaRl = LPTIARLOAD_10R

    * @brief LPTIA Rload Selection
    * @{
    */
    #define LPTIARLOAD_SHORT 0 /**< 0Ohm Rload */
    #define LPTIARLOAD_10R 1 /**< 10Ohm Rload */
    #define LPTIARLOAD_30R 2 /**< Rload resistor 30Ohm */
    #define LPTIARLOAD_50R 3 /**< Rload resistor 50Ohm */
    #define LPTIARLOAD_100R 4 /**< Rload resistor 100Ohm */
    #define LPTIARLOAD_1K6 5 /**< Only available when RTIA setting >= 2KOHM */
    #define LPTIARLOAD_3K1 6 /**< Only available when RTIA setting >= 4KOHM */
    #define LPTIARLOAD_3K6 7 /**< Only available when RTIA setting >= 4KOHM */
    /** @} */

  • Hi - 

    I have already stated that I am using an LPTIARLOAD_3K6 or LPTIARLOAD_3K1. Using highest RLOAD is what makes the most sense to me when achieving maximum sensitivity but please correct me if I'm wrong.

    For the PGA gain - they make it clear in the comments that Only gain 1.5 is factory calibrated... is using other than 1.5 OK to use? I am using PGA gain 9 and the ADC seems to be ok.

    Is there anything else in this section of Amperometric.c file that's beneficial for the notch ? bolded is what I enabled to true ( you mentioned above). 

    Akila - do you recommend using an external TIA (1 mega or 2 megaohm) to achieve such a low sensitivity? Please advise. Such external gains need to be in parallel with a 100 nF external capacitor correct?

    dsp_cfg.ADCFilterCfg.BpSinc3 = bFALSE;
    dsp_cfg.ADCFilterCfg.BpNotch = bTRUE;
    dsp_cfg.ADCFilterCfg.Sinc2NotchEnable = bTRUE;

    memset(&dsp_cfg.StatCfg, 0, sizeof(dsp_cfg.StatCfg)); /* Don't care about Statistic */
    AD5940_DSPCfgS(&dsp_cfg);

    sw_cfg.Dswitch = 0;
    sw_cfg.Pswitch = 0;
    sw_cfg.Nswitch = 0;
    sw_cfg.Tswitch = 0;
    AD5940_SWMatrixCfgS(&sw_cfg);

    /* Enable all of them. They are automatically turned off during hibernate mode to save power */
    AD5940_AFECtrlS(AFECTRL_HPREFPWR|AFECTRL_SINC2NOTCH, bTRUE);
    AD5940_AFECtrlS(AFECTRL_SINC2NOTCH, bTRUE);
    AD5940_SEQGpioCtrlS(0/*AGPIO_Pin6|AGPIO_Pin5|AGPIO_Pin1*/); //GP6->endSeq, GP5 -> AD8233=OFF, GP1->

  • Hi,

    All ADC PGA gain values can be used. Calibration correction factor is included in conversion formula.

     Yes. You may connect external RTIA of very small resistances (for increasing sensitivity) across RC0_0 and RC0_1 and set .ExtRtia = bTRUE

    External capacitance across RC0_0 and RC0_1 can be chosen as required by application and are not compulsory.

  • What would the resolution be when RTIA = 512 kOhm? Meaning - the smallest incremental change that results in a detectable output. 

    Would it be:

    0.9V/512000 = 1.5 uA 

    1.5E-6 A/2^15 = 4.5776367e-11 A = 0.045776367 nA ??

  • Following up on this... is my logic correct?

    Thanks