INFORMACIÓN
La Cámara Térmica MLX90640 de Matriz IR de 32×24 es un sensor de imágenes térmicas de alta precisión que permite detectar la radiación infrarroja de objetos en su campo de visión sin contacto físico. Basada en una matriz de 32×24, con un total de 768 píxeles térmicos, este dispositivo ofrece una precisión significativamente mayor que los sensores de punto único, permitiendo visualizar gradientes de temperatura y formas de calor en tiempo real. Gracias a su interfaz de comunicación I2C y su capacidad de medir temperaturas desde los -40°C hasta los 300°C, es la herramienta ideal para integrar visión térmica en sistemas embebidos sin la complejidad o el costo de una cámara térmica industrial.
El sensor MLX90640 es ampliamente utilizado en el mantenimiento predictivo para la detección de puntos calientes en tableros eléctricos o maquinaria, sistemas de seguridad para detección de presencia humana incluso en total oscuridad, y en el monitoreo de procesos industriales donde el control de temperatura es crítico. Asimismo, es excelente para proyectos de eficiencia energética en edificios para localizar fugas de calor, desarrollo de dispositivos médicos de pre-diagnóstico térmico, sistemas de extinción de incendios inteligentes y aplicaciones de robótica avanzada que requieran navegación basada en firmas de calor.
Gracias a su comunicación mediante I2C, es compatible con una amplia gama de tarjetas de desarrollo, incluyendo Arduino (Uno, Nano, Mega), ESP8266, ESP32, Raspberry Pi, STM32 y Teensy, lo que permite integrarlo fácilmente en proyectos educativos, industriales y de investigación que requieran mediciones precisas de temperatura a distancia.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Tipo: Cámara térmica de matriz infrarroja.
- Sensor: MLX90640.
- Resolución de Matriz: 32 x 24 píxeles (768 píxeles totales).
- Voltaje de Operación: 3.0V a 3.6V (Típico 3.3V).
- Consumo de Corriente: 20 mA (máximo 28 mA).
- Rango de Medición de Temperatura: -40°C a 300°C.
- Rango de Temperatura de Operación: -40°C a 85°C.
- Precisión: 1°C
- Frecuencia de Actualización: Configurable de 0.5 Hz hasta 64 Hz.
- Campo de Visión (FOV):
- FOV 55º: 55° x 35° (Ángulo estrecho, mayor alcance).
- FOV 110º: 110° x 75° (Gran angular, visión periférica).
- Interfaz de Comunicación: I2C (Velocidad de hasta 1 MHz) y UART.
- Dirección I2C Predeterminada: 0x33.
- Dimensiones:
- FOV 110º: 15.5 mm x 25 mm x 11.8 mm
- FOV 55º: 15.5 mm x 25 mm x 17.4 mm
- Peso:
- FOV 110º: 7.2 g
- FOV 55º: 7.93 g
DOCUMENTACIÓN Y RECURSOS
Dimensiones
INFORMACIÓN ADICIONAL
Conexión de la Cámara Térmica MLX90640 con Raspberry Pi 5
Realiza la siguiente conexión:
|
![]() |
Dependencias
Necesitarás las siguiente dependencias, ejecuta en la terminal:
sudo apt update
sudo apt install -y
python3
python3-venv
python3-dev
build-essential
i2c-tools
python3-lgpio
Crea un ambiente de trabajo y su entorno virtual de python:
mkdir mlx90640_ws cd mlx90640_ws echo -e "adafruit-blinkanadafruit-circuitpython-mlx90640nnumpynmatplotlibnrpi-lgpio" > requirements.txt python3 -m venv venv --system-site-packages source venv/bin/activate pip install --upgrade pip pip install -r requirements.txt
Código
Crea un archivo mlx90640_video.py (por ejemplo):
touch mlx90640_video.py nano mlx90640_video.py
y pega el siguiente código:
import time
import board
import busio
import numpy as np
import adafruit_mlx90640
import matplotlib.pyplot as plt
def initialize_sensor():
i2c = busio.I2C(board.SCL, board.SDA, frequency=100000)
mlx = adafruit_mlx90640.MLX90640(i2c)
mlx.refresh_rate = adafruit_mlx90640.RefreshRate.REFRESH_4_HZ
return mlx
def setup_plot():
plt.ion()
fig, ax = plt.subplots(figsize=(12, 7))
therm1 = ax.imshow(np.zeros((24, 32)), vmin=0, vmax=60, cmap='inferno', interpolation='bilinear')
cbar = fig.colorbar(therm1)
cbar.set_label('Temperatura [°C]', fontsize=14)
plt.title('Imagen térmica')
return fig, ax, therm1
def update_display(fig, ax, therm1, data_array):
therm1.set_data(np.fliplr(data_array))
therm1.set_clim(vmin=np.min(data_array), vmax=np.max(data_array))
ax.draw_artist(ax.patch)
ax.draw_artist(therm1)
fig.canvas.update()
fig.canvas.flush_events()
def main():
mlx = initialize_sensor()
fig, ax, therm1 = setup_plot()
frame = np.zeros((24*32,))
t_array = []
max_retries = 5
while True:
t1 = time.monotonic()
retry_count = 0
while retry_count < max_retries:
try:
mlx.getFrame(frame)
data_array = np.reshape(frame, (24, 32))
update_display(fig, ax, therm1, data_array)
plt.pause(0.001)
t_array.append(time.monotonic() - t1)
print('Frecuencia de muestreo: {0:2.1f}fps'.format(len(t_array) / np.sum(t_array)))
break
except ValueError:
retry_count += 1
except RuntimeError as e:
retry_count += 1
if retry_count >= max_retries:
print(f"Fallo después de {max_retries} intentos. Error: {e}")
break
if __name__ == '__main__':
main()
Y ejecútalo con:
python3 mlx90640_video.py

Diferencia de imagen entre lentes
|
FOV 110º
|
FOV 55º
|
Recomendaciones de uso
El sensor se comunica mediante el protocolo I2C, tiene una dirección predeterminada de 0x33. Se recomienda usar una velocidad de bus I2C de 400 kHz (Fast Mode) o incluso 1 MHz para lograr tasas de refresco fluidas (8Hz o superiores).
Gradientes Térmicos: Evita colocar componentes que generen mucho calor (como reguladores de voltaje o procesadores) justo detrás o muy cerca del sensor. El calor del propio PCB puede “engañar” al sensor, desplazando la precisión de la medición ambiental.
Orientación del Campo de Visión:
- Usa el modelo BAA (55°) si necesitas medir objetos a distancias medias (1 a 3 metros) con mayor detalle.
- Usa el modelo BAB (110°) para monitoreo de áreas amplias o habitaciones completas a distancias cortas.

46122 Clavijas Planas de Hule Volteck
Cargador de Pared para Baterías Li-ion 18650 26650 17670
Raspberry Pi RP2040 4 MB USB Tipo C
Convertidor RS232 TTL DB9 MAX3232
Pistola de Aire Caliente 2000W 110V 60-600°C
Due Core ATmel Arm compatible con Arduino
Bateria LiPo 3.7V 400mAh 602035
Kit Robotuga STEAM
Kit Brazo Mecánico con Garra de 4DOF

















Valoraciones
No hay valoraciones aún.