Color y calor

La radiación infrarroja es un tipo de radiación electromagnética que tiene una longitud de onda mayor que la del color rojo. Este es el tipo de energía que emiten los cuerpos calientes, como una bombilla, el fuego o el sol. Aunque no la podemos ver, sentimos la radiación infrarroja en nuestra piel en forma de calor.

Por otro lado, el color de la camiseta que llevas puesta depende de la longitud de onda de la luz que refleja: la camiseta es azul porque solo refleja la longitud de onda correspondiente al azul y absorbe todos los demás colores. Pero el blanco y el negro son muy peculiares. El color blanco refleja prácticamente toda la radiación que le llega, y apenas absorbe nada. El negro, a su vez, absorbe la mayor parte de la radiación que recibe, incluida la infrarroja, y no refleja apenas nada. Por eso, un día de mucho sol, ¿qué camiseta te pones: la blanca o la negra?

Objetivos

  • Comprobar que el color negro absorbe más radiación que el blanco.

  • Demostrar cómo se utiliza un sensor para medir temperaturas.

Descripción

  1. Disponemos de dos latas idénticas, una cuya superficie está pintada de negro y la otra de blanco, en las que hemos introducido la misma cantidad de agua. Dejamos ambas latas al sol el mayor tiempo posible. En cada lata metemos un sensor de temperatura y presentamos ambas temperaturas en la pantalla LCD para comparar los valores medidos.

  2. También se conectará un tercer sensor para explicar cómo se programa un sensor y para hacer demostraciones de cómo cambia la temperatura al poner el sensor en contacto con distintos cuerpos: se mantiene el sensor en el interior de la mano; se utiliza un secador como fuente de calor; se mide el interior de un calorímetro o una neverita que tenga hielo, etc. Esta temperatura se mostrará por el monitor serie.

Material

Electrónico

No electrónico

  • Lata de refresco pintada de blanco

  • Lata de refresco pintada de negro

  • Agua

  • Flexo (en el caso de que no haga sol)

  • Objetos a distintas temperaturas: secador, agua caliente, hielo...

Programa

Tres sensores DS18B20 y pantalla LCD
/*
  Lectura de tres sensores digitales de temperatura DS18B20.
  Las temperaturas de los dos primeros se presentan en un display LCD I2C.
  La temperatura medida por el tercer sensor se muestra en el monitor serie.

  ------------------- SENSORES -----------------------
  Todos los sensores están conectados al mismo pin de datos de Arduino.

  Conexiones de cada sensor:
      Pin 1 (GND) → GND
      Pin 2 (DATA) → pin digital 2 (puede cambiarse)
      Pin 3 (Vdd) → +5V o +3.3V
      Conectar una resistencia pull-up de 4.7 kOhm entre +5V y DATA

  Orden de los sensores:
      Sensor 1: en la lata blanca
      Sensor 2: en la lata negra
      Sensor 3: sensor de muestra

  --------------------- DISPLAY LCD I2C ---------------------
  SCL: pin analógico 5 (señal de reloj)
  SDA: pin analógico 4 (transmisión de datos)
  VCC: 5V
  GND: GND
*/

// Incluimos la librería OneWire para la comunicación entre el sensor y Arduino
// y la librería DallasTemperature que se encarga de realizar los cálculos en el sensor
#include <OneWire.h>
#include <DallasTemperature.h>

// Librerías para la pantalla LCD I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Llamanos lcd a la instancia que hace referencia a nuestra pantalla LCD
// Indicamos la dirección, el número de columnas y el número de filas de la pantalla
LiquidCrystal_I2C lcd(0x27, 16, 2);

// La línea de datos del sensor está conectada al pin digital 2 de Arduino
const int ONE_WIRE_BUS = 2;

// La comunicación con el sensor la establecemos a través de una instancia que llamamos oneWire
OneWire oneWire(ONE_WIRE_BUS);

// Para referirnos a nuestro sensor usamos una instancia que llamamos sensor
DallasTemperature sensor(&oneWire);


void setup()
{
  // Iniciamos la comunicación con el monitor serie
  Serial.begin(9600);

  // Inicializamos los sensores
  sensor.begin();

  // Inicializamos el LCD
  lcd.begin();
}


void loop()
{
  // Usamos la función requestTemperatures() para obtener la temperatura
  sensor.requestTemperatures();

  // La función getTempCByIndex(i) nos da la temperatura del sensor i+1
  // i = 0 es el primer sensor
  // i = 1 es el segundo sensor
  // i = 2 es el tercer sensor

  // Imprimimos la temperatura de los dos primeros sensores en el LCD
  // Primera línea
  lcd.setCursor(0, 0);
  lcd.print("Blanca: ");
  lcd.print(sensor.getTempCByIndex(0));
  lcd.print(" ");
  lcd.write(B11011111);    // Símbolo de grado
  lcd.print("C");

  // Segunda línea
  lcd.setCursor(0, 1);
  lcd.print("Negra:  ");
  lcd.print(sensor.getTempCByIndex(1));
  lcd.print(" ");
  lcd.write(B11011111);    // Símbolo de grado
  lcd.print("C");

  // Imprimimos la temperatura del tercer sensor en el monitor serie
  Serial.print("Temperatura: ");
  Serial.print(sensor.getTempCByIndex(2));
  Serial.println(" ºC");

  delay(1000);
}

Referencias

pageSensor digital de temperatura DS18B20pagePantalla LCD I2C

Last updated