Arduino y el termómetro infrarrojo a distancia MLX90614


arduino-sensor-temperatura-infrarrojo-mlx90614

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.

arduino-sensor-temperatura-infrarrojo-mlx90614-componente

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.

arduino-sensor-temperatura-infrarrojo-mlx90614-radiacion-cuerpo-negro

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.

arduino-sensor-temperatura-infrarrojo-mlx90614-interior

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.

arduino-sensor-temperatura-infrarrojo-mlx90614-precision

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í.

arduino-sensor-temperatura-infrarrojo-mlx90614-conexion

En Arduino Uno, Nano y Mini Pro, SDA es el pin A4 y el SCK el pin A5. Para otros modelos de Arduino consultar el esquema patillaje correspondiente.
Verificar que vuestra placa es compatible con 5V antes de conectarla a Arduino. Si no, tendréis que usar un adaptador de nivel lógico.

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.

Anuncio:

Previous Medir cantidad de luxes con Arduino y el luxómetro BH1750
Next 12 motivos por los que deberías borrar Excel de tu empresa
1000
11 Comment threads
4 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
12 Comment authors
newest oldest
JESUS GONZA

Gracias, estupendos tutoriales, claros e instructivos.

Albert Bagué

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.

Xosé

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

luisllamas

Hola, échale un ojo a la entrada sobre el Bus I2C en Arduino https://www.luisllamas.es/arduino-i2c/

luisllamas

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.

abraham

Como Leo dos sensores iguales??

Mario

Excelente tutorial. Se te agradece

Albert

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.

Miguel

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 »

Mermelado

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.

Mariano

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.

javier

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?.