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.
Codigo:
|
|
#include <SFE_BMP180.h>#include <Wire.h>//Se declara una instancia de la libreríaSFE_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 alturadouble PresionBase;//Leeremos presión y temperatura. Calcularemos la diferencia de alturadouble Presion = 0;double Altura = 0;double Temperatura = 0;char status;void setup() {Serial.begin(9600);//Se inicia el sensor y se hace una lectura inicialSensorStart();}void loop() {//Se hace lectura del sensorReadSensor();//Se imprimen las variablesSerial.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 sensorif (pressure.begin())Serial.println("BMP180 init success");else{Serial.println("BMP180 init fail (disconnected?)\n\n");while (1);}//Se inicia la lectura de temperaturastatus = pressure.startTemperature();if (status != 0) {delay(status);//Se lee una temperatura inicialstatus = pressure.getTemperature(Temperatura);if (status != 0) {//Se inicia la lectura de presionesstatus = pressure.startPressure(3);if (status != 0) {delay(status);//Se lee la presión inicial incidente sobre el sensor en la primera ejecuciónstatus = 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 temperaturastatus = pressure.startTemperature();if (status != 0){delay(status);//Se realiza la lectura de temperaturastatus = pressure.getTemperature(Temperatura);if (status != 0){//Se inicia la lectura de presiónstatus = 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 SetupAltura = 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.

