martes, 22 de agosto de 2017

BMP085 Sensor de Presión Atmosferica


¿Qué es el BMP085?




Este dispositivo es un sensor de presión digital atmosférica, tiene un rango de 300 a los 1100 hPa (+9000 m. de altitud hasta -500 m. sobre el nivel del mar).




Figura 1.- Se muestra el sensor de presión atmosférica.

Las aplicaciones típicas de este sensor son en la mejora de la navegación de GPS (Dirección de pendientes). En actividades de deportes para los calcular los movimientos que realiza un individuo, pronósticos del tiempo (medio ambiente), indicaciones de velocidad vertical ya sea subida o bajada en los autos entre otras aplicaciones son las más comunes.





Figura 2.- La presión atmosférica, es el peso que ejerce el aire a la atmosfera.



Este sensor se comunica a través del protocolo i2c, que permite una comunicación fácil entre el dispositivo y un microcontrolador con una máxima frecuencia de operación de 3.4 MHz y un consumo de reposo de 0.1 uA , este además cuenta con un sensor de temperatura interno que nos permite adquirir las misma por medio del protocolo de comunicación.

El voltaje de operación de este sensor es de 1.62 Volts hasta un máximo de 3.66 Volts, el rango operativo de este sensor según sus características es de 0 a 65°C, lo que su sensor de temperatura nos arroja en ese rango de igual manera.

El diagrama típico de conexión lo observamos a continuación:



Figura 3.- Diagrama típico de conexión.

Normalmente este circuito lo encontramos ya en la placa del mismo sensor, como lo podemos observar en la figura 1. El esquema de conexión del sensor con el Arduino es la siguiente para Arduino uno donde el puerto de i2c lo encontramos en los pines 4(SDA) y 5(SCL).



Figura 4.-Conexión de Arduino con sensor BMP085.

El código de la lectura para Arduino lo podemos descargar del siguiente link:




Código Arduino:


#include <Wire.h>

#include <Adafruit_BMP085.h>



/***************************************************

  This is an example for the BMP085 Barometric Pressure & Temp Sensor



  Designed specifically to work with the Adafruit BMP085 Breakout

  ----> https://www.adafruit.com/products/391



  These displays use I2C to communicate, 2 pins are required to 

  interface

  Adafruit invests time and resources providing this open source code,

  please support Adafruit and open-source hardware by purchasing

  products from Adafruit!



  Written by Limor Fried/Ladyada for Adafruit Industries. 

  BSD license, all text above must be included in any redistribution

 ****************************************************/



// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)

// Connect GND to Ground

// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5

// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4

// EOC is not used, it signifies an end of conversion

// XCLR is a reset pin, also not used here



Adafruit_BMP085 bmp;

 

void setup() {

  Serial.begin(9600);

  if (!bmp.begin()) {

            Serial.println("Could not find a valid BMP085 sensor, check wiring!");

            while (1) {}

  }

}

 

void loop() {

    Serial.print("Temperature = ");

    Serial.print(bmp.readTemperature());

    Serial.println(" *C");

   

    Serial.print("Pressure = ");

    Serial.print(bmp.readPressure());

    Serial.println(" Pa");

   

    // Calculate altitude assuming 'standard' barometric

    // pressure of 1013.25 millibar = 101325 Pascal

    Serial.print("Altitude = ");

    Serial.print(bmp.readAltitude());

    Serial.println(" meters");



    Serial.print("Pressure at sealevel (calculated) = ");

    Serial.print(bmp.readSealevelPressure());

    Serial.println(" Pa");



  // you can get a more precise measurement of altitude

  // if you know the current sea level pressure which will

  // vary with weather and such. If it is 1015 millibars

  // that is equal to 101500 Pascals.

    Serial.print("Real altitude = ");

    Serial.print(bmp.readAltitude(101500));

    Serial.println(" meters");

   

    Serial.println();

    delay(500);

}



Monitoreo en puerto serial:




Figura 5.- Podemos observar la salida del sensor en el monitor serial.

Podemos observar en el monitor serial de Arduino las salidas que nos da el sensor, la temperatura (28.40°C) y la presión (98685 Pascales), a partir de esos datos podemos calcular la altitud y la presión a nivel del mar para así calcular la altitud real. Generalmente los aviones utilizan este tipo de sensores para medir su altitud a nivel del mar para seguir las trayectorias específicas de sus rutas.


Figura 6.- Aplicaciones de los barómetros esté puede ser utilizado en los aviones o en drones para calcular su altitud real.

No hay comentarios:

Publicar un comentario