The resistor accuracy an value matching only effects the offset and gain. Both are usually calibrated for the full circuit anyway. So it would not matter using resistors that are 10% off.
I did not consider resistors tolerance to be a problem. I mentioned it to indicate that the imprecision on the positive input of the summing op-amp is not a problem.
Currently that op-amp sees resistances as depicted in the attachment. Can you spot what does not match the pattern?
That leads to two issues:
- The summed inputs are not Signal through 10kΩ and 2.5V through 10kΩ, but Signal through 10kΩ, 5V through 21kΩ and GND through 21kΩ. So instead of signal being offset by +2.5V, it is offset by a value that slightly depends on the signal itself, introducing an error of a few dozen mV.
- The negative input sees 5kΩ, the positive input sees 5.12kΩ.
Of course that is a minuscule error, that can be ignored in a circuit consisting of 5% resistors. Either because the worsr case error from them is already larger, or because the circuit will be calibrated anyway. And this is my motivation for mentioning the tolerance.
And, to be clear, I do not say OP should put an op-amp there. I am just saying that
if someone wanted to use an extra op-amp, placing it there would make more sense.
with only 10 bit resolution of the AVR based Arduino this are some 5 mV/LSB for the ADC and some 10 mV/LSB for the input.
10 bits is the width of a value used to control the internal DAC. It is returned as the measurement result. But the actual measurement accuracy is worse. Unfortunately that is not mentioned in the ADC part of the datasheet. For that one must scroll 60 pages, to the “Electric characteristics” section. For ATmega328 it’s Table 28-8 “ADC characteristics”. Total unadjusted error is up to 3.5 LSB. Without calibration one should not expect better than 8 bits. With calibration: depends, but getting full 10 bits is unlikely in ATmegas. Of course 8 bits is still better than 0.5%.