Varying internal reference or external AREF?

Hi all,

In order to accurately measure a small voltage drop amplified to around 1V, I would like to either use the internal 1.1V reference voltage of my Arduino Mega ADK, or use an external voltage reference of the same value. I read in various threads and in the datasheet that the internal voltage can actually be somewhere between 1 and 1.2V. What I don't get though is whether this value varies or not during operation. In other words: if I measure the internal reference once, should I be fine? This is what the OP of this thread did.

If the internal reference does vary during operation, I guess an external reference is best. I read that voltage reference diodes are an easy way to provide a stable reference, is this correct

Thanks a lot!

The internal reference is a bandgap reference, it should be pretty stable, but you need to calibrate it
for each and every Mega board you use the sketch on, which might be fine, or might be a real pain.

The AREF pin needs to be driven by a low impedance stable voltage source if powered externally, constantly.

You must call analogReference(EXTERNAL) before any call to analogRead() if powering AREF externally or
you will short Vcc direct to the external voltage source and risk burning the chip.

After changing analogReference(), call analogRead() at least once and discard the result, so the ADC settles
down. If you change the external voltage, same applies, call and discard an analogRead.

You need a voltage reference with a low impedance output. Check the datasheets to ensure it is low enough.

Not sure where you got this info from that a low impedance external Aref is needed.

This is from the Aref page on this site (not from the Atmel datasheet).

"you can connect the external reference voltage to the AREF pin through a 5K resistor"

Someone pointed out in another post that a true bandgap reference can't be made with Cmos.

From the link in post#0
"Don't let the voltage to the analog input exceed the analog reference"

Not a problem to do so, as long as you stay under VCC+0.5volt.


Thanks for the replies.
@Leo: yes I also understood that it is perfectly fine exceed the analog reference, it will jsut saturate the signal but not damage anything as long as Vcc is not exceeded.

@MarkT: Indeed I had found out that it was good to call analogread() at least once after changing the reference mode, and I am aware that I can damage the chip if I plug something into AREF without changing the reference in the code. Interesting to hear that the internal reference, being a bandgap reference, should be stable. Since I will only use one Arduino for all the measurements, in my case it isn't an issue at all to calibrate it before using it the first time. I think that is the best option then. To calibrate it should I just measure the voltage between AREF and GND with coltage set to INTERNAL in the sketch and the Arduino powered?

Thanks a lot!

To calibrate it should I just measure the voltage between AREF and GND with coltage set to INTERNAL in the sketch and the Arduino powered?

Some AVR processors work that way some do not. If the datasheet calls for an external capacitor on AREF when the internal voltage reference is used then, yes, you can directly measure the voltage. In either case you can simply try it. The risk is essentially zero.