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
Gast
#3387516
Stefan B. schrieb: > Hatte das schonmal jemand? Woher kommt denn die ca. 30000? Erzeugst du die Ausgabe mit einer Software und - wenn ja - wie sieht die aus?
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.
Gast
#3387546
Stefan B. schrieb: > Das sind die drei wesentlichen Teile. Und welche Funktionen benutzt du davon in welcher Reihenfolge. Und was gibst du dann aufs LCD aus?
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.

