Electronic – arduino – have crosstalk in Arduino ADC, despite low source impedance

adcarduino

I. THE CIRCUIT:

Below, an Arduino Due measures voltage signals from two parallel voltage-divider circuits:

enter image description here

We want the Due to accurately measure the voltages at the places where it makes contact with the voltage-dividers. However, we see significant crosstalk – changing the resistance in one channel changes the voltage in the other channel:

$$\textbf{TEST I} ~~(R1 = R2 = 10 MΩ):$$
enter image description here

$$\textbf{TEST II} ~~(R2 = 3.3 MΩ < R2 = 10 MΩ):$$
enter image description here

However, we can theoretically trace these effects to current leaking through the Due: the Due usually has an input impedance of around 10 kΩ, but we have under clocked it from 20 MHz to 1 MHz, which raises its input impedance to 266 kΩ. So the electrons in the voltage divider circuit will certainly prefer to enter the Arduino, rather than traverse the 1 MΩ placed in front of them.

II. THE FOLLOW-UP:

Below, we have made a tiny modification to our original circuit, in hopes of making the voltage channels truly independent: both signals are buffered by one ADA 4528-2 (a dual-channel op amp):

enter image description here

The op amp is not there to amplify the signal: it provides a gain of ~1.003. Instead, it is there to hide the high impedance of the circuit that we're trying to measure. Instead of an output impedance of 1 MΩ, the impedance is now <0.1 Ω:

enter image description here

so the electrons should stay in the circuit, and there should be no crosstalk at all. However, to my surprise, although there is some improvement, there is still noticeable crosstalk!:

$$\textbf{TEST I} ~~(R1 = R2 = 10 MΩ):$$
enter image description here

$$\textbf{TEST II} ~~(R2 = 3.3 MΩ < R2 = 10 MΩ):$$
enter image description here

The red channel should not "know" that the blue channel has increased resistance. However, its signal drops, when I have not made any changes to the red channel – What am I missing from my analysis (By the way, I'm using low-tolerance resistors <1%)?

Best Answer

More than likely it is a problem to do with the analogue channels being multiplexed inside the arduino - try sampling with a greater time-gap between red and blue signals and this should hopefully solve/indicate the issue.