Hello, everyone, I am using AD5933 with Arduino, I can measure impedance from 47ohm to 1Mohm in the frequency range(10Hz-100kHz). I have measured impedance at different frequency ranges by using different MCLK external programmable oscillator DSL1077. Now I want to measure impedance at whole frequency sweep at a time. I have implemented logarithmic frequency sweep, so for this, I am changing my start frequency register every time for performing logarithmic frequency sweep by setting increment frequency register and number of increment register as zero. when I have applied from 10Hz-100 kHz I am not getting the accurate result I have uploaded data in terms of real and imaginary (i have measured 47-ohm resistor with 47-ohm RFB). Although the clock frequency is changing with respect to frequency sweep. if I apply each frequency sweep separately like (5kHz-100Khz) OR (10Hz-20) etc, I am getting good results.
how can I measure whole frequency sweep accurately, do I need to measure gain factor for each sweep separately.?my output excitation voltage is 1.98Vp-p, and the PGA gain is X1.
It would be useful to share some more information regarding your setup, is there an AFE? 47 Ohm RFB and 47 Ohm resistor require your system to pass p-p current of 42 mA, which is pretty high and would require some additional circuits around the AD5933 to be generated.
How do you determine when you are getting "accurate result"? Ideally, gain and system phase should be calibrated at every frequency point within your sweep regardless of MCLK source. Using single-point or dual-point calibration described in the datasheet works only for narrow-range frequency sweeps.
Snorlax thank you for your response, I am using AFE the image given below
by using this AFE I can measure impedance from 47 ohm to 1M ohm as I told you
but as you can see in the above image below 1 kHz my result is not very accurate, how can I improve my system efficiency
First, I have calculated the gain factor for each frequency range using a two-point calibration process for different feedback resistor. I have used 6 feedback resistor. (47ohm,330 ohms,1K ohm,10kohm,47kohm, and 100kohm).
Then I used the calculated gain factor of each frequency range.
The calculated gain factor for (10 Hz -20 Hz) range is (1.08234E-07), The feedback resistor is 10k ohm, in logarithmic frequency sweep when 17.78 Hz will come, the above-mentioned gain factor will use.
and I have implemented this algorithm in my code, but below 1 kHz I need to improve my system.
The pictures did not get attached - look like placeholders.10-20Hz range is probably too wide to use two-point calibration for it. If you know all your frequencies within your sweep, it would make sense to calculate gain at every frequency and store it in an array. Then for the unknown impedance for each newly measured frequency point you could simply pull gain value for that frequency out of gain array and calculate the measured impedance.
The only thing that looks suspicious is that R1 is larger than R4, so the AD5933 input amplifier has gain of 4.7. Depending on the DUT and R5, R6 and R7 values, the input amplifier (as well as the IC4A) might be clipping the signal at the power supply rails. If you have access to an oscilloscope, it would be useful to hook it up to the RFB pin of the AD5933 and check if the voltage waveform there is a well-shaped sinewave throughout all your measurements: without any clipping at VCC and ground.
Thank you Snorlax, you are right I am not getting well-shaped waveform in all measurements. before this, I was using AFE given by Analog devices in AN-1252. but the output current by using that AFE is more the 100 microampere that is not appropriate for medical application according to IEC- 6061. Can you guide me how can I alter AN-1252 circuit for our required current / any other alternate solution? I will be very grateful to you.
There is not enough information about your application to know if one can really guide anything… I would not worry too much about to IEC- 6061 for now, I would make sure that the circuit you invested so much effort into building is performing the way you expect.
I would suggest to increase R1 to 4.7k, R12 and R13 to 10k and try to make the circuit to give you correct values for some impedance ranges DUT defined by R5, R6 and R7, so that DUT >= R5, DUT >= R6, DUT >= R7, while programming Vexc = 2V and gain = 1. This should ensure that the signal at the RFB pin is not distorted. If things work out well, you can transition to measure DUTs more representative of the target application.
Sonlax I only need the output current that goes through the DUT should be under 100 microampere, and it's possible with above AFE.
You mean to say increase the R1 resistor value from 1k to 4.7k and select an appropriate value of R1 by measuring impedance. am I right??