X-Git-Url: https://git.smho.de/gw/?p=owSlave2.git;a=blobdiff_plain;f=common%2FI2C%2FBME680.c;h=3d2bec764e98b44244408a2c5b02c781c08a39b2;hp=990786770464b92e8706c6a813f296482ce8b184;hb=refs%2Fheads%2Fmaster;hpb=6467d8138460abffd9ddabc7b0a9f00c764af19c diff --git a/common/I2C/BME680.c b/common/I2C/BME680.c index 9907867..3d2bec7 100644 --- a/common/I2C/BME680.c +++ b/common/I2C/BME680.c @@ -76,8 +76,9 @@ #include #include +#include -#include "USI_TWI_Master.h" +#include "TWI_Master.h" #include "BME680.h" #define WC 0b11101100 @@ -237,6 +238,14 @@ const float lookup_k2_range[16] PROGMEM = { 8e6, 4e6, 2e6, 1e6,499500.4995, 248262.1648, 125000, 63004.03226, 31281.28128, 15625, 7812.5, 3906.25,1953.125,976.5625, 488.28125, 244.140625}; +const float lookup_k1_range1[16] = { + 1, 1, 1, 1, 1,0.99, 1, 0.992, +1, 1, 0.998, 0.995, 1, 0.99, 1, 1}; +const float lookup_k2_range1[16] = { + 8e6, 4e6, 2e6, 1e6,499500.4995, 248262.1648, 125000, 63004.03226, +31281.28128, 15625, 7812.5, 3906.25,1953.125,976.5625, 488.28125, 244.140625}; + + double bme680_compensate_gas_double(uint16_t gas_adc_u16, uint8_t gas_range_u8) { double gas_res_d = 0; @@ -248,11 +257,14 @@ double bme680_compensate_gas_double(uint16_t gas_adc_u16, uint8_t gas_range_u8) double var1 = 0; float a1= pgm_read_float(&(lookup_k1_range[gas_range_u8])); float a2= pgm_read_float(&(lookup_k2_range[gas_range_u8])); + //float a1=lookup_k1_range1[gas_range_u8]; + //float a2=lookup_k2_range1[gas_range_u8]; range_switching_error_val = calib.range_switching_error; var1 = (1340.0 + (5.0 * range_switching_error_val))*a1; + gas_res_d = var1*a2/(gas_adc_u16-512.0+var1); return gas_res_d; } @@ -345,6 +357,7 @@ void readBMP680(int16_t *T,uint16_t *H,uint32_t *P,uint16_t *G){ I2c_StopCondition(); *G=(((uint16_t)g1)<<2)|(g2>>6); *P=*G; + *G= bme680_compensate_gas_double(*G,g2&0xF)/10.0; int32_t temp_comp = 0; @@ -431,6 +444,5 @@ void readBMP680(int16_t *T,uint16_t *H,uint32_t *P,uint16_t *G){ *H=g2; //*P= - }