Medición de la presión barométrica y temperatura con Arduino y BMP180

Introducción

Bienvenidos a un nuevo post, hoy vamos a explorar el sensor BMP180, un dispositivo de medición de temperatura y presión barométrica, y cómo podemos integrarlo en nuestros proyectos de Arduino.

¿Qué es un BMP180?

El BMP180 es un sensor de temperatura y presión barométrica fabricado por Bosch Sensortec. Es sucesor del BMP085 y es conocido por su alta precisión, confiabilidad y bajo consumo de energía.

Características principales del BMP180:

  1. Presión barométrica: Puede medir presiones barométricas que oscilan entre 300 a 1100 hPa (+9000m a -500m respecto al nivel del mar).

  2. Temperatura: También puede medir temperaturas en un rango de -40 a 85°C con una precisión de ±2°C.

  3. Alta precisión: Puede proporcionar datos de presión con una precisión de 0.01 hPa y datos de temperatura con una precisión de 0.1°C.

  4. Bajo consumo de energía: Su consumo de energía es extremadamente bajo, funcionando con un voltaje de 1.8V a 3.6V, lo que lo hace ideal para dispositivos alimentados por batería.

  5. Interfaz I2C: Utiliza la comunicación de Inter-Integrated Circuit (I2C) para transmitir datos, lo que facilita la conexión con la mayoría de las placas de microcontroladores, incluyendo Arduino.

  6. Compacto: Es bastante pequeño, lo que lo hace fácil de integrar en proyectos donde el espacio es limitado.

El BMP180 es utilizado comúnmente en una variedad de aplicaciones, como la detección de cambios en el clima, la estimación de altitud (ideal para drones y robots voladores), y la medición de la temperatura ambiente.

Presión atmosférica

La presión atmosférica es esencialmente el peso del aire que nos rodea. En un sentido más técnico, es la fuerza que el aire ejerce sobre una superficie, debido a la gravedad que atrae las moléculas de aire hacia la Tierra. Esta presión es lo que se mide en unidades como los pascales o milímetros de mercurio.

La presión atmosférica no es constante y varía con la altitud. Aquí es donde entra en juego la densidad del aire: cuanto más alto estás, menos aire hay por encima de ti para ejercer presión. Como resultado, el aire es menos denso a altitudes más elevadas y la presión disminuye.

Altitud

La altitud se refiere a la distancia vertical desde un punto en la superficie de la Tierra hasta un nivel determinado en la atmósfera. A medida que aumenta la altitud, disminuye la presión atmosférica debido a que hay menos aire por encima de ese punto.

Esta disminución en la presión del aire también tiene un efecto sobre la temperatura. A medida que ascendemos a una altitud mayor, el aire se vuelve menos denso. Como resultado, el aire puede expandirse más, lo que permite que las moléculas de aire se alejen más. Esto hace que la temperatura disminuya, ya que las moléculas de aire están menos juntas y no chocan tan frecuentemente, lo que disminuye la energía cinética media y en consecuencia la temperatura.

El gradiente adiabático es el término que se utiliza para describir cómo cambia la temperatura con la altitud. De manera general, la temperatura disminuye en aproximadamente 6.5 grados Celsius por cada 1000 metros que ascendemos en altitud. Sin embargo, este valor puede variar dependiendo de varios factores, incluyendo la humedad y la presencia de nubes, entre otros.

Diagrama

Este dispositivo utiliza para comunicarse el protocolo I2C por lo que solo necesita dos pines (SDA y SCL) para comunicarse, en el Arduino uno SCL es A5 y SDA es A4.

Diagrama esquemático.

BMP085

Programación

Importación de la librería.

Primero, necesitarás la biblioteca Adafruit BMP085, que también es compatible con BMP180. Puedes descargarla desde el gestor de bibliotecas de Arduino o directamente desde el repositorio de GitHub de Adafruit.

Desde el IDE de Arduino ve a Sketch>Include Library>Manage Libraries. Instala y reinicia el IDE.

Si te pide que instales librerías dependientes adicionales hazlo.

Código

La biblioteca Adafruit BMP085 es incluida al principio del programa. Luego, se crea una instancia del sensor BMP085 llamada 'bmp'.

#include <Adafruit_BMP085.h> 
Adafruit_BMP085 bmp; 

 

La función setup() inicializa la comunicación serial a 9600 baudios y luego inicia el sensor con bmp.begin().

Serial.begin(9600); 
bmp.begin(); 

 

En cada iteración del bucle loop(), el código lleva a cabo las siguientes tareas:

  1. Lee la temperatura del sensor con bmp.readTemperature()
  2. Lee la presión del sensor con bmp.readPressure()
  3. Lee la altitud del sensor con bmp.readAltitude(), esta función lleva un argumento que es la presión a nivel del mar en pascales por defecto 101325, puedes mejorar la precisión ajustando la presión de referencia a nivel del mar, la cual puede variar dependiendo de las condiciones meteorológicas. ¡Cada 1 hPa que nos desviamos en la presión a nivel del mar equivale a un error de unos 8.5 m en los cálculos de altitud!
  4. Imprime los datos.

 

El código completo queda de la siguiente forma:

Una vez subido el sketch se pueden ver los resultados por monitor serial, la temperatura se muestra en grados Celsius, la presión en Pascales y la altitud en metros.

bmp180

Conclusión

Trabajar con el BMP180 y Arduino puede ser muy gratificante, ya que permite acceder a datos de temperatura y presión precisos y confiables. Ya sea que estés planeando hacer una estación meteorológica casera, un altímetro para un dron, un monitor de altitud para senderismo o montañismo o cualquier proyecto que necesite medir la presión o la temperatura, el BMP180 es una excelente opción.

En este blog post, hemos cubierto los conceptos básicos para empezar con el BMP180, pero este es solo el comienzo. Hay mucho más que puedes hacer con este versátil sensor. Así que, ¡empieza a experimentar!

 

ArduinoBmp180PresiónTemperatura

Deja un comentario