top of page

Detección de la variación de la temperatura

Objetivo: Un sensor de temperatura capta la temperatura de nuestro cuerpo cuando lo cogemos con los dedos. Unos leds se encienden indicando el augmento de la temperatura con respecto a la temperatura ambiente. Cuanta más diferencia haya más leds se encenderán. El led verde indica que el sensor està a la temperatura de referencia y el último led rojo indica que el sensor está por debajo de la temperatura de referencia. El botón sirve para reestablecer la temperatura de referencia.

 

Comentarios: Para llevar a cabo el circuito hemos tenido que solventar tres dificultades:

1.- Partíamos del código con un sensor de tipo LM36. Hemos tenido que cambiarlo teniendo en cuenta que para calcular la temperatura a partir de la tensión sólo hace falta multiplicar por 100.


2.- La temperatura ambiente no siempre es la misma. Nosotros hemos puesto 26,5ºC como temperatura inicial y hemos añadido un pulsador para reestablecer la temperatura de referencia. Cada vez que se pulsa, la temperatura de referencia toma el valor de la temperatura que capta el sensor en ese momento.


3.- Para que el código sea más legible hemos creado dos funciones: ilumina() i temperaturaActual(). La primera se encarga de encender los leds correspondientes i la segunda de obtener la temperatura que capta el sensor.


Hemos observado que el sensor tarda bastante en recuperar la temperatura ambiente una vez calentado o enfriado. Una lástima.

 

Vídeo:

 

Componentes: Arduino Uno 3R, 1 pulsador, 6 LED rojos, 1 LED verde, 7 resistencias de 220Ω , 1 resistencia de 10KΩ, sensor de temperatura LM35

 

Imagen del circuito:

 

Código:

const int pinSensor = A0; const float incremento = 2.0; float temperaturaReferencia = 26.5; float temperatura= 26.0; void setup() { Serial.begin(9600); //Abre el puerto serie for (int nPin = 2; nPin < 9; nPin++){ pinMode(nPin, OUTPUT); digitalWrite(nPin, LOW); } pinMode (11, INPUT); } void loop() { if (digitalRead(11)==HIGH){ temperaturaReferencia = temperaturaActual(); } temperatura = temperaturaActual(); if (temperatura < temperaturaReferencia - 1){ ilumina(1,0,0,0,0,0,0); } else if (temperatura>= temperaturaReferencia-1 && temperatura < temperaturaReferencia + 1){ ilumina(0,1,0,0,0,0,0); } else if(temperatura >= temperaturaReferencia+1 && temperatura < temperaturaReferencia + incremento){ ilumina(0,0,1,0,0,0,0); } else if(temperatura >= temperaturaReferencia + incremento && temperatura < temperaturaReferencia + 2*incremento){ ilumina(0,0,1,1,0,0,0); } else if(temperatura >= temperaturaReferencia + 2*incremento && temperatura < temperaturaReferencia + 3*incremento){ ilumina(0,0,1,1,1,0,0); } else if(temperatura >= temperaturaReferencia + 3*incremento && temperatura < temperaturaReferencia + 4*incremento){ ilumina(0,0,1,1,1,1,0); } else if(temperatura >= temperaturaReferencia + 4*incremento ){ ilumina(0,0,1,1,1,1,1); } delay(500); } void ilumina(int led1, int led2, int led3, int led4, int led5, int led6, int led7){ digitalWrite(2,led1); digitalWrite(3,led2); digitalWrite(4,led3); digitalWrite(5,led4); digitalWrite(6,led5); digitalWrite(7,led6); digitalWrite(8,led7); } float temperaturaActual (){ int valorSensor = analogRead(pinSensor); Serial.print("Valor del sensor: "); Serial.print(valorSensor); // Convertir la lectura ADC a tensión float tension = (valorSensor/1024.0)*5.0; Serial.print(", Voltios: "); Serial.print(tension); Serial.print(", grados ºC: "); // Convertir la tensión en temperatura en valores en grados float temperatura = tension*100; //Para sensor LM35 Serial.println(temperatura); return temperatura; }

© 2023 by ClipsArduino. Proudly created with Wix.com

  • Grey Facebook Icon
  • Grey Twitter Icon
  • Grey Google+ Icon
bottom of page