Post Go back to editing

Problem with impedance phase measurement

Category: Software
Product Number: AD5940

Good morning,

I am working for the first time with an AD5940 that I intend to use to make two-terminal impedance measurements on liquids. The AD5940 is mounted on a custom PCB with a 10 kOhm Rcal and I am making a measurement at 15kHz.
I am using the example codes provided by AD to make the impedance phase and magnitude measurement and am comparing the results with a simulation and calculations.

To test the accuracy of the system I am connecting components (example known resistor) and measuring their impedance.

PROBLEM: when I simply measure the impedance of the resistor the measurement is correct and coincides with the calculated value, however, if I add a capacitor in parallel to the resistor a or simply a capacitor directly connected to F+ and F- the measured phase is totally wrong for example: expected phase: -11.8°, measured phase -170°.


Currently I have not yet been able to understand the origin of the problem but I think it could be a problem in the software configuration of the AD5940, would you have any advice?

Thank you very much.



  • Hi,

          The default AD5940 configurations given in examples are mainly for load impedance measurements done at 16 bit resolution.

           Since there is very small variation in imaginary part for large change in capacitance, due to resolution limitation of DFTImag register,

           it is required to choose more precise value of RTIA for getting accurate capacitance measurement at output.

          External RTIA value may be required.

    Below is an example:

    For capacitances in pF range, small current is expected. Hence larger RTIA value may be required as shown below:

  • Thank you very much for the reply Akila,

    in the meantime I had already reduced the Rtia set to the minimum and got much more stable results with an absolute value much closer to the calculated values. However, the sign of the phase is inverted for me, could it still be a saturation problem and therefore I am making a wrong measurement or should a negative sign be added in the phase calculation of the example code?

      /* Process data */
      for(i=0; i<DataCount; i++)
      {
        printf("Freq:%.2f ", freq);
        printf("RzMag: %f Ohm , RzPhase: %f \n", AD5940_ComplexMag(&pImp[i]), AD5940_ComplexPhase(&pImp[i])*180/MATH_PI);
        printf("Impedance:(Real,Image) = (%f,%f)\n", pImp[i].Real, pImp[i].Image);
      }
  • Hi,

     Yes. Sign must be reversed:

    RzPhase = atan2(-pDftRz->Image,pDftRz->Real);

    AD5940_ComplexPhase() function doesn't have -ve sign:

    float AD5940_ComplexPhase(fImpCar_Type *a)
    {
    return atan2(a->Image, a->Real);
    }

  • Thank you very much for the help   :) 

    Have a good day!