I am using an AD7746 over I2C communicating with a microcontroller (Arduino Uno) to measure two differential capacitances. The target application is MEMS, but at this point I have no MEMS device plugged in to the test board, I am just measuring the open-circuit stray capacitance (<1 pF).
I cannot achieve the specified noise densities from the datasheet - for a 109 ms capacitance conversion time, the datasheet specifies an RMS noise of 1.5 aF/rtHz.
After much experimentation I can achieve at best 100 aF/rtHz, and in many cases I cannot even achieve that, and will see more like 1000 aF/rtHz or worse. Most of the time I see random noise, but on some channels (repeatably) I will see regular U-shaped dips in the measured capacitance.
I have tried many things - all permutations of register settings on the AD7746 (0x07, 0x08, 0x09, 0x0A registers), shielding the whole setup in a Faraday cage, power supply isolation (running off batteries in a cage, isolating the computer using a Variac), isolating from the USB (communicating over XBEE instead of over USB cable), different types of averaging both on the microcontroller and on the computer side, etc but I cannot get better than 100 aF/rtHz.
I'm at a loss for what to try next. Could this be due to the quality of the 5V supply? Could it be some kind of cross-talk in the ribbon cable that runs from the microcontroller to the AD7746 board? Could it be due to surface charging or other contamination on the surface of the board that the AD7746 is on (it is surface mounted on the board and the board has been cleaned by sonnicating in isopropanol and ultrapure DI water and then drying - so I tried my best to clean it ... but ... )?
Any suggestions appreciated! Thank you.