
El MLX90614 es un sensor de temperatura infrarrojo sin de contacto fabricado por la empresa Melexis. Es posible conectar estos sensores con un autómata o procesador como Arduino para medir la temperatura de un objeto a distancia.
Existen distintos modelos del MLX90614 cada uno con un sufijo de tres letras. Los diferentes sensores difieren en el voltaje de operación, el numero de sensores infrarrojos, y la posición del filtro.
La comunicación se realiza a través de SMBus, un subconjunto de bus I2C, por lo que resulta sencilla su lectura, y es posible conectar más de un sensor de forma simultáneamente.
Frecuentemente se encuentran termómetros MLX90614 integrados en módulos como la GY-906 que incorporan la electrónica necesaria para conectarla de forma sencilla a un Arduino. En la mayoría de los módulos, esto incluye un regulador de voltaje que permite alimentar directamente a 5V.
Anuncio:
Este tipo de termómetros infrarrojos tienen un gran número de aplicaciones, incluyendo sistemas de control de temperatura en instalaciones térmicas en edificios, control industrial de temperatura, detección de movimiento, y aplicaciones de salud.
Precio
El MLX90614 es un sensor relativamente caro. Entre los modelos más baratos tenemos el modelo MLX90614ESF-BAA, con una tensión de alimentación de alimentación de 3V, ángulo de 80º, un único sensor infrarrojo y filtro interno. Podemos encontrarlo por unos 4€, buscando en vendedores internacionales de eBay y AliExpress.
El modelo MLX90614ESF-DCI, que tiene un ángulo de visión de 5º, y puede verse en algunos proyectos para "emular" una cámara térmica mediante un barrido, es mucho más caro, unos 20€.
Existe otros módulos con el sensor MLX90615 que es una variación más pequeña del MLX90614, pero en general no estaremos interesados ya que tiene menor precisión y es algo más caro.
¿Cómo funciona el MLX90614
Según la ley de Stefan-Boltzmann, todo objeto por encima del cero absoluto (ºK) emite radiación cuyo espectro es proporcional a su temperatura. El MLX90614 recoge esta radiación y su salida es una señal eléctrica proporcional a la temperatura de todos los objetos en su campo de visión.
Internamente el MLX90614 está constituido con un chip de silicio con una fina membrana micromecanizada sensible a la radiación infrarroja, junto con la electrónica necesaria para amplificar y digitalizar la señal y calcular la temperatura.
El conjunto incluye un amplificador de bajo ruido, un conversor ADC de 17 bits, un DSP (procesador digital de señal) y compensación de la temperatura ambiente.
El MLX90614 viene calibrado de fábrica en un amplio rango de temperaturas: -40 a 85 °C para la temperatura ambiente y -70 a 382 °C para la temperatura de objetos. La precisión estándar es de 0.5 °C referente a la temperatura ambiente, aunque existen versiones médicas que ofrecen una resolución de 0.1ºC en temperaturas entre 35-38ºC.
El MLX90614 dispone de dos modos de salida. La estándar es SMBus, un conjunto del I2C, con una resolución de 0.02ºC. También puede emplear una salida PWM de 10 bits para mediciones continuas, aunque con menor resolución 0.14ºC.
Es importante tener en cuenta la lectura del sensor solo es estable cuando el sensor se encuentra en equilibrio térmico con el ambiente. También puede afectarle la suciedad en la ventana del sensor.
También es importante entender que el MLX90614 es sensible a todos los objetos ubicados en su campo de visión. El ángulo de visión depende del modelo, y varía desde 5º a 80ºC. En el ángulo más amplio de 80º, el área de medición a 0.5 tiene un diámetro de 0.83 metros
Es decir, los modelos de menos ángulo son apropiados para medidas puntuales en frente del sensor. Los sensores de ángulo amplio están diseñados para detectar incrementos de temperatura en una gran zona, por ejemplo, para detección de fallas en maquinaria.
Esquema de montaje
La conexión es sencilla, simplemente alimentamos el módulo desde Arduino mediante GND y 5V y conectamos el pin SDA y SCL de Arduino con los pines correspondientes del sensor.
Mientras que la conexión vista desde el lado de Arduino quedaría así.
Ejemplos de código
Para realizar la lectura del MLX90614 usaremos la librería desarrollada por Sparkfun, disponible en este enlace.
La librería proporciona ejemplos de código, que resulta aconsejable revisar. El siguiente ejemplo es una modificación a partir de los disponibles en la librería, que realiza la lectura del sensor y muestra los resultados por puerto serie.
#include <Wire.h> #include <Adafruit_MLX90614.h> Adafruit_MLX90614 mlx = Adafruit_MLX90614(); void setup() { Serial.begin(9600); mlx.begin(); } void loop() { Serial.print("Ambiente = "); Serial.print(mlx.readAmbientTempC()); Serial.print("ºC\tObjeto = "); Serial.print(mlx.readObjectTempC()); Serial.println("ºC"); delay(500); }
Anuncio:
Gracias, estupendos tutoriales, claros e instructivos.
Estaria muy bien uno para trabajar con Arduino y con pantallas TFT táctiles de 3,2" o 7"...El artículo del del STM32 muy bien.
Gracias a personas como tú, jóvenes, inteligentes y desinteresados; viejos como yo (con 72 años),somos capaces de usar y disfrutar con las nuevas tecnologías. Gracias Lus
Hola, échale un ojo a la entrada sobre el Bus I2C en Arduino https://www.luisllamas.es/arduino-i2c/
Primera pregunta) Debería. Aunque seguramente querrás el modelo de sensor de ángulo más estrecho (aunque son algo más caros)
Segunda pregunta) No te se decir. Como mínimo, que tendrás que portar las librerías, adaptándolas a las características de tu MCU.
Como Leo dos sensores iguales??
Excelente tutorial. Se te agradece
Buenas noches, qué alcance tiene?
Estoy buscando un sensor de este tipo para un proyecto en el que necesito detectar cuerpos o zonas calientes a mas de 100 metros de distancia.
Muchas gracias.
Hola, Luis. Muy interesante el artículo. Me viene al pelo para mi aplicación, porque estoy intentando medir la temperatura de un filtro astronómico, y lógicamente no puedo usar un sensor de contacto porque interferiría en el camino óptico del instrumento. Sin embargo, he estado haciendo pruebas usando el programita de tu artículo y los resultados no son los que me esperaba. He empezado haciendo pruebas con un bloque de bronce, en el que he puesto un MLX90614 para monitorizar la temperatura. El bloque lo caliento desde el otro extremo con una resistencia de potencia. Comparo las medidas con las de… Read more »
Por mi experiencia puedo asegurarte de que este sensor, al menos la versión barara que venden por Aliexpress, no sirve absolutamente para nada, ya no solo porque hay factores como la emisión que rara vez es tenida en cuenta en los proyectos, sino además porque no funcionan bien, para comprobarlo basta que acerques o alejes ligeramente el objeto a medir y verás como la lectura cambia de inmediato. Desconozco si con los de 5 grados pasará igual o no.
Desde luego, los que tienen el ángulo amplio tienen un área de detección muy grande. Depende de para que quieres el uso. Si necesitas una medición "más o menos puntual" el de 5º es mucho mejor (también es mucho más caro que los otros). Y por otro lado, como bien dices, hasta la gente que trabaja con cámaras termográficas piensan que el valor de la medición es absoluto, y se olvidan que hay que calibrarlo para la reflexión del material. Pero vamos, que no es un sensor que me haya dado malos resultados, cumple con las especificaciones del fabricante con… Read more »
Gracias Luis por el articulo. Si me parece interesante este sensor, pero claro hay que tener muy en cuenta el ángulo de visión para la aplicación. El otro tema que me preocupa es si los demás componentes de la pequeña tarjetita(el modulo), podrán soportar la temperatura que entiendo el integrado soporta(125°), yo no necesito tanto pero si el modulo soporta 80° me seria útil, alguien lo ha probado expuesto a temperaturas altas?.
Luis eres un maestro. Soy orientador en colegios de primaria y utilizo la programacion y la robótica para motivar a los niños yvpotencisr su creatividad.
Gracias a ti por tu comentario y, sobretodo, por tu labor de formador 😀
Hola.
Gracias por tus ejemplos.
En este caso el sensor me devuelve siempre 1037.55 y por lo que he leido por ahi es un error.
Me da la sensacion de que es un problema del sensor.
Teneis informacion de como solventarlo?.
¿Pero los pines SDA y SCL no llevan resistencia pull-up? Según la hora de características técnicas debería llevar dos resistencias.
Hola Carlos. Échale un ojo a esta entrada https://www.luisllamas.es/arduino-i2c/ donde vemos el Bus I2C, y explicamos las resistencias de Pull-Up del bus
Sirve para medir las temperaturas en personas??
En general, no tiene precisión suficiente. Hay un variante diseñada para aplicaciones médicas, el MLX90601BAA, pero sólo esta disponible bajo petición previa.
EXCELENTE !!! ... ejemplos claros y precisos !! .... Te felicito por el trabajo realizado ...