BMP280. Sensor de presión atmosférica

BMP280. Sensor de presión atmosférica.

El BMP280 es un sensor que permite medir la presión barométrica y la temperatura ambiente. Así mismo, dado que la altitud sobre el nivel del mar está relacionada con la presión, puede hacer estimaciones sobre la altitud local con una precisión de ± 1m.

Es el sucesor del conocido BMP180 al que mejora en prestaciones.

Características generales

  • Rango de presión: 300 – 1100 hPa ± 1hPa
  • Rango de temperatura: -40 – 85 ºC ± 1,0 ºC
  • Nivel lógico: 3,3V
  • Consumo: 2,7 µA
  • Comunicación: I2C, SPI

Más información en el datasheet.

Conexión

Dado que el BMP280 tiene un nivel lógico de 3,3V no podemos conectarlo directamente al bus del Arduino, tendríamos que usar un adaptador de niveles. No obstante, podemos usar un par de resistencias pull-up de 4,7K tal como sugiere Arduino Playground en I2C bi-directional level shifter. Así podemos conectar un componente de lógica 3,3V directamente al bus I2C de Arduino.

ArduinoBMP280
3,3VVCC
GNDGND
A4SDA
A5SCL

Además de los pines de alimentación VCC y GND, conectaremos el pin A4 de Arduino al SDA del sensor y el pin A5 de Arduino al SCL del sensor.

IMPORTANTE

Debemos tener en cuenta que el pin SDO del sensor nos permite especificar la dirección I2C que queremos usar en función de si lo conectamos a GND o a 3,3V.
SDO = GND. Dirección I2C 0x76
SDO = 3,3V. Dirección I2C 0x77

Código Arduino

Para hacer las lecturas del sensor podemos usar la librería Adafruit_BMP280_Library desarrollada por Adafruit. En esta librería, la dirección por defecto I2C está definida en el archivo Adafruit_BMP280.h, en la instrucción define BMP280_ADDRESS (0x77).

#include <Adafruit_Sensor.h>
#include "Adafruit_BMP280.h"

Adafruit_BMP280 bmp;

float presion;
float temperatura;
int altitud;

void setup() {
   bmp.begin();
}

void loop() {
   presion = bmp.readPressure()/100;
   temperatura = bmp.readTemperature();
   altitud = bmp.readAltitude (1015); // Ajustar con el valor local
    
   delay(1000);
}

NOTA

El cálculo de la altitud se hace mediante una estimación. Para que esta estimación sea fiable, en la instrucción bmp.readAltitude() tenemos que pasar la presión atmosférica a nivel del mar que se usa como referencia. Esto es un poco desconcertante ya que esta presión variará de un momento a otro, tendríamos que tener un sensor de presión situado a nivel del mar que nos enviara la presión de referencia.

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *