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.
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??
The way your circuit implemented is that the current through the DUT is defined by the value of the DUT and excitation voltage Vexc programmed into the AD5933. The differential amplifier IC3B has gain of 0.1, so, for example, if you program Vexc = 2V the voltage applied to DUT is 0.2V p-p. If the impedance of your DUT is 1MOhm the current through the DUT is 0.1 * Vexc / DUT = 0.2 microampere p-p. If you do not connect any DUT, the impedance of your DUT is practically infinity and the current through it is zero.
I would increase R1 to 4.7k to keep the AD5933 internal input OPAMP at gain 1. Currently the differential amplifier IC3B has gain of 0.1. To simplify things I would also keep the differential amplifier IC3B at gain 1, so that the overall system gain from the excitation to the DA5933 internal ADC would be 1 to begin with, so that once you connect calibration and test resistors instead of your DUT, the signal would be dined as R5 / DUT, R6 / DUT, R7 / DUT, depending on which feedback resistor for IC4A you select. This way you can ensure that there is no distortion of the sinewave at the AD5933 RFB pin and that the internal ADC dynamic range is reasonably utilized, by using calibration and testing resistors larger or equal to the selected feedback resistor for IC4A (R5, R6 or R7). Best is to use calibration resistor equal to the selected feedback resistor. Once that is verified, you can tweak the parameters of your electronics the way you want, just making sure that the sinewave at the RFB pin is not getting distorted.