Open justiceamoh opened 10 years ago
I'm aware that the gain factor hasn't been calibrated properly, but I presumed this was due to the fact that I was originally testing impedances in a frequency range that was too low. The AD5933 can measure down to 1 kHz accurately, but only if an external clock is provided. The latest version of the board includes a clock chip, but I haven't had the chance to update the calibration settings because of this issue: https://github.com/open-ephys/autoimpedance/issues/2
It looks like you're at the Bioimpedance Laboratory, so you probably know more about this than I do. Do you have any advice on the best way to calibrate the AD5933 chip? Are you planning to build an Autoimpedance meter, or were you just looking at the source code?
Yeah, I am using the same ic in a small form factor device, for bioimpedance analysis. I actually adapted your code (mostly stripped down) for this application. From what I see, your calibrations are correctly done. You are doing a single point gain factor calibration, which is enough if your frequency range is not that large. For my purposes, i do a wide range and so I actually have to compute gain factors for every frequency to attain max accuracy. This would require two sweeps per test: the calibration sweep, and the actual sweep.
The issue I mention though, is that the magnitude values are very different from the expected values and therefore renders the gain factor incorrect. And so, subsequent runs on different test loads output wrong impedance values. Since temperature measurements can be read correctly, i believe the i2c read/write protocols are intact. It seems the actual values inside the real and imaginary registers are themselves incorrect. We have used another micro-controller (M3) to successfully read correct values from the data registers. I am troubleshooting further and intend to check in with an application engineer at Analog Devices to verify if it's something with the arduino/atmega328.
Here is stripped down code:
yeah, so the main reason that i stopped working on this project is exactly this issue. I was able to get correct temp measurements but the impedance values were all over the place. I went so far as to purchase the AD5933 eval board and use the AD supplied software on dummy loads to make sure I was not going insane. This worked, but for 1 kHz I had to make a little 2 MHz oscillator to drive the chip in order to get accurate measurements. Since I'm using RHD chips anyway, and they have imp measurement and plating capability, I've just been using them instead of this. But if you figure anything out I would like to know about it, especially if its just a software issue that can be fixed easily.
ps i now realize I'm a year lat on this. hehe. Still interested though if anyone found a solution.
Hi @jonnew, You may find the work I and some others have done here useful: https://github.com/WuMRC/drive.
It works very well, I'm currently trying to find the range one can use a single calibration resistor for and the best value for the feedback resistor. Application notes and circuit notes from analog devices have been all over the place. If you can contribute anything, please let me know.
After gain factor calibration, impedance values don't match actual test loads. The gain factor obtained for a 220Kohm resistor (2.3e-10) also doesn't correlate with the example in the AD5933 datasheet ( 5.15e-10 for 200Kohm). The values read from the real and imaginary registers seem to be off.