I'm creating some temperature sensors for home use. To measure outside and rooms' temperatures.
Range from -30 °C to +50 °C.
Temperature measurement is based on 10k NTCs SDNT2012X103F3950FTF (B=3950K, 1%):
LMV321 has typical input offset voltage ±0.1 mV (maximum ± 3.5 mV).
These sensors are driven by PIC16F1704 MCU, which has 10bit ADC with these parameters:
ADC reads value of NTC1, and MCU uses look-up table to convert measured voltage to temperature.
I have created 5 such identical sensors.
I added "TWEAK" resistors between 10 Ω and 100 Ω so measured temperatures at 23 °C are basically within 0.1 °C:
Problem is when I place sensors to temperature around 4 °C, the measured temperatures spread is around 2 °C:
Why is it so inaccurate?
Is my procedure wrong? I expected that when I manually tweak voltage divider (R401+TWEAK):(TH401) at 23 °C then it will be very close at other temperatures as well.
Or NTC temperature measurement is accurate only when it is calibrated for 2 temperatures? (like for 0 °C and 23 °C)
UPDATE:
I have made the measurements again. I placed those sensors to temperature around 4 °C and the measured temperatures were not with 2 °C spread but around 0.6 °C. Which is already in ballpark of things that are explainable (like 1 % tolerances of NTCs, input offset voltage of buffer opamp and ADC precision).
I have no idea why it it was so way off before. Most likely bad measuring environment (a balcony).
Anyway, I wanted better precision than 0.6 °C (or ±0.3 °C) so I decided to make 2 point calibration (at 2 °C and 23 °C) so I am at precision like ±0.1 °C. I think it is not possible to get such precision with NTCs without calibration.