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
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.
// 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");
}
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
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.
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?
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.
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
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ó