lg223311 发表于 2020-9-10 15:29:18

STC趟了一周BME280坑现在能出数据了!

1.地址错误搞了好几天,读出的数据都是255.以为模块是坏的,又买了一个新的BME280搞了半天,在网上的看别的程序是0XEC才读出数据。原来这个地址是7位的,我老 以为是0XEC。
The 7-bit device address is 111011x. The 6 MSB bits are fixed. The last bit is changeable by
SDO value and can be changed during operation. Connecting SDO to GND results in slave
address 1110110 (0x76); connection it to VDDIO results in slave address 1110111 (0x77), which
is the same as BMP280’s I²C address. The SDO pin cannot be left floating; if left floating, the
I²C address will be undefined.

2.手册上的例程是STM的可以用64位的系统,我的 STC12C5A60S2好像不支持,自己水平又菜,就在网上东找拭西找找,复制粘贴下载,也算搞的读出数据了,

3.读出的来温度数据精度很高能到0.1度,测试比较靠谱。

4读出的气压值感觉也靠谱,

5.但用气压计算出来的数据和我的手表对比是错的,差的比较多。

6.湿度读出来的87%但不知道这个数据对不对!

lg223311 发表于 2020-9-10 15:30:27

//海拔高度计算公式

float BMP280_calcAltitude()
{

    float A=BMP280_pressure()/101325.0;
    float B=1.0/5.25588;
    float C=pow(A,B);
    C=1.0-C;
    C*=44330.0;

    return C;
}

lg223311 发表于 2020-9-10 15:31:14


湿度计算公式
double BMP280_humidity(void)
{
    doublevar_H;

    var_H = (((double)t_fine) - 76800.0);
    var_H = (BME280_readdata16(0xFE)-(((double)dig_H4) * 64.0 + ((double)dig_H5) / 16384.0 * var_H)) *
    (((double)dig_H2) / 65536.0 * (1.0 + ((double)dig_H6) / 67108864.0 * var_H *
    (1.0 + ((double)dig_H3) / 67108864.0 * var_H)));
    var_H = var_H * (1.0 - ((double)dig_H1) * var_H / 524288.0);
    if (var_H > 100.0)
    var_H = 100.0;
    else if (var_H < 0.0)
    var_H = 0.0;
    return var_H;
}

takashiki 发表于 2020-9-10 15:48:25

lg223311 发表于 2020-9-10 15:31
湿度计算公式
double BMP280_humidity(void)
{


虽然你写了那么多的double,但是Keil C51的double等于float。是不是计算中丧失了精度造成的

lg223311 发表于 2020-9-10 16:58:49

打上字显示清楚

lg223311 发表于 2020-9-10 17:02:25

takashiki 发表于 2020-9-10 15:48
虽然你写了那么多的double,但是Keil C51的double等于float。是不是计算中丧失了精度造成的 ...

刚改成浮点型试了一下,还是一样的! 湿度算出来的还差不多,高度算出来的差好远!就是错的!不知道什么问题

Himem 发表于 2020-9-10 17:58:59

本帖最后由 Himem 于 2020-9-10 18:02 编辑

气压换算的海拔就是不准的,不同天气下气压都差别很大,
短时间下气压差算出的海拔差还是有意义的
要根据本地数据校零 用当天gps的高度值修正下就好了

lg223311 发表于 2020-9-11 08:57:29

Himem 发表于 2020-9-10 17:58
气压换算的海拔就是不准的,不同天气下气压都差别很大,
短时间下气压差算出的海拔差还是有意义的
要根据本 ...

好的,谢谢,我其实最想知道的就是先有个数据检验一下我的程序算法是不是正确的。最后在去加补偿值得出正确的数据。
页: [1]
查看完整版本: STC趟了一周BME280坑现在能出数据了!