Práctica 8 - Sensor de Temperatura PDF
Práctica 8 - Sensor de Temperatura PDF
Práctica 8 - Sensor de Temperatura PDF
fotónicos (SEF)
Curso 2019/2020
La tensión de salida, tal y como se indica en la figura anterior, se lee con una sensibilidad
de 10mV/°C, es decir, que si el sensor lee 10mV eso equivale a 1°C. Los 0mV representan
un valor de offset que este sensor no tiene, pero que si quisiéramos leer valores de
temperatura por debajo de 0°C habría que tener en cuenta, pero no es nuestro caso.
Como ya sabemos de prácticas anteriores, la lectura del sensor se hace a través de un pin
analógico el cual por el convertidor ADC de 10 bits leerá un valor entre 0 y 1023. Para
traducirlo a voltaje, hay que aplicar la siguiente expresión:
𝐿𝑒𝑐𝑡𝑢𝑟𝑎𝑠𝑒𝑛𝑠𝑜𝑟
𝑉𝑜𝑢𝑡 (𝑉) = ∗ 5𝑉
1023
Por tanto, una vez leída tensión proporcionada, como ésta se interpreta como 10mV/°C,
es decir, 0.01V/°C podemos traducir a temperatura aplicando la siguiente expresión:
Sistemas electrónicos y
fotónicos (SEF)
Curso 2019/2020
𝑉𝑜𝑢𝑡 (V)
𝑇𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎(°C) = = 𝑉𝑜𝑢𝑡 ∗ 100
V
0.01 (°C)
¿Por qué se utilizan variables tipo float? La temperatura puede no ser una medida entera,
sino que puede ser una medida con decimales. Se debería declarar la variable de lectura
del pin analógico como un entero ya que lee valores enteros entre 0 y 1023, aunque en
este caso no se ha creado variable para ello, sino que se ha utilizado directamente
analogRead(). “Voltaje” es un tipo float, aunque su valor sea entero, ya que se utilizará
posteriormente una ecuación (la de la temperatura) que devuelve el tipo de dato flotante.
-Esquema de conexión:
Sistemas electrónicos y
fotónicos (SEF)
Curso 2019/2020
El esquema es sencillo y directo. Para realizar lecturas con el sensor se conectarán las patillas
a Vcc, GND y a un pin de entrada analógico (en este caso el A0) tal y como se muestra en el
esquema de conexión.
¡CUIDADO!
En TinkerCad, el sensor de temperatura que hay es otro, es el TMP36. Es idéntico al LM35
solo que hay que restarle un valor de 50 de offset al valor leído, es decir, se puede eliminar
en la línea de código cuando pasas a temperatura. Es una mejora del LM35, que para medir
valores de temperatura negativos necesita de una alimentación simétrica, inconveniente
que con el TMP36 se resuelve.
Ejemplo en tinkerCAD para el TMP36:
-Sin quitarle offset:
2. TERMISTOR
Un termistor es un sensor no lineal de temperatura por resistencia. Su funcionamiento está basado
en la variación de la resistividad que presenta un semiconductor con la temperatura. Existen dos tipos
de termistores que son:
https://www.youtube.com/watch?v=obLccs8dRdg
-Esquema de conexión:
Como con los termistores no se puede medir un valor de resistencia de forma directa, se
utiliza un sencillo “truco” que ya conocemos llamado divisor de tensión. La idea es conectar
en serie con el termistor una resistencia, aplicar tensión en el extremo del conjunto y desde
el punto medio unir a una entrada analógica de la placa del microcontrolador. De esta
manera traducimos un cambio de resistencia del termistor en una variación de tensión que
sí podemos medir desde el microcontrolador. La siguiente figura muestra el esquema de
conexión que como se puede observar es muy sencillo:
Sistemas electrónicos y
fotónicos (SEF)
Curso 2019/2020
En este ejemplo, el
termistor utilizado es
de 100KΩ, por eso es
por lo que la otra
resistencia se pone de
100KΩ. Si el termistor
fuese de otro valor, la
resistencia que
completa el divisor de
tensión tendría que ser
del mismo valor. Es
conveniente hacerlo
así.
Código de programación para un termistor en Arduino:
Antes de poder comprender las líneas de código para el funcionamiento del termistor, he
creído conveniente comentar como se puede convertir la variación de resistencia del
termistor en temperatura. Como la respuesta de este sensor no es lineal, entran en juego
las matemáticas. No te asustes pues simplemente lo voy a comentar y os dejo el código
explicado y una web para calcular lo que sea necesario para realizar la práctica.
Como digo, al no obtener una respuesta lineal, y esto quiere decir que la resistencia no varía
en línea recta con la temperatura (mira la gráfica del NTC un poco más arriba y verás que es
tipo curva), se hace necesario un modelo matemático (una ecuación) que permita obtener
el valor de temperatura. Esta ecuación recibe el nombre de Ecuación de Steinhart-Hart:
1
= 𝐴 + 𝐵 ∗ ln(𝑅) + 𝐶 ∗ [ln(𝑅)]3
𝑇
donde:
T=valor de temperatura en grados Kelvin (hay que pasarlo a centígrados en el sketch).
R=valor de la resistencia en Ω que nos da en termistor
A, B, C son coeficientes Steinhart-Hart. Dependen del material del termistor y nos los da el
fabricante en el datasheet, aunque podemos aproximarlos como os explicaré a
continuación.
En resumen, os cuento esto porque resulta necesario utilizar esta fórmula en nuestro código
debido a la no-linealidad del termistor, para que veáis un poco de donde sale todo esto.
Sistemas electrónicos y
fotónicos (SEF)
Curso 2019/2020
Os dejo el sketch junto con la práctica para que podáis tenerlo. En el vienen explicadas las
líneas de código. Voy a centrarme en cómo obtener los coeficientes que, en función del
termistor que tengáis tendréis que cambiar.
¿Cómo hallar los coeficientes S-H?
Para ello utilizaremos la siguiente herramienta:
https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculato
r.html
Curva característica de un termistor NTC, la azul que pone S-H model.
Parámetros a modificar
Por defecto la página carga un termistor de 10kΩ. Esto se puede ver en el valor de R2, que
es 10000Ω a una temperatura T2 de 25°C así que, si tu termistor es de 10kΩ, podrías
directamente coger los valores A, B, C y copiarlos directamente en la línea de código
correspondiente.
En el ejemplo que estamos siguiendo, la NTC es de 100kΩ. Para obtener los coeficientes,
solo tengo que modificar R1, R2, R3 añadiendo un 0 ya que la resistencia es 10 veces mayor:
Sistemas electrónicos y
fotónicos (SEF)
Curso 2019/2020
Os dejo una web donde amplia el tema de sensores de temperatura por si es de vuestro
interés:
https://proyectoarduino.com/sensor-de-temperatura/
Sistemas electrónicos y
fotónicos (SEF)
Curso 2019/2020
ACTIVIDAD 1
-Si utilizas sensor LM35: Identifica en el datasheet del sensor los parámetros típicos de
temperatura máxima y mínima a 25°C, así como su precisión y tipo de encapsulado. Copia y
pega remarcando la parte del documento donde se pueden encontrar estas
especificaciones.
-Si utilizas un LM35 o un termistor: Comprueba el funcionamiento de tu sensor midiendo la
temperatura ambiente de tu puesto de trabajo habitual. Copia y pega una captura donde se
vea el código y la lectura. Si usas TinkerCad haz lo mismo, pero indica en el sensor 25°C a ver
que lectura obtienes.
Sistemas electrónicos y
fotónicos (SEF)
Curso 2019/2020
ACTIVIDAD 2
Debido a la situación que se está viviendo, se están incrementando los controles de
temperatura en personas. Como futuros técnicos en electromedicina, vamos a implementar
una alarma por exceso de temperatura. Para ello utilizaremos unos indicadores led, uno
verde y otro rojo y mostraremos la lectura en el monitor serie. El funcionamiento será el
siguiente:
-Inicialmente los indicadores led estarán apagados.
-Debemos hacer que el microcontrolador lea cada medio segundo la tensión entregada por
el sensor y convertir esa tensión a grados como se ha explicado anteriormente.
-Si la temperatura es inferior a 38°C, se encenderá el indicador verde y permanecerá
encendido hasta que se supere esa temperatura. Se mostrará el siguiente mensaje por el
monitor serie: “La temperatura es de X grados.”
-Si la temperatura es igual o superior a 38°C, se encenderá el indicador rojo y empezará a
parpadear con una frecuencia de 200ms hasta que la temperatura vuelva a estar por debajo
de los 38°C. Se mostrará el siguiente mensaje por el monitor serie: “La temperatura es de X
grados. Alarma activada”
Os he dejado junto con la práctica un video del proceso y de cómo podemos simular el
aumento de la temperatura.