Descripción
El sensor BMP180 (BMP-180) es una barómetro digital (con medida de temperatura incorporada). Está pensado para usarlo como altímetro a partir de la medición de presión atmosférica. Este sensor es la versión mejorada del BMP085, siendo compatibles entre sí.
Como con cualquier sensor de altura barométrico, se debe considerar que la presión atmosférica varía continuamente como fruto de la climatología, por lo que la medida puede contener cierto error. Este error es fácil de compensar si se toma una medida de referencia (calibración estática) justo antes de empezar a usarlo, es decir, si se usa para medir diferencias de altura respecto a un punto. Además, si la medición de altura se realiza en un espacio temporal en que el clima no ha cambiado la exactitud del sensor es bastante buena. La temperatura puede afectar también a la medición de presión, por eso el sensor la mide y compensa internamente la lectura.
El rango de medición alcanza 300 HPa (unos 9.000m de altitud respecto al nivel de mar) y es capaz de medir hasta una presión de 1100HPa (500m por debajo del nivel del mar). La precisión absoluta es de 1HPa y la relativa de 0,12HPa (error máximo aproximado: 1m).
También es frecuente encontrar este sensor en aplicaciones meteorológicas, donde la medición de la presión atmosférica ayuda a predecir el tiempo,
Se conecta a Arduino a través del bus i2c y, aunque el sensor es de 3,3V, este módulo (GY69, GY-68) permite alimentarlo a 5V (incorpora un regulador de tensión). Su consumo es muy reducido, de 100nA en reposo y de 650uA durante la medición. El tiempo de medida oscila entre 5ms y 17ms.
Conexiones:
- GND del módulo: al pin GND de Arduino
- Vcc del módulo: al pin 5V de Arduino
- SDA del módulo: al pin A4 de Arduino UNO (atención, en MEGA o DUE el pin es distinto).
- SCL del módulo: al pin A5 de Arduino UNO (atención, en MEGA o DUE el pin es distinto).
Código de ejemplo (basado en la librería de Sparkfun):
#include <SFE_BMP180.h> #include <Wire.h> SFE_BMP180 bmp180; //Se crea un objeto llamado "bmp180" // *** CONFIGUIRACIÓN *** void setup() { Serial.begin(9600); // Inicializa puerto serie a 9600bps (Monitor Serie) if (bmp180.begin()) Serial.println("BMP180 OK. Iniciando..."); else { Serial.println("Error al iniciar BMP180"); while(1); // El código no sigue adelante } } // *** CÓDIGO PRINCIPAL *** void loop() { char status; double T,P; status = bmp180.startTemperature(); //Inicia la medición de Temperatura // "status" devuelve el tiempo a esperar para que lectura finalice if (status != 0) { delay(status); //Pausa para que finalice la lectura status = bmp180.getTemperature(T); //Obtener la temperatura y guardarla en T if (status != 0) { // El parámetro "3" es la configuración de sobremuestreo. 3 supone el máximo (medida más limpia) status = bmp180.startPressure(3); //Inicia la lectura de presión if (status != 0) { delay(status); //Pausa para que finalice la lectura status = bmp180.getPressure(P,T); //Obtenemos la presión. El sensor necesita que le proporcionemos... //... el dato de temperatura obtenido anteriormente. Si las medidas son muy seguidas entre sí, puede... //... proporcionarse medirse la temperatura sólo de vez en cuando. if (status != 0) { // Muestra los resultados con dos decimales Serial.print("Temperatura: "); Serial.print(T,2); Serial.print(" ºC , "); Serial.print("Presion: "); Serial.print(P,2); Serial.println(" mbar"); } } } } delay(1000); // Tiempo de espera entre medidas }
Más información: Hoja de datos sensor BMP180
Valoraciones
No hay valoraciones aún.