Choosing a method to measure bandgap voltage when they don't agree...?

I am hoping to setup a long term datalogger using a precision thermistor, and that made me dig into issues around calibrating gain & offset the arduino ADC.

I'd also like to read the Thermistor/resistor divider using the internal 1.1 vref to get another couple of effective bits, so that got me experimenting with the capacitor method of directly measuring the internal 1.1 bandgap voltage described at:

http://forum.arduino.cc/index.php?topic=38119.0

and another method that derives the bandgap from by matching your measured VCC to a calculated on, described over at Open energy monitor:

https://openenergymonitor.org/emon/buildingblocks/calibration

The problem I've been seeing is that the two methods give me different numbers:

say 1098mv from the capacitor method, and 1078mv from the CalVref.ino code.

When I work backwards from the a DVM (Extech ex330) measured line voltage myself, the CalVref bandgap seems let me derive Vcc more accurately, but I've been wondering if I've been doing something wrong with the cap. I read the cap when the unit is powered from the onboard regulator (an MCP1700) rather than USB, and the voltage on the cap, seems to increase slowly over time(?) and then stabilizes after about 5 minutes.

Has anyone else compared these two methods before? Which one do I trust to give me the real internal vref?

I don't know enough about the two methods to understand why they would give different results, but do not think it is important to know the "real" internal Vref.

My approach is to use internal 1.1 V Vref to measure an accurately known external voltage (standard), then adjust the value assumed for Vref so that the result obtained is correct.

As long as the different voltage measurements of the external standard agree (to around 0.2%, the absolute ADC accuracy as per data sheet), you are in good shape.

For standards, TI sells various voltage references (e.g. 4.096V) , but they have just revamped their product pages and I can't even get the selection tables to load.

I think that is essentially what the CalVref.ino program is doing, but it has the drawback of using the Vcc supplied by the UART adapter as the reference if you are using promini style boards like I am (since it is using serial communications in the process)

I think I will have to buy an LM4040 (like the one from adafruit; https://www.adafruit.com/products/2200) to finally get to the bottom of things.

But the method described by RL & CB seemed like a fantastic & easy approach that did not require me to buy anything...