Una vez calculada la mejor resistencia de polarización, el problema consiste en traducir la tensión que da el circuito en un valor de temperatura exacto.
Hay varias fórmulas que devuelven el valor de la temperatura a partir de la resistencia de la NTC. Estas fórmulas tienen dos problemas.
El primero consiste en que son complejas porque es necesario calcular logaritmos. No todos los microcontroladores disponen de esta función implementada y, además consume mucha memoria y tiempo de proceso.
Otro problema consiste en que no tenemos directamente el valor de resistencia de la NTC. Este habría que calcularle a partir de la tensión de salida del divisor resistivo, complicando los cálculos.
Para un pequeño microcontrolador, las funciones matemáticas más sencillas son la suma y la multiplicación.
Los polinomios se pueden calcular a partir sólo de sumas y multiplicaciones, por esa razón las aproximaciones polinómicas son muy utilizadas para aproximar funciones complejas.
En este problema, se ha escogido calcular un polinomio aproximador de grado 5, que puede obtenerse haciendo pasar el polinomio por 6 puntos de la gráfica.
Las temperaturas escogidas son las siguientes (dadas en grados centígrados):
Temperaturas = [-17.0, 5.0, 43.0, 87.0, 125.0, 147.0]
Los puntos se han escogido según el criterio de Chevyshev (los puntos se escogen, dentro del rango de temperaturas, de forma proporcional al coseno de ángulos equiespaciados)
Ahora hay que averiguar la tensión de salida del divisor resistivo para esas temperaturas.
Se puede hacer de dos formas. A partir de los datos del fabricante o a partir del circuito real.
En este caso he calculado la tensión de salida del divisor de forma teórica a partir de la fórmula del fabricante:
Temperaturas = [-17.0, 5.0, 43.0, 87.0, 125.0, 147.0]
Vout = [4.679, 4.293, 3.157, 1.745, 0.963, 0.687]
A partir de este conjunto de datos hay que calcular el polinomio de grado 5 que pasa por esos puntos. He utilizado para ello el algoritmo de Neville implementado en Python.
Hay muchos paquetes informáticos de matemáticas y algunas calculadoras que pueden hacer esta interpolación.
El resultado es el siguiente:
Temperatura = +245.698438861 -210.56120536*Vout +123.656004006*Vout^2 -43.487932545*Vout^3 +7.81600210811*Vout^4 -0.569044086852*Vout^5
Este polinomio se puede arreglar para facilitar los cálculos al microcontrolador:
Temp = - 0.569044086852
Temp *= Vout
Temp += 7.81600210811
Temp *= Vout
Temp += -43.487932545
Temp *= Vout
Temp += 123.656004006
Temp *= Vout
Temp += -210.56120536
Temp *= Vout
Temp += 245.698438861
El resultado es una función que devuelve la temperatura cuando se le introduce la tensión del divisor resistivo.
El error se puede calcular restando la temperatura real de la temperatura calculada por el polinomio:
Temp Error ºC
-20 0,347
-10 -0,385
0 -0,202
10 0,181
20 0,292
30 0,132
40 -0,002
50 0,083
60 0,281
70 0,353
80 0,195
90 -0,085
100 -0,292
110 -0,299
120 -0,120
130 0,102
140 0,165
150 -0,135
Adjunto gráficas:
Circuito eléctrico: R1=3300 NTC 10k
(+5V)----------[====]-----o-----[====]-------------(GND)
|
|_________________ Vout
Tensión de salida en función de la temperatura [voltios]:
Sensibilidad del circuito a la temperatura [milivoltios / grado centígrado]:
Puntos de interpolación y polinomio interpolador: Temperaturas = [-17.0, 5.0, 43.0, 87.0, 125.0, 147.0]
Vout = [4.679, 4.293, 3.157, 1.745, 0.963, 0.687]
Temperatura = +245.698438861 -210.56120536*Vout +123.656004006*Vout^2 -43.487932545*Vout^3 +7.81600210811*Vout^4 -0.569044086852*Vout^5
Error del polinomio interpolador [grados centígrados]:
Saludos.