LM75 Sensor de Temperatura I2C IIC Interfaz de Alta Precisión

[LM75] LM75 Sensor de Temperatura I2C IIC Interfaz de Alta Precisión

https://electrofranko.com/web/image/product.template/54871/image_1920?unique=ebf0e31

S/ 15.00 15.0 PEN S/ 15.00

S/ 15.00

Not Available For Sale

Esta combinación no existe.

Términos y condiciones
Envío: 2-3 días laborales


Referencia Interna: LM75

Módulo Sensor de Temperatura Digital I2C (LM75)

Transductor térmico digital con interfaz de bus I2C, resolución de 9 bits y pin de alerta programable.

El módulo sensor de temperatura LM75 es un digitalizador térmico integrado de alta precisión que se comunica mediante el bus serie bidireccional I2C (TWI). Incorpora un convertidor analógico-digital (Delta-Sigma ADC) interno de 9 bits que transforma las lecturas de temperatura de manera directa, ofreciendo un factor de escala digitalizado sin errores de atenuación de línea analógica. Una de sus principales prestaciones es el pin de salida para interrupción por sobretemperatura (OS), que funciona de manera autónoma como termostato programable con histéresis regulable. Gracias a sus tres pines de dirección configurables, permite conectar hasta 8 sensores de manera simultánea en el mismo bus de datos, ideal para la gestión térmica de gabinetes, servidores y sistemas de automatización industrial.

Especificaciones Técnicas

Parámetro Detalle
Tensión de OperaciónDC 2.7 V a 5.5 V
Consumo de Corriente~250 µA (Activo) / 3.5 µA (Shutdown)
Rango de Medición-55 °C a +125 °C
Resolución del ADC9 bits (Pasos discretos de 0.5 °C)
Precisión Térmica±2 °C (-25 °C a 100 °C) | ±3 °C (Extremos)
Interfaz de BusI2C / TWI Estándar de 2 hilos
Parámetro Detalle
Dirección I2C Base0x48 (Configurable hasta 0x4F vía A0,A1,A2)
Frecuencia de Reloj SCLHasta 400 kHz (Fast Mode)
Salida de Alerta (OS)Drenador abierto (Open-drain) programable
Modos de Alerta OSModo Comparador / Modo Interrupción
Dimensiones del PCB21 mm x 12 mm x 10 mm
Asignación de PinesVCC, GND, SDA, SCL, OS (Alerta)

Diagrama de Conexiones y Mapeo de Pines

Diagrama de Conexión LM75

Ventajas del Módulo

Inmunidad Total al Ruido en la Línea: Al transmitir de forma puramente digital mediante protocolo I2C, la señal no sufre caídas de tensión ni interferencias electromagnéticas a lo largo del cableado, a diferencia de los sensores analógicos convencionales.

Termostato Autónomo por Hardware: El terminal OS (Overtemperature Shutdown) puede disparar directamente un relé, alarma o transistor de enfriamiento de manera independiente, sin requerir la intervención constante del microcontrolador principal.

Arquitectura Multidispositivo Escalable: Gracias a los puentes de soldadura para las líneas de direccionamiento (A0, A1, A2), se pueden leer hasta 8 zonas térmicas independientes utilizando únicamente dos pines digitales del microcontrolador.

Código Arduino Completo y Optimizado

// Código de Control Avanzado y Telemetría Completa para el Sensor LM75 I2C // Implementa lectura directa de registros por bus Wire, conversión de 9 bits con signo y diagnóstico #include <Wire.h> // Dirección fija por defecto del LM75 (Pines de dirección A0, A1, A2 conectados a GND) const int direccionLM75 = 0x48; // VARIABLES DE SEGUIMIENTO Y PARÁMETROS CONFIGURABLES (Líneas extendidas adicionadas) float temperaturaMaxima = -100.0; // Registro del pico térmico más elevado en la sesión float temperaturaMinima = 200.0; // Registro de la caída térmica más baja en la sesión unsigned long conteoLecturas = 0; // Contador secuencial de ciclos de bus ejecutados unsigned long conteoErroresI2C = 0; // Historial de fallos de transmisión detectados en la línea unsigned long tiempoAnterior = 0; // Marcador de tiempo para ejecución síncrona const unsigned long intervaloMuestreo = 1200; // Intervalo de refresco en milisegundos void setup() { Serial.begin(9600); Wire.begin(); // Inicialización de la librería Wire como maestro del bus I2C Serial.println("--- Bus de Instrumentación Térmica Digital LM75 Inicializado ---"); Serial.println("Estabilizando líneas SDA y SCL. Esperando transferencia de tramas..."); Serial.println("-----------------------------------------------------------------"); } void loop() { unsigned long tiempoActual = millis(); // Ejecución temporizada precisa sin bloqueo del procesador central if (tiempoActual - tiempoAnterior >= intervaloMuestreo) { tiempoAnterior = tiempoActual; conteoLecturas++; // Apertura de comunicación con el dispositivo esclavo apuntando al registro 0x00 (Temperatura) Wire.beginTransmission(direccionLM75); Wire.write(0x00); // Selección del puntero de registro de temperatura interna byte codigoRetorno = Wire.endTransmission(); // Verificación estructural de la presencia y respuesta del dispositivo en el bus if (codigoRetorno != 0) { conteoErroresI2C++; Serial.print("[ ALERTA I2C: Fallo "); Serial.print(codigoRetorno); Serial.println(" ] Dispositivo LM75 no responde en la dirección asignada. Verifique cableado."); return; } // Solicitud secuencial de los 2 bytes que componen la lectura de 9 bits del LM75 Wire.requestFrom(direccionLM75, 2); if (Wire.available() >= 2) { byte msb = Wire.read(); // Byte de peso mayor: Contiene la parte entera y el bit de signo byte lsb = Wire.read(); // Byte de peso menor: El bit 7 representa la fracción decimal de 0.5 °C // ALGORITMO DE DECODIFICACIÓN BINARIA Y EXTENSIÓN DE SIGNO DE 9 BITS // Fusionamos ambos bytes alineando los datos correspondientes en un entero de 16 bits int datosCrudos = (msb << 8) | lsb; // Desplazamos 7 bits a la derecha dado que el LM75 justifica sus datos a la izquierda int valorTemperatura = datosCrudos >> 7; float temperaturaCelsius = 0.0; // Evaluación del bit de signo (Bit indexado 8 en la lectura final de 9 bits) if (valorTemperatura & 0x100) { // Si el signo es negativo, se realiza una máscara complementaria para preservar el signo en el entero valorTemperatura |= 0xFE00; } // Multiplicación por la resolución del paso mínimo del convertidor (0.5 °C por unidad) temperaturaCelsius = valorTemperatura * 0.5; // ACTUALIZACIÓN DE COMPORTAMIENTO MÁXIMO Y MÍNIMO (Líneas extendidas adicionadas) if (temperaturaCelsius > temperaturaMaxima) { temperaturaMaxima = temperaturaCelsius; } if (temperaturaCelsius < temperaturaMinima) { temperaturaMinima = temperaturaCelsius; } // Impresión de datos formateados y registros de bytes crudos para diagnóstico de laboratorio Serial.print("Lectura No: "); Serial.print(conteoLecturas); Serial.print(" | Tramas Hex: [MSB:0x"); if(msb < 0x10) Serial.print("0"); Serial.print(msb, HEX); Serial.print(" LSB:0x"); if(lsb < 0x10) Serial.print("0"); Serial.print(lsb, HEX); Serial.print("]"); Serial.print(" | Temperatura: "); Serial.print(temperaturaCelsius, 1); Serial.println(" °C"); // Transmisión histórica de extremos registrados durante el ciclo operativo Serial.print("-> Récord Operativo [ Mín: "); Serial.print(temperaturaMinima, 1); Serial.print(" °C | Máx: "); Serial.print(temperaturaMaxima, 1); Serial.println(" °C ]"); // Diagnóstico de estabilidad del bus I2C (Líneas extendidas adicionadas) Serial.print("Estado del Bus: "); Serial.print(conteoErroresI2C); Serial.println(" anomalías físicas de bus filtradas desde el arranque."); Serial.println("-----------------------------------------------------------------"); } else { Serial.println("[ ERROR: Desbordamiento del búfer de lectura I2C, bytes insuficientes ]"); } } }