Mapping a voltage range to whole ADC range using opamps
You are ill-advised in using the lower 50 mV and the upper 50 mV of an ADC's range unless the details in the data sheet assure you that the zero offset, gain error and reference errors allow part of these regions to be used. It is my experience that you will never find an ADC that realistically specifies 0 to Vref as the full input range even if it says so on page 1 of the data sheet.

Gain error: -



Offset error: -



So, estimate the usable range of the ADC and rework your formulas taking into account op-amp offset errors. I would recommend using LTSpice (free from LTI) to double check your values.

Alternatively just use the range as it i.e. 256 mV to 449 mV - this as a percentage of 3.3 volts (Vref) is 5.8% or, for a 12 bit ADC, 239 bits of resolution. This is 1.26 LSBs per degree and if you want more resolution (not accuracy of course) then take multiple samples and average. Noise will cause the values to dither and you get process gain by this action that gives you a resolution significantly greater than that implied by 12 bits.

If you are unhappy with that just use an amplifier to raise the 449 mV to about 3.25 volts (a gain of 7.238). Your new map will be: -


256 mV ==> 1.853 V
449 mV ==> 3.250 V


That will use 1.397 volts of the 3V3 range of the ADC or 9.13 LSBs per degree C.

Don't get hung up on maximizing the range and incurring extra errors due to resistor tolerances etc. Think simple and think accuracy/drift.