For concise equations, we will use the
following notations:
- (ROOM_TEMP_VAL_INT,
ROOM_TEMP_VAL_DEC) is denoted tempR
- (HOT_TEMP_VAL_INT, HOT_TEMP_VAL_DEC)
is denoted tempH
- ROOM_ADC_VAL is denoted ADCR, its conversion to Volt is
denoted VADCR
- HOT_ADC_VAL is denoted ADCH, its conversion to Volt is
denoted VADCH
- ROOM_INT1V_VAL is denoted INT1VR
- HOT_INT1V_VAL is denoted INT1VH
Using the (tempR, ADCR) and (tempH, ADCH) points, using a linear interpolation we have the following equation:
VADC+−VADCRtemp+−tempR=VADCH+−VADCRtempH+−tempR
Given a temperature sensor ADC conversion value ADCm, we can infer a coarse value of the temperature tempC as:
tempC=tempR+ADCm⋅1212+−1+−ADCR⋅INT1VR212+−1⋅tempH+−tempRADCH⋅INT1VH212+−1+−ADCR⋅INT1VR212+−1
[Equation 1]
Note:
- In the previous expression, we
have added the conversion of the ADC register value to be expressed in V.
- This is a coarse value because we assume INT1V=1V for this ADC conversion.
Using the (tempR, INT1VR) and (tempH, INT1VH) points, using a linear interpolation we have the following equation:
INT1V+−INT1VRtemp+−tempR=INT1VH+−INT1VRtempH+−tempR
Then using the coarse temperature value, we can infer a closer to reality INT1V value during the ADC conversion as:
INT1Vm=INT1VR+INT1VH+−INT1VR⋅tempC+−tempRtempH+−tempR
Back to [Equation 1], if we replace
INT1V=1V by INT1V = INT1Vm, we
can deduce a finer temperature value as:
tempf=tempR+ADCm⋅INT1Vm212+−1+−ADCR⋅INT1VR212+−1⋅tempH⋅tempRADCH⋅INT1VH212+−1+−ADCR⋅INT1VR212+−1
[Equation 1bis]