El aire pesa

La presión atmosférica muestra el peso del aire. Resulta sorprendente que ese peso varía en muy poca distancia vertical (altura). Los seres humanos no somos capaces de percibir ese cambio de presión en la altura de uno o dos pisos, pero hay sensores que sí. Para demostrar que el paso de la atmósfera es mayor en un primer piso que en un segundo elaboré este sencillo dispositivo.

Aquí el componente estrella es el sensor BME280 que mide la temperatura, la humedad relativa del aire y la presión atmosférica, que servirá para establecer la altitud, es decir, este sensor se comporta como un higrómetro, termómetro y barómetro digitales. El resto de los componentes pueden variar, aunque será necesaria siempre una placa de arduino (Uno, Nano, Micro, Mega...).

El experimento en cuestión es simple. Con el barómetro mostrando el valor de la presión atmosférica en la pantalla se trataría de subir o bajar una o dos plantas del instituto. En este gesto cotidiano de los alumnos existe una diferencia en el peso del aire, que no es perceptible para los humanos. Esta diferencia de peso / presión del aire sí que se puede visualizar en los valores que muestra la pantalla gracias el sensor digital BME280. A más altura menos presión, a menos altura más presión. La medida varía a los pocos peldaños de las escaleras y se va incrementando a medida que nos acercamos al piso superior / inferior más cercano.

A los alumnos les asombró el hecho de que el sensor notara cambios en la presión atmosférica que ellos ni se había planteado. Sí tienen la noción de el cambio de presión en grandes diferencias de altitud pero no en distancias verticales tan pequeñas como las que separan un primer de un segundo piso.

Ver código del proyecto 

#include <Wire.h>

#include <Adafruit_BME280.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SH1106.h>


#define OLED_RESET -1

Adafruit_SH1106 display(OLED_RESET);

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;


void setup() {

bme.begin(0x76); 

display.begin(SH1106_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

display.setTextColor(WHITE);

display.setTextSize(1);

display.display();

}


void loop() {

display.setCursor(0,0);

display.print("TEMP: ");

display.print(bme.readTemperature());

display.print(" ");

display.print((char)247);

display.println("C");

display.display();

display.setCursor(0,15);

display.print("HUM: ");

display.print(bme.readHumidity());

display.println(" %");

display.display();

display.setCursor(0,30);

display.print("PRES: ");

display.print(bme.readPressure() / 100.0F);

display.println(" hPa");

display.setCursor(0,45);

display.print("ALT: ");

display.print(bme.readAltitude(SEALEVELPRESSURE_HPA));

display.println(" msnm");

display.display();


delay(5000); // cada 5 segundos toma datos y los representa en la pantalla

display.clearDisplay();

display.display();

}