En este tutorial se aprenderá a utilizar el sensor BMp180, con el cual se puede obtener presión atmosférica, temperatura y altitud relativa.

El sensor BMP180 es un sensor de presión atmosférica de alta precisión, este dispositivo está diseñado para ser conectado directamente a un microcontrolador de un dispositivo móvil a través de I2C. Los datos de presión y la temperatura tienen que ser compensado por los datos de calibración del E2PROM del BMP180.

Características del Sensor BMP180

  • Digital interfaz de dos cables (I2C)
  • Amplio rango de medición de presión barométrica
  • Ultra-bajo consumo de energía
  • Bajo ruido
  • Completamente calibrado
  • Medición de temperatura incluida
  • Ultraplano y pequeño tamaño
  • Alimentación: 1.8V – 3.6V
  • Rango de medición: 300 – 1100hPa
  • Velocidad del protocolo máxima: 3.4 MHz.

 

 

Datos de lo Pines

Conexión BMP180 al Arduino.

El código que se utilizara es el siguiente. Este código está basado en uno de los ejemplos que vienen con la librería. Por lo cual sera necesario descargar la librería y guardarla en la carpeta de librerías de Arduino IDE.

Descargar Librería 

Codigo:

 
#include <SFE_BMP180.h>
#include <Wire.h>
//Se declara una instancia de la librería
SFE_BMP180 pressure;
//Se declaran las variables. Es necesario tomar en cuenta una presión inicial
//esta será la presión que se tome en cuenta en el cálculo de la diferencia de altura
double PresionBase;
//Leeremos presión y temperatura. Calcularemos la diferencia de altura
double Presion = 0;
double Altura = 0;
double Temperatura = 0;
char status;
void setup() {
Serial.begin(9600);
//Se inicia el sensor y se hace una lectura inicial
SensorStart();
}
void loop() {
//Se hace lectura del sensor
ReadSensor();
//Se imprimen las variables
Serial.println(" ////// ");
Serial.print("Temperatura: ");
Serial.print(Temperatura);
Serial.println(" grados C");
Serial.print("Presion: ");
Serial.print(Presion);
Serial.println(" milibares");
Serial.print("Altura relativa: ");
Serial.print(Altura);
Serial.println(" metros");
delay(10000);
//Cada 10 segundos hará una nueva lectura
}
void SensorStart() {
//Secuencia de inicio del sensor
if (pressure.begin())
Serial.println("BMP180 init success");
else
{
Serial.println("BMP180 init fail (disconnected?)\n\n");
while (1);
}
//Se inicia la lectura de temperatura
status = pressure.startTemperature();
if (status != 0)  {
delay(status);
//Se lee una temperatura inicial
status = pressure.getTemperature(Temperatura);
if (status != 0)    {
//Se inicia la lectura de presiones
status = pressure.startPressure(3);
if (status != 0)     
{
delay(status);
//Se lee la presión inicial incidente sobre el sensor en la primera ejecución
status = pressure.getPressure(PresionBase, Temperatura);
}
}
}
}
void ReadSensor() {
//En este método se hacen las lecturas de presión y temperatura y se calcula la altura
//Se inicia la lectura de temperatura
status = pressure.startTemperature();
if (status != 0)
{
delay(status);
//Se realiza la lectura de temperatura
status = pressure.getTemperature(Temperatura);
if (status != 0)
{
//Se inicia la lectura de presión
status = pressure.startPressure(3);
if (status != 0)
{
delay(status);
//Se lleva a cabo la lectura de presión,</span>
//considerando la temperatura que afecta el desempeño del sensor</span>
status = pressure.getPressure(Presion, Temperatura);
if (status != 0)
{
//Cálculo de la altura en base a la presión leída en el Setup
Altura = pressure.altitude(Presion, PresionBase);
}
else Serial.println("Error en la lectura de presion\n");
}
else Serial.println("Error iniciando la lectura de presion\n");
}
else Serial.println("Error en la lectura de temperatura\n");
}
else Serial.println("Error iniciando la lectura de temperatura\n");
}

 

Una vez cargado el programa desde Arduino IDE hacia la tarjeta Arduino,  haga clic en Herramientas y después clic en Monitor Serie, para mostrara los valores adquiridos como se muestra en la siguiente imagen.

Nota: Si  manda un error en lugar de los valores adquiridos, revise que la conexión de la tarjeta del sensor barométrico hacia la tarjeta Arduino se encuentren de manera correcta.