I am currently using the AD5933 in the form of the PModIA impedance analyzer board (https://store.digilentinc.com/pmod-ia-impedance-analyzer/) to collect bioimpedance measurements. The frequencies I am sweeping across are from 5 kHz to 200 kHz in steps of 15 kHz, and the impedance range I expect to encounter is from approximately 200 Ohms to 10k Ohms. The sweep parameters I have chosen are in the table below:
|Start Frequency||5 kHz|
|Step Size||15 kHz|
|Number of increments||14|
|Calibration Resistor||3600 Ohm|
|Output Range||2V P-P|
|# of settling cycles||200|
The PModIA has a built in AFE as well, similar to the one of page 4 of AN-1252 (https://www.analog.com/media/en/technical-documentation/application-notes/AN-1252.pdf). I find that when I try to use resistors within the range of 200-10k ohm to try and test the accuracy of my setup, that the % error can sometimes be higher than 5-10%, and is typically above 1-2% at most impedances besides the one I used to calibrate. I'm also calculating the phase using the atan2() function from the Math.h library on the results from the imaginary and real registers, and I find that the calculated phase of the resistors varies greatly, though they should all have the same value of 0. I calibrated the system phase using a resistor and everything but the values often fluctuate a full 90 degrees or more from resistor to resistor. I've followed the AD5933 datasheet and AN-1252 regarding calibration and checked the control register at points during the sweep to make sure the PGA gain was correct, but I still keep getting inaccurate values.
Any help with this issue or advice on calibration would be greatly appreciated.