GY-65/BMP085 zeigt falschen Druck

OP Persönliche Seite #3387505
Lesenswert?

Hallo,

ich bin echt ratlos. Ich weiss nicht, wo der Fehler liegt.
Ich habe einen Drucksensor, der soweit auch funktioniert, allerdings 
zeigt er einen falschen Druck an (um die 30000 siehe Bild). Temperatur 
ist Okay, also kann es am I2C nicht liegen.
Ich habe 2 Sensoren getestet und beide zeigen die gleichen Werte.

Meiner Meinung nach sollten um die 10000 rauskommen.

Hatte das schonmal jemand?

Gruss
Angehängte Dateien:
OP Persönliche Seite #3387527
Lesenswert?

Das sind die drei wesentlichen Teile.

Ich verstehe nur nicht, warum die Temperatur stimmt. Die 
atmega_bmp085_lib.c habe ich auch schon nach Fehlern durchsucht, 
entweder ich habe da was übersehen oder meine Vermutung ist, dass der 
Drucksensor nen Schaden hat, wobei ich aber nicht verstehe, warum der 
andere Sensor das Gleiche anzeigt.
Angehängte Dateien:
OP Persönliche Seite #3387559
Lesenswert?

In der Main zuerst I2C:

....
#include "camera/servo.h"
#include "sendmail.h"

#include "BMP085/atmega_bmp085_lib.h"

int i2c_init(void);


volatile unsigned int variable[MAX_VAR];

// RoBue:
....




dann kurz vor while:





....

      ow_array[i]=OW_MINMAX;
    }
    DS18X20_start_meas( DS18X20_POWER_PARASITE, NULL );
    for(a=0;a<1000000;a++){asm("nop");};
    auslesen = 0;
    minmax = 1;
#endif


//-----------------------------------------
// Allocate memory
//-----------------------------------------
  int32_t temperature = 0;
  int32_t pressure = 0;
  int16_t BMP085_calibration_int16_t[8];
  int16_t BMP085_calibration_uint16_t[3];
  uint8_t error_code=0;
//-----------------------------------------
// Initialize Stuff
//-----------------------------------------
  _delay_ms(11);
  i2c_init();    //Initialize TWI
  BMP085_Calibration(BMP085_calibration_int16_t, 
BMP085_calibration_uint16_t,&error_code);////Initialize BMP085


//Hauptschlfeife
// *************
  //WAIT(10000);

  while(1)
  {


  bmp085Convert(BMP085_calibration_int16_t, 
BMP085_calibration_uint16_t,&temperature, &pressure,&error_code);

......



und anschließend aufs LCD:


......

        CX = LCD_C1; // erster LCD Controller
      lcd_clear();


       lcd_print(3,0,"%i",pressure);
       lcd_print(3,7,"%i",temperature/10);
       lcd_print(3,11,"%i", bmp085CalcAltitude(pressure));
       lcd_print(3,18,"%i",error_code);


.......




Habe ich da was übersehen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren