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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.