He estado estudiando la forma de medir temperaturas con una resistencia NTC
Quiero obtener la máxima precisión y linealidad en el rango de 10 a 40 grados centígrados con un circuito muy sencillo.
El circuito que se utilizará para polarizar la resistencia NTC es el siguiente:
R1 NTC
(+5V)----------[====]-----o-----[====]-------------(GND)
|
|_________________ Vout
La salida Vout irá conectada a la entrada de un conversor Analógico-Digital de un microcontrolador.
Valor nominal de la resistencia NTCHe escogido para la NTC un valor nominal a 25ºC de 10k ohm porque es un buen valor de compromiso:
Si la resistencia es más baja, la corriente aumenta y la resistencia NTC se calienta con la corriente de polarización, con lo cual pierde precisión.
Si la resistencia es más alta, la impedancia de Vout aumenta mucho y el error de lectura del ADC aumenta, perdiendo también precisión.
Valor de la resistencia NTC con la temperaturaHe utilizado para los cálculos la fórmula de la resistencia NTC, con los parámetros del fabricante:
R_ntc = R_ntc_25 * exp( A + B / T + C / T^2 + D / T^3)
Las constantes, según el fabricante, son:
R_ntc_25 = 10000 ohms Resistencia a 25 grados
A = -10,2296
B = 2887,62
C = 132336
D = -25025100
La letra T representa la temperatura en grados kelvin, según la fórmula:
T = ºC + 273.15
Valor nominal de R1Ahora el problema es conseguir un valor de R1 que optimice la linealidad y resolución en un rango de 10ºC a 40ºC
He introducido todos los datos en una hoja de cálculo con un gráfico y he probado varias resistencias de polarización (R1) hasta llegar al valor estandar de 6800 ohmios.
El resultado es la gráfica que adjunto.
El eje X es la temperatura.
En la gráfica se puede ver en color azul el valor de tensión de salida (Vout). Esta va bajando a medida que la temperatura aumenta.
En color magenta se puede ver los puntos del conversor ADC que cambian con cada grado de temperatura (para una resolución de 10bits) .
Se puede ver cómo en el rango 15-35ºC la resolución se maximiza y se consiguen 8 puntos por grado ºC. Dicho de otra manera, se consigue una resolución de 1/8 = 0.125ºC
Con un conversor ADC de 12bits, se podría llegar a una resolución de 0.031ºC, que es un valor bastante bueno.
Otra ventaja de este valor de R1 consiste en que la gráfica es lo más lineal posible en este rango de temperaturas (10º - 40º).
Circuito finalPara conseguir estas curvas, el
valor de R1 es de 6800 ohmios, y el circuito final es:
6800 NTC 10k
(+5V)----------[====]-----o-----[====]-------------(GND)
|
|_________________ Vout
He escogido a propósito un valor estandar para R1, para que sea más sencillo de encontrar y más barato.
El valor realmente óptimo para R1 es 7157 que no se puede encontrar en tiendas y, además, depende de la variación de los parámetros de la resistencia NTC
Es recomendable utilizar una resistencia del 1% con una deriva térmica de +-100ppm para minimizar las desviaciones.
Mejorar la precisiónUna vez conseguida la resolución y la máxima linealidad, para conseguir exactitud es necesario comparar la salida de tensión con un termómetro calibrado y:
1.- Corregir la linealidad. Se puede conseguir con bastante precisión con una corrección cuadrática (polinomio de segundo grado)
2.- Ajustar el offset. La desviación con el tiempo del circuito es bastante baja. Una vez corregido el Offset, la precisión se mantendrá bastante tiempo.
En mi caso sólo necesito resolución y no me hace falta precisión, de manera que el montaje tal y como está es suficiente.
El circuito me servirá para compensar la frecuencia de un oscilador a cuarzo, de manera que utilizaré una tabla (LUT) para corregir la frecuencia cierta cantidad en función de la temperatura medida.
Sólo tengo que cambiar la temperatura y medir la tensión Vout y la frecuencia real. En la tabla introduciré para cada Vout la compensación de frecuencia.
Saludos.