Icono del sitio Programar fácil con Arduino

Termómetro infrarrojo con Arduino MLX90614

El MLX90614 termómetro infrarrojo con Arduino UNO te permite hacer mediciones de temperatura sin la necesidad de estar en contacto con la superficie.

Es una manera eficaz de hacer mediciones de temperatura en situaciones donde es complicado tener acceso a la superficie que se quiere medir.

Sin embargo, la tecnología que se esconde detrás del termómetro infrarrojo con Arduino no es sencilla. Se basa en la Ley de Stefan-Boltzmann y de cómo un cuerpo emite radiación infrarroja que es proporcional a su temperatura.

En este artículo hablaré de cómo funciona un termómetro infrarrojo y cómo utilizarlo con Arduino y ESP8266. Primero hay que entender qué es y su principio básico y luego ponerlo en práctica gracias a las tecnologías libres.

Esta es una de las ventajas detrás de Arduino y ESP8266, que nos permiten conocer técnicas y tecnologías que, hasta hace bien poco, solo estaban al alcance de unas pocas personas.

Cómo funciona un termómetro infrarrojo

Recuerdo cuando mi hija era un bebé. Era cabezota como su padre. Bueno, lo sigue siendo. No se dejaba poner el termómetro bajo ningún concepto. Me refiero a un termómetro de los típicos de contacto.

Un día fuimos a la farmacia, preguntamos a la farmaceútica y como buen padre primerizo compré el mejor termómetro de infrarrojos que había. Eso sí, este no llevaba un Arduino dentro.

Lo solemos usar cuando alguien de la familia está malo. Incluso mi hija lo utiliza para ver si tienen fiebre sus muñecas.

Desde que lo compré siempre me he preguntado cómo funciona un termómetro infrarrojo.

Y buscando un día por Internet descubrí el termómetro infrarrojo MLX90614 que mide la temperatura sin contacto. Así que pedí uno en Amazon y me puse a investigar sobre el MLX90614.

El artículo de hoy es el resultado de toda esa investigación.

El termómetro infrarrojo sirve para medir la temperatura de una superficie. Si necesitas medir la temperatura en el interior de un objeto debes utilizar un sensor de temperatura tipo sonda como el DS18B20 o el HDC1080. Esto es debido a que el haz infrarrojo rebota en la superficie y no atraviesa el objeto.

Se utiliza para uso médico, para uso alimenticio, para uso agrícola o para medir la temperatura de un equipo o dispositivo.

Esta última función es muy importante ya que puede prevenir problemas dentro de las máquinas y la electrónica. Sobre todo cuando la superficie a controlar no es accesible para medir con un termómetro de contacto.

El termómetro infrarrojo se ha vuelto muy popular. Puedes encontrar de diferentes precios, calidades y prestaciones. Incluso hay un termómetro infrarrojo que se conecta a una app móvil.

Principio básico del termómetro infrarrojo

La temperatura del ser humano está entre los 36ºC y los 37,2ºC. Por debajo de ese rango puedes sufrir hipotermia y por encima lo mismo tienes fiebre.

¿Cómo un termómetro de infrarrojo puede saber que tu cuerpo está a 36ºC?

Para contestar a esta pregunta hay que encogerse como en la película de los ochenta Cariño he encogido a los niños.

Las moléculas que hay dentro de nuestro cuerpo o de cualquier objeto no se están quietas. Se mueven como los chiquillos cuando tienen sobredosis de chocolate en un parque de bolas. No se están quietos aunque los ates.

A las moléculas les pasa igual. Además, cuando se mueven, emiten radiación infrarroja. Esta radiación se encuentra por debajo del espectro visible de la luz y por lo tanto nosotros, los seres humanos, no la podemos ver.

Cuanta más temperatura tiene el cuerpo o el objeto, más rápido se mueven las moléculas y más radiación infrarroja emite dicho cuerpo. Incluso si consigues calentar mucho un cuerpo puede llegar a emitir luz visible.

Fíjate en los grandes hornos de las acerías cuando funden metales. Al calentar tanto el metal puede brillar en color rojo e incluso en blanco.

Todo esto lo descubrieron los físicos austriacos Jozef Stefan y Ludwig Boltzmann y lo llamaron la Ley de Stefan-Boltzmann.

Básicamente esta ley viene a decirnos que cualquier objeto o cuerpo que esté por encima del cero absoluto (0º Kelvin o -273ºC) emite radiación infrarroja. Esta radiación que emite es directamente proporcional a la temperatura. Ojo que esto es importante, subrayo lo de proporcional.

Un termómetro infrarrojo es capaz de detectar esta radiación y convertirla en una temperatura. Realmente lo que hace el termómetro de infrarrojos es calcular la diferencia entre la radiación IR que emite el objeto y la del entorno que lo rodea. En base a esa diferencia, calcula la temperatura.

Creo que más o menos queda claro el principio físico que se esconde detrás pero ¿cómo un sensor puede llegar a medir una radiación infrarroja y la convierte en un número podemos ver en el monitor serie por ejemplo?

Funcionamiento eléctrico del termómetro de infrarrojos

Si bien el principio que se esconde detrás del termómetro infrarrojo es relativamente sencillo, la tecnología que hace que estos dispositivos funcionen es ciertamente compleja y se sale fuera de mis conocimientos.

Por eso voy a explicarlo de una forma muy simple. Siempre puedes acudir a la documentación técnica para profundizar sobre el funcionamiento de un termómetro infrarrojo.

Para poder detectar la luz o radiación infrarroja, el termómetro IR apunta al objeto del cual quiere medir la temperatura. Toda esa radiación se canaliza hacia un detector que se conoce como termopila.

Este detector, termopila, se encarga de convertir la radiación infrarroja en calor y luego se convierte en electricidad. Esta electricidad es proporcional a la radiación infrarroja.

Por lo tanto, si medimos adecuadamente la electricidad que genera la termopila, podremos saber la temperatura del objeto.

A parte de la termopila, el termómetro infrarrojo tiene otros componentes eléctricos que permiten hacer toda esta conversión de forma adecuada.

Todo esto suele venir presentado dentro de un circuito eléctrico o módulo. Hay varios modelos que se diferencian, sobre todo, en las características técnicas.

Yo te voy a hablar del termómetro infrarrojo MLX90614 y de sus diferentes variantes.

Características técnicas del MLX90614

Como siempre, si quieres profundizar en las características técnicas del termómetro infrarrojo MLX90614, te recomiendo que acudas a la hoja de características técnicas o datasheet.

Todo lo que vas a leer a continuación está sacado de esa hoja de características técnicas.

El nombre MLX90614 hace referencia a una familia de termómetros infrarrojos. Dentro de esta familia hay varios modelos. Se identifican por un sufijo de 3 letras. Lo puedes identificar si miras el canto del MLX90614.

En ese canto podrás ver una numeración y las 3 letras que identifican el modelo de termómetro infrarrojo. Intenta averiguar qué 3 letras son. Yo por ejemplo utilizo mi móvil como lupa y va muy bien.

Lo típico es que este tipo de módulos tengan el MLX90614BAA pero asegúrate del sensor ya que las características técnicas del termómetro infrarrojo varían según esta numeración.

Los datos técnicos que voy a comentar a continuación se basan en este modelo concreto.

MLX90614 rango de temperaturas y precisión

Es importante fijarse en el rango de temperaturas que puede medir un termómetro infrarrojo como el MLX90614. Dependiendo de lo que quieras medir, deberás elegir un modelo u otro.

El modelo BAA del termómetro infrarrojo MLX90614 admite un rango de temperaturas de -40ºC a 125ºC para la temperatura ambiente y de -70ºC a 380ºC para la temperatura en la superficie de objetos.

Respecto a la precisión depende del rango de temperaturas que esté midiendo. En la siguiente tabla obtenida de la hoja de características técnicas hay un resumen de las precisiones.

En el eje X se representan las temperaturas ambiente (Ta). En el eje Y se representa la temperatura del objeto (To).

Puedes ver cómo la precisión entre el rango 180ºC y 380ºC es entorno a los ±4ºC. Esto se debe a que normalmente, la precisión empeora a temperaturas muy altas o bajas.

Este tipo de sensores es para lo que es. Si necesitas tener más precisión deberás buscar un termómetro infrarrojo acorde con tus necesidades pero tienes que ser consciente que deberás pagarlo.

Existe una versión del MLX90614 con una precisión adecuada para aplicaciones médicas. La ventaja de este modelo es que en el rango entre 16ºC y 40ºC tiene una precisión de ±0,3ºC.

Precisión del modelo MLX90614DAA para uso médico

Precisamente ese es el rango de la temperatura normal del cuerpo humano.

Alimentación y consumo del termómetro infrarrojo MLX90614

La información que voy a mostrar a continuación hace referencia al modelo BAA. Si tienes otro modelo debes acudir a la hoja de características técnicas donde he sacado esta información.

Allí podrás encontrar toda la información técnica para tu modelo de MLX90164.

Como puedes ver en la imagen anterior, el voltaje de operación del modelo MLX90614 BAA es de entre 2,6V y 3,6V. Recomendado alimentar con un voltaje de 3V.

Compatible con las típicas placas de Arduino y con la placa del ESP8266, NodeMCU. Sin embargo, leerás en muchos blogs que el MLX90614 se puede alimentar con un voltaje de 5V.

Y eso es un error. Vuelvo a repetir que el voltaje de operación es de entre 2,6V y 3,6V pero ¿por qué se puede alimentar con un voltaje de 5V?

Porque normalmente este tipo de componentes llevan lo que se conoce como LDO o regulador de tensión. Ya lo vimos con las pantallas OLED con Arduino.

En este caso yo no he conseguido descifrar el modelo pero siempre que veas un componente de la forma que te muestro en la siguiente imagen, quiere decir que está utilizando un regulador de tensión.

Esto es un gran inconveniente ya que tira al traste los datos de consumo que nos proporciona la hoja de características. Aunque el termómetro infrarrojo consuma 1,3 mA en modo normal y 2,5 µA en modo de reposo, hay que tener en cuenta el consumo del regulador de tensión.

Ojo, que existe una versión que funciona a 5V. Me refiero a la alimentación directa del termómetro infrarrojo MLX90614. Pero no es la BAA.

Campo de visión y tamaño del objeto

Un factor crítico en los termómetros infrarrojos es el campo de visión y la distancia del objeto que se desea medir. Estos dos factores afectan directamente en la precisión del dispositivo.

Cada termómetro infrarrojo tiene un campo de visión conocido como FOV (del inglés Field Of View) que no es más que un ángulo de visión en el que se promedian todas las temperaturas que ve el sensor.

Imagínate esta situación.

El objeto A al estar cerca del termómetro infrarrojo llena el campo de visión por completo. La única temperatura que ve es la del objeto A y por lo tanto promedia dicha temperatura.

En esta situación el termómetro infrarrojo será bastante preciso.

Sin embargo, si el objeto A desaparece, el objeto B y el muro comparten el campo de visión. El termómetro de infrarrojo obtendrá el promedio de la temperatura entre el objeto B y el muro. Esto afectará en la precisión de la temperatura obtenida por el termómetro infrarrojo.

Por lo tanto, dependiendo de las características del termómetro, se obtendrá una precisión mayor o menor según el objeto esté más o menos cerca y del campo de visión que abarque.

Por norma general, el campo de visión de los termómetros infrarrojos tienen forma de cono.

El MLX90614 en la versión BAA tiene un campo de visión relativamente amplio. Unos 90º. Esto quiere decir que por cada centímetro que se aleja de un objeto, el área de detección aumenta dos centímetros.

Si por ejemplo el termómetro infrarrojo está a 50 cm del objeto, el área de detección será de 100 cm o 1 metro.

Lo recomendable es tomar medidas lo más cerca posible del objeto para que no afecte a la precisión.

Y con esto ya tenemos más o menos claro cómo funciona este tipo de sensores. El siguiente paso es probarlo con un Arduino.

Cómo conectar MLX90614 termómetro infrarrojo con Arduino y ESP8266

La conexión del termómetro infrarrojo con Arduino es muy sencilla ya que utiliza la interfaz de comunicación I2C como muchos otros componentes.

Te recuerdo que esta interfaz de comunicación solo utiliza dos pines del Arduino o ESP8266 para conectarse al sensor.

El termómetro MLX90614 tiene 4 pines.

Para conectar el termómetro infrarrojo con Arduino o ESP8266 sigue los siguientes esquemas eléctricos.

Es un esquema muy sencillo, sólo tienes que localizar los pines correspondientes y luego conectar el termómetro infrarrojo con Arduino o ESP8266.

Y como siempre digo, una de las ventajas que tiene la plataforma de Arduino es que el código que hagas para programar un Arduino lo más probable es que al 99% te valga para el ESP8266.

Precisamente es lo que vamos a ver a continuación.

Cómo programar MLX90614 termómetro infrarrojo en Arduino y ESP8266

Para programar el termómetro infrarrojo con Arduino y ESP8266 lo primero que hay que hacer es descargar la librería de Arduino. En este caso (como en tantos otros) vamos a utilizar la de Adafruit.

Para ayudar en el desarrollo de esta librería y de tantas otras que nos facilita Adafruit, debemos apoyar de algún modo a la marca. La forma más sencilla es comprando sus productos en la tienda de Amazon o en la propia tienda de Adafruit.

Se trata de una librería muy sencilla que permite obtener la temperatura en grados Celsius y en grados Fahrenheit.

Abre el Administrador de bibliotecas y busca MLX90614 e instala la versión de Adafruit.

Una vez instalada ya puedes cargar el siguiente código. Da lo mismo si utilizas una u otra placa de Arduino o un ESP8266, el código funciona igual en cualquier placa compatible con la plataforma de Arduino.

Lo primero es importar las librerías. Se necesitan la librería Wire y la librería Adafruit_MLX90614 para programar el termómetro infrarrojo con Arduino y ESP8266.

Luego hay que crear una instancia al objeto a la que he llamado termometroIR aunque tú puedes llamarlo como quieras.

En la función setup() hay que iniciar el objeto llamando a la función termometroIR.begin().

En la función loop() es donde está toda la lógica para obtener la temperatura ambiente y del objeto con el MLX90614, termómetro infrarrojo con Arduino.

La función termometroIR.readAmbientTempC() obtiene la temperatura ambiente en grados Celsius.

La función termometroIR.readObjectTempC() obtiente la temperatura del objeto en grados Celsius.

Si quieres obtener la temperatura en grados Fahrenheit utiliza las funciones readAmbientTempF() y readObjectTempF().

Ahora sólo te queda cargar el código a la placa y abrir el monitor serie. Obtendrás un resultado parecido a la siguiente imagen.

Y con esto damos por finalizado el tutorial del termómetro infrarrojo con Arduino y ESP8266. Cualquier duda o pregunta en lso comentarios de aquí abajo.

Muchas gracias.

Gracias a Shutterstock por ceder los derechos de las siguientes imágenes:

Salir de la versión móvil