Post Go back to editing

Looking to measure current noise in EIS - AD5941

Category: Software
Product Number: AD5941

Hi, I'm looking to measure open-circuit current noise for EIS using the AD5941. Can you please confirm if the following methods are correct?

My protocol is to run a two-wire setup for a known resistor across SE, RE, and CE. 

I run an EIS measurement at a set frequency and set RTIA, and then obtain the DFT values of that known resistor. From there, I use the following equation: 

I_{RMS} = (DFT_{MAGNITUDE} * V_{DD}) / ((2^{16} - 1) * R_{TIA})

Is that equation correct for calculating the I_RMS using the DFT? I know that I don't need to measure RCAL since I'm only measuring current, but I wanted to ask to make sure.

Lastly, is the theoretical value for the I_RMS equivalent to the AC Voltage RMS divided by the sum of the known resistor and the 100 Ohms in series with SE? 

Thank you!



Added AD5941 to title.
[edited by: kbaudue at 3:31 PM (GMT -5) on 6 Feb 2024]
Parents
  • Hi,

    Since you are measuring only current,

    if using EIS example code in GitHub,

    1) you may remove below sections:

    - /* RLOAD Measurement */

    -   /* RCAL Measurement */ 

    inside measure sequence (AppIMPSeqMeasureGen()).

    2) To reduce complexity, you may not enable DFT block in measure sequence:

    AD5940_AFECtrlS(AFECTRL_ADCCNV|AFECTRL_DFT, bTRUE);  /* Start ADC convert and DFT */

    3) You may just do data process as below. It returns current input from SE. (load includes the 100ohm resistor at SE)

    static AD5940Err AppIMPDataProcess(int32_t * const pData, uint32_t *pDataCount)
    {
    uint32_t i, datacount;
    datacount = *pDataCount;
    float *pOut = (float *)pData;
    for(i=0;i<datacount;i++)
    {
    pData[i] &= 0xffff;
    pOut[i] = AppAMPCalcCurrent(pData[i]);
    }
    return AD5940ERR_OK;
    }

Reply
  • Hi,

    Since you are measuring only current,

    if using EIS example code in GitHub,

    1) you may remove below sections:

    - /* RLOAD Measurement */

    -   /* RCAL Measurement */ 

    inside measure sequence (AppIMPSeqMeasureGen()).

    2) To reduce complexity, you may not enable DFT block in measure sequence:

    AD5940_AFECtrlS(AFECTRL_ADCCNV|AFECTRL_DFT, bTRUE);  /* Start ADC convert and DFT */

    3) You may just do data process as below. It returns current input from SE. (load includes the 100ohm resistor at SE)

    static AD5940Err AppIMPDataProcess(int32_t * const pData, uint32_t *pDataCount)
    {
    uint32_t i, datacount;
    datacount = *pDataCount;
    float *pOut = (float *)pData;
    for(i=0;i<datacount;i++)
    {
    pData[i] &= 0xffff;
    pOut[i] = AppAMPCalcCurrent(pData[i]);
    }
    return AD5940ERR_OK;
    }

Children