X

Arduino: sensores de temperatura

La temperatura es una de las variables más presentes en nuestro medio y generalmente se presenta en dos estados que pueden ser frio o calor o en superficies las cuales pueden estar frías o calientes. Bien sea un espacio o área trazada incluso materiales específicos en nuestro medio tales como metales o elementos de construcción entre muchos otros.
La temperatura es considerada una magnitud medible a través de un termómetro.
Hablando matemáticamente es también considerada una magnitud de tipo escalar y se relaciona de manera directa con el concepto de energía interna que posee un sistema termodinámico obviamente definido por la ley cero de termodinámica.
¡Pero ¿de qué trata esta ley o principio? Que sencillamente una temperatura de tipo práctica o empírica T es común para todos absolutamente todos los estados de equilibrio que se encuentren equilibrio de forma mutua con uno dado. A partir de esta ley es posible diseñar instrumentos y sensores que nos permiten la medición efectiva de la variable temperatura.
Entonces teniendo en cuenta lo mencionado anteriormente podemos decir que la temperatura se relaciona directamente con aquella parte de la energía interna conocida como energía cinética.
Particularmente quien posee energía cinética son las partículas del sistema y el movimiento de éstas puede ser traslacional, rotacional o vibratorio.
Si el movimiento de las partículas aumenta o crece, se generará mayor energía cinética y por ende se obtendrá trabajo y la variable trabajo se representa en forma de calor.
También podemos decir que la temperatura presenta diferentes escalas medibles y que varía de acuerdo al proceso que se esté monitoreando o controlando. Esto también aplica por temas de ubicación geográfica.
En algunos países miden en escala rankine, otros en farhenheit, otros en Celsius y otros en kelvin. En realidad es lo mismo pero con otro “apellido” por decirlo así.
Además sabemos que si la escala de temperatura tiende más hacia la izquierda es negativa y es mucho más fría que a partir de la escala cero o considerada como escala de hielo en adelante, además es considerada infinita aunque en la tierra estas condiciones no se den debido a que por cuestiones geográficas existe un punto más frio y otro más caliente.
A continuación presentamos las tablas de conversión de temperaturas las cuales se ajustarán de acuerdo a las necesidades del usuario
http://www.industriaquimica.net/factores-conversion-escalas-termometricas.html
SENSORES DE TEMPERATURA PARA ARDUINO
https://www.logismarket.cl/comind/sensores-temperatura/5269148302-4245933009-p.html
En general me gustaría decir de manera concreta que no existe ninguno para arduino puesto que depende de la robustez de la aplicación. En el mercado sin duda hay una gama amplia de sensores de temperatura entre los que destacamos. Sensores semiconductores como el LM35, termocuplas o termopares, termistores, termopilas incluso RTDs de tipo industriales como las PT-100 o PT-1000 que son para aplicaciones de mayor robustez y envergadura. También tenemos como sensores digitales de temperatura los detectores de flama pero de ellos hablaremos en otro post.  Para mi concepto usted puede trabajar con el que mejor se acomode a sus necesidades siempre y cuando entienda y comprenda que arduino tiene ciertas limitantes en cuanto a desarrollo de sistemas más complejos. Por lo tanto absténgase de usar sensores industriales para arduino. O preferiblemente use controllino. Trataremos de analizar las formas de conexión de algunos de estos sensores con sus respectivos códigos de prueba para validar su funcionamiento. Empecemos:
CONECTAR SENSOR DE TEMPERATURA LM35 AL ARDUINO
Es hora de pasar a la parte práctica para experimentar un poco con los diversos sensores mencionados aquí en el post. Empecemos con el LM35
SENSOR DE TEMPERATURA LM35
https://electronilab.co/tienda/lm35-dz/
El sensor de temperatura LM35 tiene un parecido similar a un transistor bipolar y le recomendamos que por favor no lo confunda y que se fije bien en su nomenclatura puesto que por errores lo puede quemar o dañar y de esta manera afectar su funcionamiento. Básicamente de este sensor podemos decir que tiene una función de transferencia a la salida de 10 mV por cada grado centígrado expresado matemáticamente de la siguiente forma:
Esto lo que nos quiere decir es que por cada grado de temperatura y en relación al voltaje con el que se esté alimentando el voltaje de salida será a 0.01Volts a 1°C por ejemplo.

Dentro de las características destacables de este sensor podemos encontrar que tiene una precisión garantizada de 0 a 25°C la salida es lineal y directamente proporcional a la temperatura, posee una baja impedancia a la salida tiene una baja corriente de alimentación de aproximadamente un rango que va desde los 50uA a los 60 uA y por si fuera poco es de bajo costo y permite hacer muchas cosas. No es recomendable para sensar temperatura de procesos. Además de ello no depende de circuitos externos para su funcionamiento. Tiene un rango de -55°C a 150°C y a -55°C entrega un voltaje 550mV y a 150°C un voltaje de 1.5Volts el rango de trabajo de este dispositivo está garantizado de 4 V a 30V. sin embargo le recomendamos que valide la hoja de datos característica y el tipo de fabricante que está usando para mayor exactitud en la medida y mejoras al sensor de algún tipo.

Bueno, una vez caracterizado el sensor de temperatura LM35 pasemos a la parte del montaje electrónico
http://www.internetdelascosas.cl/2012/05/04/midiendo-temperatura-con-arduino-y-lm35/
Procedemos a efectuar la conexión.
Luego de haber realizado las conexiones pertinentes del arduino al sensor de temperatura LM35 procederemos a ejecutar o cargar o programar un código de prueba para el circuito cableado en nuestro board en conjunto con el arduino. Debe revisar que las conexiones se encuentran en buen estado y sin puntos abiertos
Procedemos a cargar el código de prueba. NOTA: los datos de salida se visualizarán mediante el monitor serial de arduino.
————————————————————————————————————————
float tempC;
int tempPin = 0; // Definimos la entrada en pin A0
void setup()
{
  // Abre puerto serial y lo configura a 9600 bps
  Serial.begin(9600);
}
void loop()
{
  // Lee el valor desde el sensor
  tempC = analogRead(tempPin);
  // Convierte el valor a temperatura
  tempC = (5.0 * tempC * 100.0)/1024.0;
  // Envia el dato al puerto serial
  Serial.print(tempC);
  Serial.print(” grados Celsiusn”);
  // Espera cinco segundo para repetir el loop
  delay(5000);
}
——————————————————————-
Una vez realizada la prueba de dicho código nos debe mostrar en el monitor serial los siguientes datos: OJO debe preferiblemente acercar elementos calientes o frios como por ejemplo un cautín para que observe su comportamiento.
CONECTANDO UNA TERMOCUPLA TIPO J/K
Quiero manifestarles que los módulos termocupla están disponibles para arduino. Lo cual es una ventaja. ¿Se imaginan si este módulo no existiera? En el peor de los casos nos hubiera tocado hacer el circuito de acondicionamiento de señal. Afortunadamente arduino se adapta y ha facilitado un poco las cosas. Muy buena ventaja!
Ojo muchachos y como dato de cultura general: la respuesta del termopar no es lineal
les comparto el diagrama de conexiones y el código de prueba para la termopar.
https://altronics.cl/kit-termocupla-tipo-k-max6675
https://hetpro-store.com/TUTORIALES/termopar-tipo-k-max6675-alarma/

#include <Time.h>
#include <TimeLib.h>
#include <OneWire.h>
#include “max6675.h”
float temperatura=0; //Se crea una variable flotante para almacenar la temperatura
//Se definen los pines a usar para conectar el módulo MAX6675
int ktcSO = 11;
int ktcCS = 12;
int ktcCLK = 13;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
//alarma.
int duracion=250; //duracion del sonido
int fMin=2000; //frecuencia mas baja
int fMax=4000; //frecuencia mas alta
int i=0;
// declaracion de pines y variabls.
Int foco= 10; // pin de salida del foco.
int alarma = 9 ;// pin de salida de la alarma.
Int star = 8; //led indicador de comienzo de conteo

void setup() {
//activa comunicacion serial.
Serial.begin(9600);
delay(500);
//decalracion de boton.
Serial.begin(9600);
//configure pin2 as an input and enable the internal pull-up resistor
pinMode(10, INPUT_PULLUP);
//Anotamos la hora y la fecha desde la que nuestro programa empezará a contar.
//Formato: hora, minutos, segundos, días, mes, año
setTime(12,00,00,25,8,2017);
pinMode(foco, OUTPUT);
pinMode (alarma, OUTPUT);
}
void loop() {
//Leer temperatura.
temperatura=ktc.readCelsius();
//temperatura=ktc.readFahrenheit();
//Enviar dato de temperatura por el puerto serial.
Serial.print(“Temperatura = “);
Serial.print(temperatura);
Serial.println(” C”);
//Pausa de medio segundo para repetir el proceso
delay(500);
//read the pushbutton value into a variable
int sensorVal = digitalRead(7);
//print out the value of the pushbutton
Serial.println(sensorVal);
setTime(12,1,00,25,8,2017);
if(temperatura>=30 &&  temperatura<=40)
{
digitalWrite(star,HIGH);
while(temperatura>=-127 && temperatura<=127 && sensorVal==HIGH)
{
time_t t = now();//Declaramos la variable time_t t
//Imprimimos la fecha y lahora
Serial.print(day(t));
Serial.print(+ “/”) ;
Serial.print(month(t));
Serial.print(+ “/”) ;
Serial.print(year(t));
Serial.print( ” “) ;
Serial.print(hour(t));
Serial.print(+ “:”) ;
Serial.print(minute(t));
Serial.print(“:”) ;
Serial.println(second(t));
delay(1000);//Esperamos 1 segundo
//read the pushbutton value into a variable
int sensorVal = digitalRead(7);
//print out the value of the pushbutton
Serial.println(sensorVal);

//Programamos la hora a la que la alarma se activará
if(hour(t)==20 && sensorVal==HIGH)
{
digitalWrite(foco,HIGH);
digitalWrite(alarma,HIGH);
//sonido mas agudo
for (i=fMin;i<=fMax;i++)
tone (alarma,i,duracion);

//sonido mas grave
for (i=fMax;i>=fMin;i–)
tone (alarma,i,duracion);
}
else
{
digitalWrite(alarma,LOW);
digitalWrite(foco,LOW);
}
if(sensorVal==LOW){
break;
}
}
}
}

CONECTANDO UN TERMISTOR AL ARDUINO
Los termistores referencia MF52 son ideales para este tipo de aplicaciones. Al variar la temperatura varía su resistencia y fácilmente podemos medir temperaturas de procesos industriales no tan complejos y procesos cotidianos como por ejemplo: la temperatura ambiente, la temperatura de una estufa o un horno. Basta con ubicar el sensor estratégicamente en el proceso. (directamente para una mejor fiabilidad y resolución de la medida)
El comportamiento de este sensor es no lineal y pueden ser de tipo NTC o PTC los NTC son de coeficiente negativo de temperatura y PTC pertenecen a coeficiente positivo de temperatura.
El modelo aproximado de este circuito se asemeja más a una planta de tercer orden o de orden superior por decirlo así y este modelo se denomina Steinhart-Hart
https://www.luisllamas.es/medir-temperatura-con-arduino-y-termistor-mf52/
http://www.ifent.org/lecciones/ptc/ptc.htm
http://www.circuitbasics.com/arduino-thermistor-temperature-sensor-tutorial/
#include <math.h>
const int Rc = 10000; //valor de la resistencia
const int Vcc = 5;
const int SensorPIN = A0;
float A = 1.11492089e-3;
float B = 2.372075385e-4;
float C = 6.954079529e-8;
float K = 2.5; //factor de disipacion en mW/C
void setup()
{
Serial.begin(9600);
}
void loop()
{
float raw = analogRead(SensorPIN);
float V =  raw / 1024 * Vcc;
float R = (Rc * V ) / (Vcc – V);
float logR  = log(R);
float R_th = 1.0 / (A + B * logR + C * logR * logR * logR );
float kelvin = R_th – V*V/(K * R)*1000;
float celsius = kelvin – 273.15;
Serial.print(“T = “);
Serial.print(celsius);
Serial.print(“Cn”);
delay(2500);
}
OBSERVACIONES
Los valores A B C que son empleados deben estar calibrados para una resistencia de tipo MF52 a 10kohm y varía respecto al tipo de termistor que se este usando así que mucho ojo. Estos datos generalmente se pueden visualizar en la hoja de datos característica del dispositivo. Sin embargo solo proporciona un valor denominado beta y esto se dá debido a que se está usando un modelo de menor precisión que steinhart hart. Para esos casos se debe obtener los valores A, B, C mediante de tablas de resistencia en relación a la temperatura del sensor. Esto es todo amigos. Espero que les haya gustado

CONTENIDOS MÁS RELEVANTES.

Categories: ARDUINO
Fabio Figueroa:

Este sitio usa cookies