← Índice del curso

Sensores y Actuadores · Tema 10

Sensores lineales: LM35, TMP36 y TMP117

Un sensor de temperatura integrado hace por vos el trabajo duro del tema anterior: entrega una tensión proporcional a los grados, o directamente el número por un bus. Se pierde sensibilidad frente al termistor, pero se gana linealidad, simplicidad y, en el caso digital, una exactitud que ningún NTC sin calibrar alcanza.

01 · Punto de partida

Sin curvas que invertir

En el tema 9 vimos que un termistor da una señal enorme pero exponencial: hay que escoger una resistencia fija, un modelo, los coeficientes de tu componente y vigilar el autocalentamiento. Los sensores de temperatura integrados invierten el compromiso: entregan una respuesta casi perfectamente lineal, con la fórmula impresa en la primera página de la hoja de datos, a cambio de una sensibilidad mucho menor (10 mV por grado frente a unos 55 mV por grado de un divisor con NTC).

Los tres sensores de este tema cubren el espectro típico: el LM35, un clásico analógico de escala Celsius directa; el TMP36, analógico con un desplazamiento que le permite medir temperaturas negativas con una alimentación simple; y el TMP117, digital, de 16 bits y alta exactitud. Con ellos se ve de qué depende, en la práctica, la calidad de una medición: del sensor, sí, pero también de la referencia del ADC, del montaje y de la forma de leer.

02 · Por dentro

Cómo mide un sensor integrado

Estos sensores aprovechan una propiedad de los transistores de silicio: la tensión base-emisor VBE de una juntura depende de la temperatura de forma muy regular, bajando unos 2 mV por cada grado. Esa dependencia, por sí sola, tiene un offset grande y varía de un componente a otro. La solución es medir la diferencia de VBE entre dos transistores que trabajan con distinta densidad de corriente. Esa diferencia (ΔVBE) es proporcional a la temperatura absoluta (en kelvin) y casi no depende del componente. A esa señal se la llama PTAT (proportional to absolute temperature).

Dentro del encapsulado, un circuito amplifica y desplaza esa señal para obtener una salida con la escala y el cero deseados: 10 mV por °C que valgan 0 V a 0 °C en el LM35, o 0,5 V a 0 °C en el TMP36. En el TMP117, además, un conversor de 16 bits y la lógica del bus completan el sensor. El resultado es un componente calibrado de fábrica, lo que explica su comodidad y su precio frente a un termistor sin calibrar.

Termistor NTC frente a sensor integrado.
AspectoNTC con divisorSensor integrado lineal
RespuestaExponencial; hay que linealizarLineal; una multiplicación y una suma
SensibilidadAlta (≈ 55 mV/°C con un divisor bien elegido)Baja (10 mV/°C); a veces hay que amplificar
RangoMuy amplio (de −40 a más de 125 °C) según el tipoLimitado por el silicio (de −55 a 150 °C como máximo)
CalibraciónLa tolerancia es del componente; conviene calibrarCalibrado de fábrica
AlimentaciónNinguna (es una resistencia)Necesita alimentación (decenas de microamperios)
AutocalentamientoDepende de la corriente del divisorMuy bajo, fijo por diseño
Tamaño y velocidadMuy pequeño y rápido (en perla)Más grande y lento por el encapsulado

03 · El clásico analógico

LM35

El LM35 entrega una tensión de 10,0 mV por grado Celsius, con 0 V a 0 °C. Su fórmula es la más simple posible: T = V / 0,010. Se alimenta con 4 a 30 V, consume unos 60 µA y su impedancia de salida es muy baja (del orden de décimas de ohm), de modo que alimenta directamente la entrada de un ADC. Viene en encapsulados TO-92 (el de tres patas de plástico negro) y en versiones de montaje superficial.

Las especificaciones principales, según la hoja de datos del fabricante:

  • Exactitud: del orden de ±0,5 °C a 25 °C en la versión básica (±0,25 °C en la versión «A»), y algo peor a lo largo del rango completo.
  • No linealidad: del orden de ±0,25 °C.
  • Autocalentamiento: muy bajo (menos de 0,1 °C en aire quieto).
  • Rango: depende de la versión y de cómo se alimente. Con alimentación simple (la habitual con un microcontrolador), el LM35 básico mide de aproximadamente 2 °C a 150 °C: por debajo, la salida no puede bajar de 0 V y la lectura deja de ser lineal.

Esa última limitación es la más importante en la práctica. La salida de un LM35 no puede ser negativa si no hay una alimentación negativa. Para medir temperaturas bajo cero hay que agregar una fuente negativa y una resistencia de carga, lo que complica el circuito. Si el rango de trabajo incluye temperaturas negativas, el TMP36 (o un sensor digital) es una mejor opción.

const float VREF = 5.0;          // referencia del ADC (V)

float leerLM35() {
    int cuentas = analogRead(A0);
    float volts = cuentas * VREF / 1023.0;
    return volts / 0.010;                   // 10 mV por °C
}

El LM35 tiene un comportamiento delicado con las cargas capacitivas: un cable largo hasta el ADC puede hacerlo oscilar. Si el sensor está a más de un par de metros, la hoja de datos propone un pequeño amortiguador (una resistencia en serie con la salida y un capacitor a masa). Un capacitor de desacople de 100 nF cerca de la alimentación, siempre, es una práctica sana.

04 · El analógico con offset

TMP36

El TMP36 también entrega 10 mV por °C, pero con un desplazamiento de 500 mV: vale 0,5 V a 0 °C, 0,75 V a 25 °C y 1,0 V a 50 °C. La fórmula incluye ese offset:

T = (V − 0,5 V) / 0,010 V/°C

El desplazamiento hace que la salida siga siendo positiva incluso a −40 °C (donde vale 0,1 V), de modo que mide el rango completo de −40 a 125 °C con una sola alimentación. Se alimenta con 2,7 a 5,5 V, así que sirve con un microcontrolador de 3,3 V, y consume unos 50 µA. A cambio, su exactitud es peor que la del LM35: ±1 °C típicos a 25 °C y hasta ±2 °C en todo el rango.

float leerTMP36() {
    int cuentas = analogRead(A0);
    float volts = cuentas * VREF / 1023.0;
    return (volts - 0.5) / 0.010;           // se resta el offset de 500 mV
}
Tensión de salida de los dos sensores analógicos a distintas temperaturas.
TemperaturaLM35TMP36
−40 °CNo mide con alimentación simple0,100 V
0 °C0,000 V (límite inferior; en la práctica mide desde ≈ 2 °C)0,500 V
25 °C0,250 V0,750 V
50 °C0,500 V1,000 V
100 °C1,000 V1,500 V
125 °C1,250 V1,750 V

En el tema 4 vimos qué hace un offset con el rango del ADC: el TMP36 «gasta» 0,5 V de salida para no tener problemas con las temperaturas negativas. Con una referencia de 5 V, ese medio volt es un 10 % del rango del ADC; con la referencia de 1,1 V, es casi la mitad, y limita la medición a 60 °C.

05 · La parte que más falla

Leerlos con el ADC

Los dos sensores analógicos entregan pocos milivolts por grado, así que el ADC decide cuánto de esa calidad llega al programa. Tres factores se combinan:

  • Resolución: con 10 bits y 5 V, un paso son 4,89 mV, es decir, 0,49 °C. Con la referencia interna de 1,1 V, 0,11 °C. Para mejorarla sin cambiar de ADC se amplifica la señal (tema 4) o se promedia (tema 5).
  • Rango: la referencia fija el máximo medible. Con 1,1 V, un LM35 llega a 110 °C y un TMP36 a 60 °C.
  • Exactitud de la referencia: la conversión es cuentas × Vref / 1023. Si el valor real de Vref no coincide con el que supone el programa, el error de ganancia se traslada íntegro a los grados.

El tercer punto es una trampa clásica. La referencia interna del ATmega328P, nominalmente de 1,1 V, tiene una tolerancia de hasta ±10 % entre chips. Si el programa supone 1,100 V pero el chip tiene 1,050 V, una lectura de 20 °C se calcula como 20,97 °C y una de 50 °C como 52,37 °C: un error de ganancia del 4,8 %, mucho mayor que el ±0,5 °C del sensor. La solución es medir la referencia real con un multímetro y usar ese valor en la fórmula, o calibrar con dos puntos (tema 5). Usar Vcc como referencia tiene el mismo problema: 5 V nominales pueden ser 4,85 V con un USB cargado.

Qué esperar del ADC según la referencia (10 bits, sensores de 10 mV/°C).
ReferenciaResoluciónMáximo medibleCuidado
Vcc (5 V)0,49 °CLM35: 500 °C · TMP36: 450 °CLa alimentación varía con la carga y el USB
Vcc (3,3 V)0,32 °CLM35: 330 °C · TMP36: 280 °CÍdem; la alimentación de 3,3 V suele venir de un regulador
Interna de 1,1 V0,11 °CLM35: 110 °C · TMP36: 60 °CTolerancia de ±10 % entre chips: calibrar
Referencia externa de precisiónSegún el valor elegidoSegún el valor elegidoCosto y un componente adicional

Los sensores analógicos son ratiométricos con respecto a nada: su salida no depende de Vcc (tienen su propia referencia interna), a diferencia de un divisor con NTC (tema 9). Por eso, cuando el ADC usa Vcc como referencia, una variación de la alimentación sí altera la lectura, y se arregla con una referencia estable e independiente.

06 · Todo resuelto dentro del chip

TMP117: la versión digital

El TMP117 es un sensor de temperatura digital de alta exactitud que se comunica por I2C (tema 33 del curso de Microcontroladores). Contiene el elemento sensible, el acondicionamiento, un conversor de 16 bits y los registros. Sus datos principales:

  • Resolución: 0,0078125 °C por cuenta (1/128 °C), en un registro de 16 bits con signo.
  • Exactitud: ±0,1 °C entre −20 y 50 °C, y más amplia fuera de ese intervalo (se consulta la tabla de la hoja de datos).
  • Alimentación: de 1,7 a 5,5 V, con consumo del orden de microamperios.
  • Dirección I2C: 0x48 a 0x4B, según cómo se conecte el pin ADD0, de modo que hasta cuatro sensores comparten el bus.
  • Funcionamiento por defecto: conversión continua, una vez por segundo, con promedio de 8 conversiones.
  • Alerta: una salida configurable que avisa al microcontrolador cuando la temperatura sale de un intervalo, sin consultar.

La lectura es trivial: se solicita el registro de temperatura (dirección 0x00), se reciben dos bytes y se interpreta el valor de 16 bits como un entero con signo en complemento a dos. La temperatura es ese entero multiplicado por 0,0078125. Por ejemplo, 0x0C80 son 3200 cuentas, o sea 25,000 °C; 0xFB00 es −1280 cuentas, o sea −10,000 °C.

#include <Wire.h>

const uint8_t DIRECCION = 0x48;          // ADD0 conectado a masa

float leerTMP117() {
    Wire.beginTransmission(DIRECCION);
    Wire.write(0x00);                    // registro de temperatura
    if (Wire.endTransmission(false) != 0) return NAN;     // no respondió
    if (Wire.requestFrom(DIRECCION, (uint8_t)2) != 2) return NAN;

    uint8_t alto = Wire.read();          // dos lecturas separadas: el orden de evaluación
    uint8_t bajo = Wire.read();          // de una expresión con dos read() no está definido
    int16_t bruto = (int16_t)((alto << 8) | bajo);
    return bruto * 0.0078125;
}

Observá tres detalles de robustez. Devolver NAN cuando el sensor no responde evita usar una temperatura inventada. Leer los dos bytes en sentencias separadas evita un error clásico de C++, donde el orden en que se evalúan dos llamadas a read() dentro de una expresión no está garantizado. Y, para verificar que el chip es el esperado, se puede leer el registro de identificación (0x0F), que en el TMP117 vale 0x0117.

07 · Elegir

Comparación y elección

Los tres sensores frente a un NTC (valores típicos de las hojas de datos; verificar en la versión que se compre).
CaracterísticaLM35TMP36TMP117NTC de 10 kΩ
SalidaTensión, 10 mV/°CTensión, 500 mV + 10 mV/°CI2C, 16 bitsResistencia
Rango2 a 150 °C (alimentación simple)−40 a 125 °C−55 a 150 °CTípicamente −40 a 125 °C
Exactitud típica a 25 °C±0,5 °C±1 °C±0,1 °C±0,23 a ±1,1 °C (según tolerancia, sin calibrar)
ResoluciónLa del ADCLa del ADC0,0078 °CLa del ADC y del divisor
Alimentación4 a 30 V2,7 a 5,5 V1,7 a 5,5 VNo necesita
Recursos del microUn canal de ADCUn canal de ADCPuerto I2C (compartible)Un canal de ADC y un divisor
LinealizaciónNo hace faltaNo hace faltaNo hace faltaBeta o Steinhart-Hart
Cable largoPosible con cuidado (carga capacitiva)Posible con cuidadoPoco conveniente (I2C)Posible (resistencia, baja impedancia con buffer)
Costo relativoBajoBajoMedioMuy bajo

Una regla práctica de decisión:

  • LM35 cuando el rango es positivo (0 a 100 °C) y la alimentación es de 5 V o más. Sencillo y bien conocido.
  • TMP36 cuando hay temperaturas negativas o alimentación de 3,3 V, y una exactitud de ±1 a ±2 °C alcanza.
  • TMP117 cuando importa la exactitud (±0,1 °C sin calibrar), la resolución fina o evitar el ADC y su referencia.
  • NTC cuando el sensor debe ser muy pequeño, rápido o barato, o cuando el rango es muy amplio y se acepta calibrar.
  • Para cables largos (varios metros) o muchos sensores en una línea, los sensores de un solo cable como el DS18B20 (tema 12) son más cómodos.

08 · Contabilidad

Presupuesto de error

Armemos el presupuesto del tema 2 para dos sistemas que miden alrededor de 25 °C.

Error de un LM35 con ADC de 10 bits y 5 V, y de un TMP117 por I2C.
FuenteLM35 + ADC (5 V ±1 %)TMP117
Exactitud del sensor±0,50 °C±0,10 °C
Cuantización±0,24 °C (½ LSB)±0,004 °C (despreciable)
Referencia (±1 % de 25 °C)±0,25 °CNo hay
Autocalentamiento< 0,1 °CDespreciable en modo de baja frecuencia
Peor caso≈ ±0,99 °C≈ ±0,10 °C
Suma cuadrática≈ ±0,61 °C≈ ±0,10 °C

El LM35 con ADC sin calibrar es diez veces menos exacto que el TMP117 y, de ese error, el sensor aporta apenas la mitad. Dos conclusiones útiles: mejorar el ADC (más bits) casi no cambia el total, y calibrar la cadena completa contra una referencia (tema 5) puede llevar al LM35 cerca de su límite de ±0,25 °C. El TMP117 evita todo el análisis analógico porque la digitalización ocurre dentro del chip, junto al sensor.

Esta ventaja es grande cuando el ruido eléctrico es alto, porque una tensión de 250 mV por un cable de un metro entre motores es un invitado seguro de interferencia, mientras que un mensaje I2C con dirección y confirmación (ACK) llega íntegro o falla de manera detectable.

09 · Más allá del esquema

Montaje térmico y cableado

Un sensor integrado mide la temperatura de su propio silicio, y el silicio está conectado térmicamente con los cables, la placa y el aire que lo rodea. Para que la lectura refleje lo que querés medir:

  • Acercalo a lo que medís. Para medir un objeto, pegá el sensor con pasta térmica o epoxi conductor térmico; para medir el aire, dejalo expuesto, con circulación.
  • Alejalo del calor propio del circuito. Reguladores, microcontroladores y motores calientan la placa. Un sensor a 2 cm de un regulador lineal que disipa 1 W lee varios grados de más. Ayuda hacerle ranuras a la placa o montarlo en una plaqueta aparte.
  • Considerá la conducción por los cables. Los cables de cobre transportan calor desde o hacia el sensor. Un cable grueso a una temperatura distinta altera la lectura; una remolcada con cables finos y bien aislados reduce el efecto.
  • Esperá el tiempo de respuesta. Un TO-92 en aire quieto necesita decenas de segundos para igualar la temperatura (tema 2). No esperes lecturas estables a los segundos de un cambio.
  • Protegelo de la humedad. Un sensor sumergido o expuesto a condensación necesita estar en una sonda encapsulada (resina, tubo metálico). La conexión eléctrica debe estar sellada.
  • Desacoplá la alimentación con un capacitor de 100 nF junto al sensor y mantené el cable analógico lejos de líneas de potencia o conmutación.

10 · Analogía con programación

Referencia del ADC y decodificación de un registro

Simulemos dos situaciones del tema. Primero, los dos sensores analógicos leídos con un ADC de 10 bits y dos referencias (5 V y 1,1 V), y qué ocurre cuando la referencia interna real es de 1,05 V pero el programa supone 1,1 V. Después, la decodificación del registro de 16 bits del TMP117, con el caso de los números negativos en complemento a dos.

Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.

def adc(volts, vref_real, bits=10):
    maximo = 2**bits - 1
    return max(0, min(maximo, round(volts / vref_real * maximo)))


def lm35(temp):
    return 0.010 * temp                 # tensión del LM35


def tmp36(temp):
    return 0.500 + 0.010 * temp         # tensión del TMP36


def leer_lm35(cuentas, vref):
    return cuentas * vref / 1023 / 0.010


def leer_tmp36(cuentas, vref):
    return (cuentas * vref / 1023 - 0.5) / 0.010


print("Vref    T real   LM35 (cuentas -> °C)    TMP36 (cuentas -> °C)")
for vref in (5.0, 1.1):
    for real in (20, 50):
        c1 = adc(lm35(real), vref)
        c2 = adc(tmp36(real), vref)
        print(f"{vref:3.1f} V   {real:3d} °C    {c1:4d} -> {leer_lm35(c1, vref):6.2f}        {c2:4d} -> {leer_tmp36(c2, vref):6.2f}")

# La referencia interna real es de 1,05 V, pero el programa supone 1,1 V
print()
for real in (20, 50):
    cuentas = adc(lm35(real), 1.05)
    print(f"Referencia real 1,05 V, supuesta 1,1 V: {real} °C se leen {leer_lm35(cuentas, 1.1):.2f} °C")


def tmp117(bruto):
    """Registro de 16 bits en complemento a dos; 1 cuenta = 1/128 °C."""
    if bruto >= 0x8000:
        bruto -= 0x10000
    return bruto * 0.0078125


print()
for bruto in (0x0C80, 0x0000, 0xFB00, 0x7FFF, 0x8000):
    print(f"0x{bruto:04X} -> {tmp117(bruto):9.4f} °C")

Resultado: con 5 V, el LM35 lee 20,04 y 49,85 °C (cuantización de ≈ 0,5 °C por cuenta) y el TMP36 19,89 y 50,20 °C; con 1,1 V ambos coinciden con la realidad en estos valores. Con la referencia real de 1,05 V y la supuesta de 1,1 V, 20 °C se leen 20,97 °C y 50 °C se leen 52,37 °C: un error de ganancia del 4,8 % que ninguna resolución arregla. En el TMP117, 0x0C80 son 25 °C, 0xFB00 son −10 °C, 0x7FFF es el máximo (255,99 °C) y 0x8000 el mínimo (−256 °C). Probá cambiar 1.05 por 1.10 y comprobá que el error desaparece.

La lección es que la fórmula del sensor es la parte fácil: lo que decide la exactitud es la referencia con la que se mide. Con el sensor digital esa dependencia no existe. El modelo supone un sensor perfecto; el real le suma su propia exactitud, el ruido y la deriva.

11 · Exploración interactiva

Tres sensores, un mismo termómetro

Elegí un sensor, fijá la temperatura real y mirá qué recibe el programa: una tensión que se digitaliza (LM35 y TMP36) o un registro de 16 bits (TMP117). Para los analógicos podés cambiar la referencia del ADC y simular que su valor real no coincide con el supuesto; en todos podés incluir el error de exactitud típico del sensor.

Banco de sensores lineales de temperatura

① Señal que entrega el sensor—
② Dato que recibe el programa—
③ Temperatura calculada—
Error de la lectura—
Resolución de la cadena—
Estado
—

El error de exactitud que se agrega al marcar la casilla es un valor fijo dentro de lo que dicen las hojas de datos: +0,4 °C para el LM35, −0,8 °C para el TMP36 y +0,05 °C para el TMP117. Los sensores reales varían de un ejemplar a otro entre esos límites.

Recorrido guiado

  1. Con LM35, 25 °C y 5 V: 250 mV, 51 cuentas, 24,93 °C. La resolución es de 0,49 °C por cuenta. Cambiá a la referencia de 1,1 V: 233 cuentas y 0,11 °C por cuenta.
  2. Con LM35 y 1,1 V, subí la temperatura real a 120 °C: el ADC se satura (110 °C es el máximo) y la lectura se queda en 110 °C. El estado lo indica.
  3. Bajá el LM35 a 0 °C y a −20 °C: con alimentación simple la salida no puede ser negativa, y el programa lee 0 °C. El LM35 no mide temperaturas bajo cero sin una alimentación negativa.
  4. Cambiá al TMP36 a −20 °C: la salida es 0,3 V y la lectura es correcta. A 1,1 V de referencia, subí a 70 °C: la salida pasaría de 1,1 V y el ADC se satura (el máximo es 60 °C).
  5. Con LM35 a 50 °C, poné la referencia nominal en 1,1 V y el valor real un 5 % menor: la lectura sube unos 2,6 °C. El programa interpreta mal la referencia. Repetí con el TMP36: el error es parecido.
  6. Marcá el error de exactitud y comparalo con el TMP117, que mantiene su error de 0,05 °C sin depender de ninguna referencia. Con él, la resolución de 0,0078 °C no se resiente.
  7. Con TMP117, llevá la temperatura a −10 °C: el dato es 0xFB00, un número negativo en complemento a dos. Probá −55 y 150 °C, los extremos de su rango.
Desafío: el sensor para un termómetro de una cámara fría

Un termómetro para una cámara fría debe medir entre −25 y 10 °C con ±0,5 °C, alimentado a 3,3 V. ¿Qué sensor sirve? El LM35 queda descartado (no mide bajo cero con alimentación simple). El TMP36 mide el rango, pero su exactitud de ±1 a ±2 °C no cumple sin calibrar. El TMP117 cumple con holgura la exactitud (±0,1 °C en −20 a 50 °C; consultá la hoja de datos para los −25 °C) y la tensión de alimentación. Una alternativa económica es un TMP36 calibrado con dos puntos (hielo y un patrón), a cambio del trabajo de calibración.

12 · Método de trabajo

Cómo elegir y conectar un sensor integrado

  1. Definí el rango, la exactitud y la alimentación disponible. Con temperaturas negativas, descartá el LM35 de alimentación simple.
  2. Elegí entre analógico y digital. Si exactitud y robustez al ruido importan, digital; si el costo manda y el sensor está cerca del ADC, analógico.
  3. Para analógicos, fijá la referencia del ADC: la que mejor aproveche el rango, medida con multímetro y usada en la fórmula.
  4. Calculá resolución y rango máximo con la fórmula del tema 4 y verificá que el máximo cubra el extremo del rango con margen.
  5. Desacoplá y cableá con criterio: 100 nF junto al sensor, cable corto, amortiguador para cargas capacitivas si hace falta.
  6. Pensá en el montaje térmico: contacto con lo medido, distancia a fuentes de calor y tiempo de respuesta.
  7. Validá la lectura: descartá valores fuera del rango físico, filtrá (tema 5) y tratá la falta de respuesta del sensor digital como falla.
  8. Calibrá si la aplicación lo exige contra un patrón, en al menos dos puntos del rango.

Si la lectura de un sensor analógico está desplazada o es inestable, medí primero la tensión del sensor con el multímetro y la referencia con el mismo instrumento. Con eso se sabe si el problema está en el sensor, en la referencia o en el programa.

13 · Comprensión

Confusiones frecuentes

«Un sensor lineal es siempre más exacto que un termistor»

No: es más cómodo, no necesariamente más exacto. Un LM35 con ADC sin calibrar tiene un error del orden de ±1 °C en el peor caso; un NTC al 1 % calibrado puede ser mejor. Lo que cambia es dónde está el esfuerzo.

«El LM35 mide de −55 a 150 °C»

Eso vale para la versión con alimentación dual (positiva y negativa). Con una alimentación simple, que es lo habitual con un microcontrolador, mide aproximadamente de 2 a 150 °C.

«La resolución del ADC define la exactitud»

Define el escalón. Con una referencia mal conocida, el error de ganancia puede superar con creces el escalón. Un ADC de 16 bits con una referencia con ±5 % de error sigue midiendo con un 5 % de error.

«La referencia interna de 1,1 V vale exactamente 1,1 V»

Tiene una tolerancia de hasta ±10 % entre chips. Hay que medirla (o calibrar el sistema) y usar el valor real.

«El sensor digital hace una lectura nueva con cada consulta»

Devuelve el último resultado de una conversión que corre a su propio ritmo (por defecto, una por segundo en el TMP117). Consultar más rápido solo repite el dato.

«El sensor mide la temperatura del aire que lo rodea»

Mide la de su propio silicio, influida por los cables, la placa y los componentes cercanos que se calientan. Para que mida el aire, el montaje tiene que ayudar.

14 · Práctica guiada

Predecí antes de comprobar

1. LM35 con referencia interna

Un LM35 se lee con la referencia de 1,1 V y el ADC entrega 210 cuentas. ¿Qué temperatura calcula el programa y cuál es la temperatura máxima que puede medir?

Ver solución

V = 210 × 1,1 / 1023 ≈ 0,2258 V → T = 0,2258 / 0,010 ≈ 22,6 °C. El máximo corresponde a 1023 cuentas: 1,1 V / 0,010 = 110 °C.

2. TMP36 a 3,3 V

Un TMP36 mide 30 °C y se lee con un ADC de 10 bits con referencia de 3,3 V. ¿Qué tensión entrega, cuántas cuentas se obtienen y cuál es la resolución en °C?

Ver solución

V = 0,5 + 0,010 × 30 = 0,800 V. Cuentas = 0,8 / 3,3 × 1023 ≈ 248. Resolución = 3,3 / 1023 / 0,010 ≈ 0,32 °C por cuenta.

3. Rango con referencia de 1,1 V

¿Hasta qué temperatura puede medir un TMP36 con la referencia interna de 1,1 V? ¿Y desde cuál? ¿Convendría esa referencia para un termómetro de interior?

Ver solución

Máximo: (1,1 − 0,5) / 0,010 = 60 °C. Mínimo: la salida llegaría a 0 V a −50 °C, pero el sensor solo especifica hasta −40 °C. Para un termómetro de interior (0 a 40 °C) conviene: mejora la resolución a 0,11 °C, siempre que se mida o calibre la referencia real.

4. Decodificar el TMP117

Los dos bytes recibidos son 0x0A y 0x00 (primero el alto). ¿Qué temperatura indica? ¿Y si fueran 0xFF y 0x00?

Ver solución

0x0A00 = 2560 cuentas × 0,0078125 = 20,0 °C. 0xFF00 es un valor negativo en complemento a dos: 0xFF00 − 0x10000 = −256 cuentas × 0,0078125 = −2,0 °C.

5. Referencia equivocada

El programa supone 1,100 V pero la referencia real es 1,050 V. Un LM35 está a 25 °C. ¿Qué temperatura calcula el programa? ¿Qué error relativo es?

Ver solución

Tensión real: 0,250 V. Cuentas = 0,25 / 1,05 × 1023 ≈ 244. El programa calcula 244 × 1,1 / 1023 / 0,010 ≈ 26,2 °C: un error de +1,2 °C, equivalente al 4,8 % (1,1/1,05 − 1). Es un error de ganancia: crece con la temperatura.

6. Elegir sensor

Elegí el sensor más adecuado para: (a) medir −20 °C a 40 °C con una sola alimentación de 3,3 V y poco presupuesto; (b) ±0,1 °C sin calibrar en un instrumento de laboratorio; (c) un sensor a 5 m del microcontrolador en un ambiente con motores.

Ver solución

(a) TMP36: mide negativos con alimentación simple y funciona a 3,3 V; su exactitud de ±1 °C o más se mejora calibrando. (b) TMP117: ±0,1 °C de fábrica. (c) Ni el LM35 ni un I2C cómodo a esa distancia: un sensor de un cable como el DS18B20 (tema 12), o un sensor con transmisor, soporta mejor el cable largo y el ruido.

15 · Síntesis

Ideas para recordar

  • Los sensores integrados usan la diferencia de VBE de dos transistores (señal PTAT), proporcional a la temperatura absoluta, y vienen calibrados de fábrica.
  • El LM35 entrega 10 mV/°C sin offset; con alimentación simple mide aproximadamente de 2 a 150 °C y no puede medir temperaturas negativas.
  • El TMP36 entrega 500 mV + 10 mV/°C y mide de −40 a 125 °C con alimentación simple, con ±1 a ±2 °C de exactitud.
  • El TMP117 es digital (I2C, 16 bits, 1/128 °C por cuenta, ±0,1 °C entre −20 y 50 °C) y su dato se decodifica como un entero con signo en complemento a dos.
  • Con sensores analógicos, el ADC decide la calidad: resolución, rango máximo y, sobre todo, exactitud de la referencia.
  • Una referencia mal conocida produce un error de ganancia que no se corrige con más bits; la interna de 1,1 V tiene hasta ±10 % de tolerancia.
  • El sensor digital evita la referencia del ADC, el ruido de la tensión analógica y gran parte del presupuesto de error.
  • El sensor mide la temperatura de su propio silicio: el montaje térmico, los cables y los componentes que se calientan cuentan tanto como la electrónica.
  • Para cables largos y ambientes ruidosos conviene convertir en el lugar y transportar datos digitales, no milivolts.

¿Listo para el tema 11?

Antes de avanzar, calculá la temperatura que da un LM35 con una lectura de 62 cuentas y 5 V, explicá por qué un LM35 con alimentación simple no mide −10 °C y describí cómo se interpreta el registro 0xFB00 de un TMP117. Si podés justificar las tres respuestas, ya sabés leer los sensores integrados.

En el próximo tema pasamos a los sensores de alta exactitud y de rango amplio: los RTD (PT100 y PT1000) y los termopares, con sus puentes, la compensación de unión fría y los amplificadores dedicados.