bclose

Midiendo temperatura sin contacto

Como medir temperaturas a distancia

Midiendo la temperatura a distancia

 

 

    • Presentar el sensor de temperatura MLX90614 .
    • Montar un circuito que nos permita medir temperatura a distancia.
    • Realizar un montaje completo con display y el sensor.

 

Material requerido.

Imagen de Arduino UNO Arduino Uno o similar.

 

ProtoboardconexionesUna Protoboard mas  cables.
Display de 128x64 pixelsUn display OLED de 0.96
MOntaje en breakoutUn sensor MLX90614

Midiendo Temperaturas

 

Parece que medir temperaturas en el mundo Arduino es una especie de clásico incombustible. Desde expertos en instrumentación hasta aprendices novicios, todo el mundo quiere medir la temperatura de algo del modo que sea.

No es raro porque hay mil motivos para precisar semejantes medidas y el mercado siempre dispuesto a venderte cosas que hagan que aflojes la cartera, encuentra mil y una maneras de vendernos sensores de diferentes tipos, colores y condiciones con sus propias ventajas e inconvenientes.

En esta humilde casa hemos ido viendo sensores de temperatura como los LM35DZ de coste despreciable y magnifico rango de medida, a modelos menos sofisticados pero mas cómodos como los DHT11 y DHT22 que además nos dan la humedad ambiente y están mas pensados para la industria alimentaria. Y como no, un clásico como  las PT100 y diferentes tipos de termopares dependiendo de las necesidades.

Paro todos estos sensores tienen una cosa en común: Necesitan contacto físico con el medio a medir. Si se trata de un líquido hay que sumergirlo ocn los problemas que esto representa para cualquier dispositivo eléctrico / electrónico.

Por eso en este caso vamos a probar un sensor de temperatura diferente. Un modelo basado en el sensor MLX90614, aunque yo voy a usar un breakout con el sensor integrado para que sea mas cómodo de usar.

 Sensor independiente
  MOntaje en breakout 

La curiosidad de este sensor, es que mide la temperatura de un objeto a distancia, en función de la emisión de Infrarrojos que el objeto produce.  ¿Qué te parece el truco?

Eso significa que no necesitamos contacto físico con el elemento cuya temperatura queremos medir, sino que basta con apuntar el sensor hacia el objeto. Además como ocurre con los buenos sensores electrónicos es auto calibrado.

El fabricante nos pone fácil usar el sensor MLX90614, ya que es básicamente un sensor de infrarrojos encapsulado y con la electrónica precisa para conectarse al bus I2C, con lo que se simplifica mucho las conexiones y lecturas permitiendo hasta un máximo de 100 de estos pequeños monstruos en la misma red.

Algunas características de la familia:

 
  • Incluye sensores para la temperatura ambiente TA y para la temperatura del objeto al que se apunta TO.
  • Calibrado de fábrica para un rango de temperaturas más amplio de lo habitual:
    • -40 to 125 ˚C para la temperatura ambiente
    • -70 to 380 ˚C para la temperatura del objeto
  • Buena precisión: 0.5°C sobre un amplio rango.
  • Sirve para medir la temperatura corporal (Lo probaré la próxima vez que tenga fiebre)
  • Bajo coste. 

Todo esto hace que se ideal para jugar midiendo la temperatura a distancia de una forma cómoda y sobre todo con bastante precisión por lo que no me he podido resistir a probarlos.

 

Arduino y los sensores MLX90614

 

Vale pues. ¿Qué tal es usar un Arduino para leer estos sensores? Pues francamente sencillo. Basta con conectar el sensor a tensión y GND y conectar los dos hilos del I2C para que estemos listos para leer las lecturas de temperaturas remotas.

Después basta con instalar una sencilla librería de Adafruit-MLX90614-Library-master,  y ya podemos empezar. La conexión es trivial:

SensorVinGNDSCLSDA
Arduino5 VGNDA6A5

Para el programa vamos a empezar con un par de includes, para el I2C y el sensor:

#include <Wire.h>
#include <Adafruit_MLX90614.h>

Después creamos una instancia de un objeto por cada sensor:

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

Y ya podemos ir hasta el setup()

void setup()
{
   Serial.begin(9600);
   mlx.begin();
}

Donde incializamos el objeto con la segunda línea. Y en el loop utilizamos las dos instrucciones básicas de este sensor para leer la temperatura ambiente, y la del objeto al que apuntamos:

void loop() 
  {
     Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC());  
     Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");
     Serial.println();  
     delay(1000);
  }

Y eso es todo. Resulta frustrantemente sencillo. Si ejecutáis el programa obtendréis medidas variables en la puerta serie según adonde vayáis apuntando el sensor:

SAlida a consola arduino

Veréis que requiere unas cuantas medidas adaptarse al la temperatura de un objeto cuando le modificamos de forma brusca la temperatura de objeto (Como ponerle agua casi hirviendo después de apuntar a algo frio)

 

Complicando todo un poco

 

La cosa ha sido tan fácil que no me pagarían si dejo esta sesión así, de modo que hay que complicar todo un poco para que parezca que esto es algo difícil que solo cuatro podemos entender, y como me sobra tiempo (Y también porque quiero cobrar) no me puedo resistir a construir un termómetro a distancia que nos de la temperatura de un objeto cuando lo apuntamos con nuestra pistola lectora.

Para ello voy a usar un display OLED de 0.96” y basándome en el antiguo programa que usamos para manejarlo aquí: https://www.prometec.net/oled/

 
  • El tuto del display OLED está un tanto obsoleto porque está hecho a pelo, pero de entonces aquí han desarrollado librerías manejar este display como cualquier otro y lo suyo seria hacer un nuevo tuto aplicando las librerías gráficas, pero que queréis que os diga, no me sobra tanto tiempo. Suizas en la próxima ocasión.  
Fotografia de confunto

La idea es modificarlo sin entrar en mucho detalle ese programa para que presente las medidas de temperatura ambiente y del objeto apuntado en el display OLED, porque me encanta y adema es muy fácil usarlo como sensor remoto a modo de pistola a la que apuntar el sensor.

Como no quiero volver a hablar de ese programa y de como manejar el display OLED bastara con copiar las funciones instrumentales y modificar un poco el apartado de la generacional de los textos que queremos mostrar en pantalla.

Aquí os dejo el programa completo:

#include "stdio.h"
#include <Wire.h>
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();
char buffer[12];

void setup()
{
   LEDPIN_Init();
   LED_Init(); 
   mlx.begin();
}

void loop()
{
   int Amb = mlx.readAmbientTempC();
   int Obj = mlx.readObjectTempC();  
   int n = sprintf(buffer, "%02d C : %02d C", Amb, Obj);

   LED_P8x16Str(20,0,  "Prometec.net" );
   LED_P8x16Str(20,4,  buffer );
   LED_P8x16Str(20,6,  "    ...." );
}

No he intentado volver a describir el uso del display OLED ni sus conexiones, porque está todo documentado en la sesión previa que tenéis marcada mas arriba y veréis que lo único que hace el programa es adaptar al display las lecturas del sensor I2C.

Os dejo aquí un vídeo con el resultado:

 

 

 

 

No Comments

Give a Reply

WordPress Anti-Spam by WP-SpamShield