BMP180 indicación erronea

Estimados
Es la primera vez que entro a un foro.
Mi motivo de escribir es que estoy haciendo un proyecto que incluye un sensor barometrico BMP180 con la libreria SFE_BMP180 (https://www.sparkfun.com/products/11824)
la cuestión es que cuando abro el monitor scan veo que la indicación es muy variable.
queria saber si alguien me puede orientar en el uso de este sensor ya que es para hacer un altimetro y no me sirve tanta variación como voy a mostrar en la imagen

desde ya muchas gracias
y quedo atento

saludos

TE envio privado con instrucciones para que edites tu enlace y que la imagen sea visible.
De paso lee las normas del foro que también te envío para que te pongas al corriente.

Este es el código que estas probando?

// Your sketch must #include this library, and the Wire library.
// (Wire is a standard library included with Arduino.):

#include <SFE_BMP180.h>
#include <Wire.h>

// You will need to create an SFE_BMP180 object, here called "pressure":

SFE_BMP180 pressure;
// or "&Wire1" to Arduino DUE
// SFE_BMP180 pressure(&Wire1);

double baseline; // baseline pressure

void setup()
{
  Serial.begin(9600);
  Serial.println("REBOOT");
  
  // Initialize the sensor (it is important to get calibration values stored on the device).

  if (pressure.begin())
    Serial.println("BMP180 init success");
  else
  {
    // Oops, something went wrong, this is usually a connection problem,
    // see the comments at the top of this sketch for the proper connections.

    Serial.println("BMP180 init fail (disconnected?)\n\n");
    while(1); // Pause forever.
  }

  // Get the baseline pressure:
  
  baseline = getPressure();
  
  Serial.print("baseline pressure: ");
  Serial.print(baseline);
  Serial.println(" mb");  
}

void loop()
{
  double a,P;
  
  // Get a new pressure reading:

  P = getPressure();

  // Show the relative altitude difference between
  // the new reading and the baseline reading:

  a = pressure.altitude(P,baseline);
  
  Serial.print("relative altitude: ");
  if (a >= 0.0) Serial.print(" "); // add a space for positive numbers
  Serial.print(a,1);
  Serial.print(" meters, ");
  if (a >= 0.0) Serial.print(" "); // add a space for positive numbers
  Serial.print(a*3.28084,0);
  Serial.println(" feet");
  
  delay(500);
}


double getPressure()
{
  char status;
  double T,P,p0,a;

  // You must first get a temperature measurement to perform a pressure reading.
  
  // Start a temperature measurement:
  // If request is successful, the number of ms to wait is returned.
  // If request is unsuccessful, 0 is returned.

  status = pressure.startTemperature();
  if (status != 0)
  {
    // Wait for the measurement to complete:

    delay(status);

    // Retrieve the completed temperature measurement:
    // Note that the measurement is stored in the variable T.
    // Use '&T' to provide the address of T to the function.
    // Function returns 1 if successful, 0 if failure.

    status = pressure.getTemperature(T);
    if (status != 0)
    {
      // Start a pressure measurement:
      // The parameter is the oversampling setting, from 0 to 3 (highest res, longest wait).
      // If request is successful, the number of ms to wait is returned.
      // If request is unsuccessful, 0 is returned.

      status = pressure.startPressure(3);
      if (status != 0)
      {
        // Wait for the measurement to complete:
        delay(status);

        // Retrieve the completed pressure measurement:
        // Note that the measurement is stored in the variable P.
        // Use '&P' to provide the address of P.
        // Note also that the function requires the previous temperature measurement (T).
        // (If temperature is stable, you can do one temperature measurement for a number of pressure measurements.)
        // Function returns 1 if successful, 0 if failure.

        status = pressure.getPressure(P,T);
        if (status != 0)
        {
          return(P);
        }
        else Serial.println("error retrieving pressure measurement\n");
      }
      else Serial.println("error starting pressure measurement\n");
    }
    else Serial.println("error retrieving temperature measurement\n");
  }
  else Serial.println("error starting temperature measurement\n");
}

Hola Surbyte.
Ya modifique el post como me indicaste. Espero que este bien.
Con respecto al codigo ese es el codigo que utilice para hacer el muestreo

quedo atento a comentarios

saludos

Con que tensión lo alimentas?

Lo estoy alimentando con 3.3VDC desde el terminal del Arduino UNO de 3.3VDC

Bueno ese terminal no es muy apropiado, pero supongo que no comprometes la operación.
solo entrega 50 o 60mA y proviene el chip USB asi que se debe ser muy cuidadoso.

Mide mientras lees los valores, si la tensión de 3.3V fluctúa. SI lo hace intenta agregar un capacitor electrolítico de 10uF x 6.3V como mínimo.

Estoy leyendo algo sobre tu problema y en un momento te lo comento.

Te pongo los links pero no se si ayudan. Hay muchas problemáticas con el sensor que desconocía link1 y link2

Muchas gracias por tu respuesta

Será mejor alimentarlo con el terminal de 5 vcc?

quedo atento a tus comentarios

NO.. NO lo alimentes con 5V. La hoja de datos dice 3.3V con 5 lo puedes quemar.
Seria mejor alimentarlo con un regulador LDO tipo AMS1117

Pero no estoy seguro que sea tu problema.
Debes verificar con un tester/multímetro la tensión de 3.3V y ver si fluctúa. Si lo hace coloca el capacitor que te indiqué y de nuevo chequear si se estabiliza. Aún asi estamos en la etapa de prueba/error.
Tal vez funcione y tal vez no.

Genial
Veo eso y te cuento.
Calculo que voy a poder probar esto mañana

saludos

Prueba con el capacitor y si fluctúa entonces considera el regulador que acabo de pasarte. Okay, vamos por partes.

ya revise la tensión y no varia nada. Está clavada en 3.31VDC

para completar la información el sensor BMP180 está montado en una placa GY-87
Alguien sabe si está placa a parte de llevar los 3.3VDC también se conecta a 5VDC?

quedo atento

saludos

Las normas dicen y piden que antes de preguntar te tomes la molestia de buscar 5 min en google, yahoo, Bing o donde te guste.
Acabo de poner en Google: GY-87 y salieron muchos sitios y algunos como Adafruit y otros tienen ejemplos, datasheet, esquemáticos.

Acá te dejo uno que por ejemplo tiene todo link

Si tu placa es como lo que se ve ahi, no tiene 5V sino un LDO a 3.3V lo que suena lógico, por lo tanto admite 5V, si

Regulador incorporado. Voltaje de alimentación: 3 V a 5 V (Pin VCC_IN)

Volviendo a tu tema principal de las malas lecturas, he leído pocos reportes de gente con ese problema.
Deberías considerar la posiblidad que este dañado. Tal vez si o tal vez no, pero un dispositvo con salida digital no suele comportarse extraño, eso queda para los analógicos.

Antes de regañarme por las “normas “ hace más de 3 meses que vengo estudiando este problema y vi todas las posibilidades en Google y Yahoo ! Tantas que decidí entrar a un foro para pedir ayuda
Vi tanta información que en una de las tantas páginas dice que en Vin que sería el primer terminal. Se conecta a 5 VDC adicional a los 3.3VDC

Si usted se fija en este link

Tiene entrada de 5VDC. Mi pregunta puntal es si alguien sabía si también era necesario conectarlo.
Por otro lado no descarto que el sensor este defectuoso. Hoy voy a cambiarlo por un BMP280 para ver si me da mejor resultado.

Con respecto a las variaciones es de +- 1,5 mb que en pies es casi 45 pies de diferencia

Para un sistema de medición en pies es mucho

Cuando haga las pruebas con el bmp280 les cuento cómo resultó

Tu sensor dice que funciona de 5 a 3.3V.
Al menos en lo que en el link que yo te puse sugiere.

Tiendo a pensar que tienes un sensor defectuoso.
Veremos que dicen las pruebas del BMP280.