I. THE CIRCUIT:
Below, an Arduino Due measures voltage signals from two parallel voltage-divider circuits:
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Ω):$$
$$\textbf{TEST II} ~~(R2 = 3.3 MΩ < R2 = 10 MΩ):$$
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):
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 Ω:
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Ω):$$
$$\textbf{TEST II} ~~(R2 = 3.3 MΩ < R2 = 10 MΩ):$$
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.