segs:
...
voltage divider circuit
R1 = 110k ohms
R2 = 8.2k ohms
Vout = (r2 / (r1+r2))*Vin so in other words Vout = .69374 * Vin
...

Huh? By my reckoning Vout / Vin = 8.2/(110 + 8.2) = 0.06937...
which is exactly what you observe.

First of all, with Vref = 5.0 Volts why the heck do you want to divide the input down to 0.89 Volts. Why not make it something closer to 5.0 Volts so that you can attain better precision with your readings?

Volts per bit = Full Scale Voltage divided by 1024.

For example why not give your meter something like 15 Volts full scale. That is, for 15 Volt input, it applies 5 Volts to the Arduino. This gives you a little headroom over 12 Volts. (12 Volt batteries may have somewhat more than 12 Volt outputs when fresh and/or fully charged, and you don't want to lose accuracy by "pegging the meter" with the maximum actual value of voltage.)

So, for 15 Volts in and 5 Volts out, you want Vout / Vin = 1.0/3.0. That's easy.

Off of the top of my head:

R2 = 11K, R1 = 22k gives Vout / Vin = 11/(11+22) = 1/3. Didn't even need a cocktail napkin (let alone an abacus) to do the math, right?

This puts something less than 400 microamps through the divider, which may be acceptable (or not). Any resistors having the same ratio will give the same voltage output results, assuming the current into the analog input pin is much less than the current through R2. This places an upper limit on the practical values of R1 and R2. I wouldn't use 100 Megohms for R2 and 200 Megohms for R1, for example.

Anyhow, for given values of analog Vref and resistors R1 and R2, the voltage calculation from the 10-bit ADC reading goes something like this:

```
const float R1 = 22000.0; // Put exact value here
const float R2 = 11000.0; // Put exact value here
const float Vref = 5.0; // Put exact value here
.
.
.
int adcReading = analogRead(0); // Or whatever analog input channel you use
// Define the formula in terms of variables so that the program
// will easily accommodate it if you change (or measure) the
// actual values.
//
float v = (R1+R2)/R1 * adcReading * Vref / 1024.0;
```

Note that, if the Arduino 5 Volts is off by, say 2%, then the readings will be off by 2% (assuming you know exact values for R1 and R2). If can accurately measure the value of Vref, substitute that value in place of "5.0" Similarly, if you can accurately measure values of R1 and R2, use the actual values.

Regards,

Dave