como te dijo MLO__ quizá un pequeño filtrado digital, esto nose muy bien como hacerlo, pero seguramente que encuentras algo en el foro.
No te funciona porque el A/D del micro y el sensor funcionan así:
Supongamos que la máxima tensión del sensor sea 5V a la temperatura máxima que puede sensar, y 0V la mínima. Para el resto de valores de temperatura la tensión varía analógicamente en la salida del sensor,d e 0 a 5V según la temperatura que se sensa.
Supongamos también que usaremos un ADC de 8 bits, entonces lo máximo que el conversor de 8bits puede darte será 255 y lo mínimo será 0
Entonces ahí tienes los primero valores, cuando el ADC tenga como resultado la conversión 255 la tensión será 5V en la salida del sensor y por tanto se estará sensando la máxima temperatura. Por el otro lado cuando el resultado de la conversión A/D sea 0 la tensión de la salida del sensor será 0V y se está sensando la mínima temperatura.
Para valores intermedios de tensión, temperatura y conversión A/D tenes que hacer una relación matemática, o quizá una regla de 3 por ahí, o el mejor método que creas conveniente, e implementarlo en ecuaciones o funciones en el micro para obtener el resultado de temperatura correcto, o en tu caso obtener el valor de conversión aproximado para tus valores de temperatura y cambiarlos por el 17 y 22 que colocaste "arbitrariamente" en tu programa.
Y si existe muchas variaciones en tu lectura, tendrás que usar algun filtro por hard y soft, que si no me equivoco ya se hablaron en el foro.
un saludo