欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: bmp280溫度傳感器數(shù)據(jù)補償算法的兩種實現(xiàn)方式程序 [打印本頁]

作者: 卡卡西718    時間: 2018-11-17 10:49
標題: bmp280溫度傳感器數(shù)據(jù)補償算法的兩種實現(xiàn)方式程序
int64_t var1,var2,p;
   var1=((int64_t)bmp280Cal1.t_fine)-128000;
   var2=var1*var1*(int64_t)bmp280Cal1.dig_P6;
   var2=var2+((var1*(int64_t)bmp280Cal1.dig_P5)<<17);
   var2=var2+(((int64_t)bmp280Cal1.dig_P4)<<35);
   var1=((var1*var1*(int64_t)bmp280Cal1.dig_P3)>>8)+((var1*(int64_t)bmp280Cal1.dig_P2)<<12);
   var1=(((((int64_t)1)<<47)+var1))*((int64_t)bmp280Cal1.dig_P1)>>33;
   if (var1==0)
       delay_ms(10);
   p=1048576- bmp280RawPressure1;
   p=(((p<<31)-var2)*3125)/var1;
   var1=(((int64_t)bmp280Cal1.dig_P9)*(p>>13)*(p>>13))>>25;
   var2=(((int64_t)bmp280Cal1.dig_P8)*p)>>19;
   p=((p+var1+var2)>>8)+(((int64_t)bmp280Cal1.dig_P7)<<4);
p=p/25600.0;
longbmp280_GetValue(void)
{
    long adc_T;
    long adc_P;
    long var1, var2, t_fine, T, p;
    adc_T =bmp280_MultipleReadThree(BMP280_TEMP_ADDR);
    adc_P =bmp280_MultipleReadThree(BMP280_PRESS_ADDR);
    if(adc_P == 0)
    {
        return 0;
    }
    //Temperature
    var1 = (((double)adc_T)/16384.0-((double)dig_T1)/1024.0)*((double)dig_T2);
    var2 =((((double)adc_T)/131072.0-((double)dig_T1)/8192.0)*(((double)adc_T)
               /131072.0-((double)dig_T1)/8192.0))*((double)dig_T3);
    t_fine = (unsigned long)(var1+var2);
    T = (var1+var2)/5120.0;
    var1 = ((double)t_fine/2.0)-64000.0;
    var2 = var1*var1*((double)dig_P6)/32768.0;
    var2 = var2 +var1*((double)dig_P5)*2.0;
    var2 =(var2/4.0)+(((double)dig_P4)*65536.0);
    var1 = (((double)dig_P3)*var1*var1/524288.0+((double)dig_P2)*var1)/524288.0;
    var1 = (1.0+var1/32768.0)*((double)dig_P1);
    p = 1048576.0-(double)adc_P;
    p = (p-(var2/4096.0))*6250.0/var1;
    var1 = ((double)dig_P9)*p*p/2147483648.0;
    var2 = p*((double)dig_P8)/32768.0;
    p = p+(var1+var2+((double)dig_P7))/16.0;
    return p;
}


作者: ax6808    時間: 2022-2-10 17:47
目前基本正常,最后的主要問題:
(1) dig_P1 為unsigned short,但我讀出來顯示總是負數(shù)(但好像不影響最終結(jié)果),其他參數(shù)都正常; 不知道哪里錯了,統(tǒng)一定義和讀取顯示的。
(2)計算氣壓時,已加手冊公式里的一句:if (var1 == 0) { retune 0};
但最后一個var1不知為何讀出來都總是0,于是我又在后面再加了一句“if (var1 == 0) { retune0};不然繼續(xù)算下去最終讀數(shù)總是低1850Pa(但沒用到dig_P7、8、9);
P: var1 = ...;
var2 = ...;
var2 = ...;
var2 = ...;
var1 = (((double)dig_P3)*var1*var1/524288.0+((double)dig_P2)*var1)/524288.0;
var1 = (1.0+var1/32768.0)*((double)dig_P1);
if (var1 == 0.0) return 0; //avoid exception caused by division by zero避免被零除異常;
p = 1048576.0-(double)adc_P;
p = (p-(var2/4096.0))*6250.0/var1;
var1 = ((double)dig_P9)*P*P/2147483648.0; //這個 var1讀出來總是0???
if (var1 == 0.0) return 0; // 于是自己再加了1句:更準了(后面2句無效)!
var2 = p*((double)dig_P8)/32768.0;
p = p+(var1+var2+((double)dig_P7))/16.0;
return p;
(3)GY-63模塊如此便宜,真不敢相信是否原裝貨?
(4)其實16位足夠一般人用了,用BMP180也夠了,模塊還小不少,價錢倒還貴一點停產(chǎn)了,不知道什么庫存或拆件?MS5611也試過只接4腳就可用,但貴很多很多暫無必要。
作者: ax6808    時間: 2022-2-10 17:48
STC8+280/180/5611硬件I2C都實現(xiàn)了,各有千秋,其實16位好像足以。280定點浮點公式都可以,定點不顯示小數(shù)點。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1