Luego me fijo y comparto mi experiencia con la medición.
Bueno tal vez he equivocado mi explicación anterior asi que tuve que ponerme a entenderlo debidamente y mas aún cuando tengo un problema similar.
Cuando con la instrucción le dices
analogReference(INTERNAL);
AREF se desconecta de VCC, lees 0V practicamente y no lees 1.10V, pero ese valor se puede medir indirectamente.
Ya que el método de medir la tensión del procesador usa 1.1V cuando midas la batería obtendrás un dato. Supongamos 5045 mV
Sabemos que si tuvieras 1.10V a la entrada A0 del Arduino con una fuente de 5.0V entonces con analogRead(A0) leerías V = 1.10 = 5.00 * analogRead(A0) / 1023 entonces el valor analogRead para esos 1.10 volt sería 1.10/5.00 * 1023
1100/5000*1023 = 225 cuentas del ADC. Entonces 225 cuentas representa 1.10V si la fuente de referencia fuera 5.0V exactos.
pero resulta que ambos sabemos que en AREF no tienes 5.0V y si con tu tester/multímetro mides la tensión de salida del regulador resulta 5123mV (suponte).
Bueno, tenemos 5045 mV si la referencia fuera de 1.10V y 5123 mV con el tester. A quien le creemos? Pues obviamente al tester pero la anterior nos da un dato que no se puede olvidar y es que ambas lecturas debe coincidir, pero una da diferente (la segunda) porque no hay un pin para medir cuando mide realmente la tensión de referencia 1.10V.
El dato de 5045 mV suponiendo 1.10 V nos dice la cantidad de cuentas medidas por el ADC y el único error es que no tenemos 1.10V sino otro valor.
Entonces si miramos esto
1100/50451023 = cte = X/51231023 donde X es el valor que verdaderamente daría la misma lectura del tester si pudiéramos medir la referencia interna
los 1023 que estan en ambos miembros, se cancelan y nos queda
1100/5045 = X / 5123 => X = 1100 * 5123/5045= 1.117,00693
O sea que nuestro valor sería 1117007UL
Y si miras ese valor nos daría la tensión medida por el tester usando el Arduino.
cuando uses este valor en readVcc() la tensión que reporte será de 5123mV la misma que dice tu tester.