AD conversion adjustments. Look up table?

I have a MAX1238, 12 channel, 12 bit, ADC that I use to read 10 voltages.
I use 10 voltage dividers, and even using 1% resistors, there are slight variations in the voltage out of the dividers.
By the time I multiply the 12 bit value, the error magnifies.
I thought about a multiturn pot for fine adjustment to the voltage dividers, but 3 of the voltage dividers disipate 1 to 1.7 watts.

Currently, from the lowest to the highest readings, the difference is about 6% using the same multiplier to all 10 channels.
Ideally, I would like to have 1% difference.

I need to have 10 different multipliers, one for each channel to adjust to actual readings taken with a DVM.

What would be the best solution to store and recall those 10 values?

but 3 of the voltage dividers disipate 1 to 1.7 watts.

Is there any reason for this?

There is no need for a look up table as everything is linear. All you need is a correction factor for each channel to multiply the reading by so that they all read the same.

Reason? yes.
I'm reading voltages in 20 volts increments. Chan1 up to 20V, Chan 2 up to 40V, Chan3 up to 60V... Chan10 up to 200VDC,
The voltage dividers scale it down to about 4.8 volts if the highest voltage ever reaches 200, not likely though, usually 185 is the highest and I left a little room in the divider also. So, a 10mA current will disipate 1.85 watts in Channel 10. I use two 1watt resistors in those channels.

I apologize if this is a beginner know how.
The difference in readings is not linear, two of the channels are spot on the readings, some are over and some are under.
The correction factor is what I describe as a multiplier. I need one for each channel.

Thak you for your time.

200 Volt is pretty high for a 5V micro...

What if the wrong resistor in the voltage divider dies?

Are you talking about quantization errors in the ADC, or that the ADCs are not consistent from sample to sample (i.e. consecutive samples of the same value gives significantly different answers) or that they are not consistent with each other (different ADCs give significantly different answers for the same voltage)?

If it's inaccuracy caused by errors in the resister values, these should be consistent and linear and would be easy to correct for by applying a scaling correction. If it's a different type of error you need to know the characteristics of the error to know how best to compensate for it. A lookup table would be a last resort given how little memory you have available, but without knowing what sort of error you're dealing with and what sort of accuracy and consistency you're trying to achieve, it's hard to know what other options are suitable.

So, a 10mA current will disipate 1.85 watts in Channel 10.

Yes but why do you need 10mA current down a potential divider. That is a lot of current. You could just as easy have a 1mA current without affecting your A/D input.

The 10mA load stabilizes the readings, it removes superficial charge from the batteries I'm reading.
There is an optoisolator between the ADC and the Arduino, also an isolated DC-DC. Now we are getting off the topic here.

The ADC converter is extremely accurate, the readings are very consistent, I only start seeing "jumping" on the third decimal.

The error is induced by the slight difference in the resistors used in the voltage divider, hence the need for the correction factor.

Vitor2:
The error is induced by the slight difference in the resistors used in the voltage divider, hence the need for the correction factor.

If that is so then the effect would be linear and could be corrected by applying a simple scaling adjustment to the calculation.

Correct, that is what I have been asking for help.

I need a correction factor, adjustment, whatever you want to call it, for each one of the channels.
When the Arduino loops 12 times to get the reading from each of the channels I need to multiply the reading from the ADC by the multiplier (adjustment factor, correction, call it what you may) to get the actual voltage for each of the channel readings.

I need to store and recall each one of those values and call them accordingly.

I need a correction factor, adjustment, whatever you want to call it, for each one of the channels.

So read the voltage with a meter, note the difference between the applied voltage and the reading and find your conversion factor.
Elementary school maths.

If I understand the original question, it relates more as to where to store the correction factors (or whatever you prefer to call them). Assuming they do not change very often, for ease you could store them as an array in progmem PROGMEM - Arduino Reference or in eeprom http://www.arduino.cc/en/Reference/EEPROM

I think, better to separate load resistors and voltage dividers. Wiki says:

The result is a reasonable tolerance (0.5%, 1%, or 2%) and a temperature coefficient that is generally between 50 and 100 ppm/K.[8]

for metal film resistors, which counted to 1% off with 100 degree increasing in temperature.

Vitor2:
Correct, that is what I have been asking for help.

Well, the best help I can offer is to tell you that given what you've said so far a lookup table is not the best answer to this problem. Simply determine what adjustment factor you need to apply to each input, and scale the calculated voltage up by that factor. What part of that are you having trouble with?

This is a simple issue to sort out...
The simplest change is the ground leg of the divider. a small BUT Proportionate value in series is required. If the reading is low and a bigger value in parallel if the reading is high.
It's all easy math as all you are dealing with is a small but proportionate change in value. If the value read is 5% high reduce the current by 5% which would be 95% of the 'current' low end (divider) resistor value.
To do so is trivial... For example the low end resistor is 1K ohms and it needs to be 95% of 1000 or 950 ohms so the resistor needs to be reduced in value. The simplest method is a parallel resistor. The easy two value (or more, just add more (1/Rx)... to the total before the final reciprocal) formula is Rt = (1/(1/R1) + 1/R2))... so if R1 = 1000 and Rreq = 950ohms then Rp (R2) = (1/(R1) - (1/Rreq)) = (1/(1/1000) - (1/950)) = 19200 ohms and (1/(1/19200) +(1/1000)) = 950.4950495 ohms The decimal remainder is due to floating point errors... This is the simplest correction I know of and since the voltage (another reason) is lowest here..
the power dissipation of the correction resistor/s is the "Correction" percentage or low in power.
For safety's sake I might add a 5.1V low tolerance low leakage Zener diode from the Arduino analog input to ground and I would make VERY CERTAIN that ALL grounding is in a STAR pattern
so that the total divider current doesn't flow in the Arduino's ground return path because it will offset the A/D reading by the added voltage drop in the ground circuit... Just an IMPORTANT thought and the reason why analog measurements are sometimes inaccurate when measured with an Arduino.
2 39K resistors of 5% accuracy in parallel would be fine for the correction @ 19500 ohms, Their combined errors are divided by 2 and that error is added to the 5% term we were correcting for. There is method in my madness... Making this change makes the device software independent.
There is another method and that is to use a 100 - 250 ohm pot and add it in series with the main divider and take the sense from the wiper of the pot. The first (series/parallel proportionate) method is what I would use as spot correction, the second was what I used when designing for production where > 5% accuracy was required.
Back in the day for really inexpensive correction a larger that required carbon resistor (5 - 10% and Not carbon or metal film) was placed in the ground leg of the divider ans "Notched" with a small triangular file until it was the "correct" value. I might add that it was a small change and the old carbon resistors lent themselves readily to that "method?". The notch was of course coated with a waterproof paint... Fingernail lacquer (usually bright red) to indicate a "Modified" resistor. But this techniquue hasn't been done in regular production in 50 years or more... Was an old geezer that taught it to me... along with the required math to do it the right way.

Doc