Is the ADC input impedance actually 3750 Ohms?

This topic follows on from an adc input impedance question, but I think that it warrants a follow up. The consensus seemed to be that the input impedance is 100 Meg. taken from the data sheet.

I think that’s wrong.

Please see Figure 28.8 (attached). This shows a circuitry resistance of 1 - 100K. It is not 100 Meg. Quite a range but I think that this might be correct. There are two things:-

  1. Why suggest a signal source impedance < 10K? With a 100Meg ADC input impedance, you could use virtually any circuit. You could probably even use cheese as wire. I think that only applies to the inner converter circuitry. It excludes all the intermediate wiring and the MUX.

  2. Put an inverting op amp in front of the ADC input and couple with DC. Assume the standard R1 and R2 resistors to set the op amp’s gain, as G = R2/R1. I have found that I need much higher values of R2 to get a target gain than the simple formula suggests. I think that what’s happening is that R2 forms a potential divider with the lowish ADC input impedance, reducing it significantly, hence dropping the actual gain achieved. In the circuit I tried, I have to set a R2/R1 of 15 to get a 1V signal to scale to 5V. That’s 3 times the gain I anticipated. This suggests a significantly low input impedance. WAY less than 100Meg. Could it actually be 3750 Ohm (from a simple potential divider calculation)?

I will try to confirm this tomorrow by adding a buffer after the op amp. If I’m right, the actual gain should jump back up to 15 and swamp the input range.

Has anyone else found this behaviour for a directly coupled op amp?

cossoft: Please see Figure 28.8 (attached). This shows a circuitry resistance of 1 - 100K. It is not 100 Meg. Quite a range but I think that this might be correct.

I think you're mixing up AC and DC impedance.

14pf is very small, and about the same capacitance as ~25cm of twisted/parallel wires. Leo..

cossoft: I have found that I need much higher values of R2 to get a target gain than the simple formula suggests. I think that what's happening is that R2 forms a potential divider with the lowish ADC input impedance, reducing it significantly, hence dropping the actual gain achieved.

Post your circuit, and the opamp you're using. Not all opamps have a common range that includes ground, so can't be used on a single rail supply. Not all opamps are input and output rail2rail. Leo..

Read the ATmega328 datasheet

Sect. 28.6.1 Fig. 28-8, pg 312

Sect. 33.1.12 Fig. 33-40 , pg. 398 Fig 33-41, pg. 399

(about 280 uA @ 5V/25 deg C) => 5V/ 280 uA = 17857.142 ohms.

(V = I * R = 0.000280 A * 17857.142 ohms = 5V)

AFAIK that 280uA is the current consumption of the A/D module inside the MCU.
Leo…

280uA is the current consumption of the A/D module inside the MCU

Yes, that's way higher than the expected impedance/resistance for the input circuits. As I Recall I have seen effective impedances of 10 megohms or greater. Just charge a .1uF cap with another pin, disconnect it and watch the voltage reading..

Why suggest a signal source impedance < 10K? With a 100Meg ADC input impedance, you could use virtually any circuit.

Because this allows the capacitor on the sample and hold circuit to charge in the time you switch from one channel to another. If you are going to use a higher source impedance that 10K then you need to wait longer before you can take a meaningful reading. We see this all the time here with beginners using high impedance sources and the reading of one channel affecting the other. The successful advice is to take two readings and ignore the first one. This allows the capacitor to charge. For even higher source impedance insert a delay between the two readings.

Unfortunately the capacitance has to charge up in 1.5 ADC clock periods, normally 6us, to within a fraction of a part-per-thousand of the final voltage, if the ADC reading is to be accurate. Some of the capacitance is in the ADC multiplexer, and this can charge up before the next ADC reading, but the sample/hold cap itself only charges up in the 6us sampling window I believe, so the double-read may not guarantee accuracy, just separation of analog pins from each other.

The way to confirm this would be tie an analog input to Vcc with a 100M resistor and take repeated readings - my suspicion is 1023 won't be reached for several samples, but it will eventually be reached as the DC resistance is effective infinite:

If I had a 100M resistor to hand I could try this:

  analogRead (A0) ;  // tie A0 to ground, this discharges capacitance in multiplexor / ADC
  pinMode (A1, OUTPUT) ; // ground A1 temporarily to discharge it
  pinMode (A1, INPUT) ;
  int sample0 = analogRead (A1) ; // A1 connected via 100M to Vcc
  int sample1 = analogRead (A1) ;
  int sample2 = analogRead (A1) ;
  int sample3 = analogRead (A1) ;
  Serial.println (sample0) ;
  Serial.println (sample1) ;
  Serial.println (sample2) ;
  Serial.println (sample3) ;

Wawa:
Post your circuit, and the opamp you’re using.

So the attached are my details. The bias configuration is from MIT course notes.

So the simulation would have a gain of 10, totally swamping the ADC input and producing 0 -1023 readings. The Arduino IDE trace shows what I’m actually getting. It’s as if the gain is not R2/R1 but something less. What could it be?

Note. I’m using the noise input in the breadboard circuit. I’m using two TL081 op amps, rather than the one in the simulation but that shouldn’t matter in such a simple circuit???

MIT.png

trace.png

SPICE-output.png

TL081 power supply voltage (Vcc) = ?

You might want to consider using the LT1215 since it was specifically designed for 5V operation (but can operate up to 18Vdc).

Compare the GBW of the LT1215 with the GBW of the TL081 (23/4= 5.75 times FASTER)

Power supply on the schematic. Don't really think gain bandwidth is relevant here. I'm looking for a gain of 3 - 4 with any /all frequencies. Why do I need resistors for a theoretical gain of 10 when in actuality I'm getting about 3 - 4???

Also, why is there 0.37V on all the unconnected analogue pins? Aren't there some pull up resistors somewhere in there..?

analog pins are INPUTS not outputs. You can't measure the voltage on an analog pin that is not connected. No there are no pullups. Pullups are for OPEN COLLECTOR I/O, not analog inputs.

raschemmel:
You can’t measure the voltage on an analog pin that is not connected.

Could you use of of those multi meter things I’ve heard of? What if you put the black pointy bit on the GND and the red pointy bit on A0? Mine reads about 400mV on all the analogue pins.

Seriously though, aren’t the analogue pins digital outputs too? There’s probably more going on inside my A0 pin than it appears. AND. Don’t forget the often sited <10K source impedance recommendation. Why if the input impedance is 100Meg?

Don’t forget the often sited <10K source impedance recommendation. Why if the input impedance is 100Meg?

Why do you keep asking that question when many people have told you the answer?

A meter isn’t going to help. STOP THAT !
You are giving me a headache.

Also, why is there 0.37V on all the unconnected analogue pins? Aren’t there some pull up resistors somewhere in there…?

No… There is no 100M pull-up or pull-down. The 100M is an approximate-effective resistance and I assume it’s based on the (tiny) current that flows.

Seriously though, aren’t the analogue pins digital outputs too?

No. Just because there’s a voltage with nothing connected (or a very-high impedance load connected) doesn’t make it an “output”. You can’t write to an input to change its state and that 0.37 Volts will change depending on what’s connected.

And, I’m not so sure you’ll reliably get 0.37V (about 75 on the ADC) with nothing connected… The 0.37V reading is probably related to the impedance/resistance of your meter.

There’s probably more going on inside my A0 pin than it appears.

Probably so.

AND. Don’t forget the often sited <10K source impedance recommendation. Why if the input impedance is 100Meg?

Because there is a capacitance and because high impedance inputs can pick-up noise. If you add a 1M pull-up resistor you should read about 1023 and with a 1M pull-down you should read about zero.

If you run the following sketch, you will see that the reported voltage is all over the place until you ground the input at which time it immediately begins reporting "0".

 void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
int val = analogRead(A0);
Serial.println(val);
delay(1000);
}

Sorry. I keep asking because no one has yet explained why I need a gain of 15 (R2/R1 = 15) to amplify a 1V signal to 5V prior to reading it with a Nano.

cossoft: I'm using two TL081 op amps, rather than the one in the simulation but that shouldn't matter in such a simple circuit???

It sure does. Not going to work with those opamps, unless you supply them with +9volt AND -9volt. Already explained in post#2. Leo..

cossoft: Sorry. I keep asking because no one has yet explained why I need a gain of 15 (R2/R1 = 15) to amplify a 1V signal to 5V prior to reading it with a Nano.

That is your op amp. You will get the same results if you remove the connection from the op amp's output to the Arduio's input. Do you think seriously that if the input impedance is like you think that no one would have spotted it before?