BMP085 basınç hesaplaması

Başlatan muhittin_kaplan, 24 Kasım 2016, 15:00:07

muhittin_kaplan

Merhaba,

https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf

datasının 13. sayfasında hesaplamayı vermiş. Temp de problem yok. ama basınca geldiğimde anlamsız sonuçlarla karşılaşıyorum. Sonuç olarak verdiği bacınç değerinde Eskişehir -2000mt lerde felan çıkıyor.
startup değerler
short          AC1 = I2C_getword(0xEE, 0xAA);//AA ile AB yi al
short          AC2 = I2C_getword(0xEE, 0xAC);//AC ile AD yi al
short          AC3 = I2C_getword(0xEE, 0xAE);
unsigned short AC4 = I2C_getword(0xEE, 0xB0);
unsigned short AC5 = I2C_getword(0xEE, 0xB2);
unsigned short AC6 = I2C_getword(0xEE, 0xB4);
short           B1 = I2C_getword(0xEE, 0xB6);
short           B2 = I2C_getword(0xEE, 0xB8);
short           MB = I2C_getword(0xEE, 0xBA);
short           MC = I2C_getword(0xEE, 0xBC);
short           MD = I2C_getword(0xEE, 0xBE);


sıcaklık hesaplaması
I2C_putbyte(0xEE,0xF4,0x2e);
    CycleDelay(10000000);
    uT = I2C_getword(0xEE, 0xF6);

    X1=(uT-AC6)*AC5/32768;
    X2=MC*2048/(X1+MD);
    B5=X1+X2;
    T=(B5+8)/16;


basıç hesabı

I2C_putbyte(0xEE,0xF4,0x84);
    CycleDelay(10000000);
    uP = I2C_getword(0xEE, 0xF6);


    B6 = B5 - 4000;						//This allows the function to be called multiple times without updating
	X1 = (B2 * (B6 * B6 /4096))/2048;			//The termperature raw reading
	X2 = AC2 * B6 /2048;
	X3 = X1 + X2;
	B3 = ((AC1*4 + X3) << OSS + 2)/4;
	X1 = AC3 * B6 /8192;
	X2 = (B1 * (B6 * B6 / 4096))/65536;
	X3 = ((X1 + X2) + 2) /4;
	B4 = (AC4 * (unsigned long)(X3 + 32768)) / 32768;
	B7 = ((unsigned long)uP - B3) * (50000 >> OSS);
	if (B7<0x80000000){
        p=(B7*2)/B4;
	}
	else{
        p=(B7/B4)*2;
	}

	X1 = (p/256) * (p/256);
	X1 = (X1 * 3038)/65536;
	X2 = (-7357 * p) /65536;
	p = p + (X1 + X2 + 3791)/16;






muhittin_kaplan


muhittin_kaplan