I get data from BME280.
Temperature and pressure is correct, but humidity data is not correct.
Reading calibrate coefficients..
dig_H1=(unsigned short)buf_calibration_data[24];
STATUS_BME280=HAL_I2C_Mem_Read(&hi2c1, BME280_ID<<1,(uint16_t)BME280_CALIB_26, (uint16_t) 1, buf_calibration_data, (uint16_t)10, 1000);
dig_H2=(signed short)buf_calibration_data[1]<<8|(signed short)buf_calibration_data[0];
dig_H3=(unsigned short)buf_calibration_data[2];
dig_H4=(signed short)buf_calibration_data[4]<<3|(signed short)buf_calibration_data[5];
dig_H5=(signed short)buf_calibration_data[6]<<11|(signed short)buf_calibration_data[7];
dig_H6=(signed short)buf_calibration_data[8];
alculation function I get from datasheet BME280.
uint32_t calulete_humidity(uint32_t adc_H)
{
double var_H;
var_H = (((double)t_fine)-76800.0);
var_H = (adc_H-(((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;
sprintf(str_BME280,"HUMIDITY: %d________\r\n", (int)var_H); // convert in str
size=sizeof(str_BME280);
HAL_UART_Transmit(&huart1 , (uint8_t *)str_BME280, size, 0xFFF);
return var_H;
}
I thing ADC value humidity is wrong..
somebody have adc_h value???
Temperature and pressure is correct, but humidity data is not correct.
Reading calibrate coefficients..
dig_H1=(unsigned short)buf_calibration_data[24];
STATUS_BME280=HAL_I2C_Mem_Read(&hi2c1, BME280_ID<<1,(uint16_t)BME280_CALIB_26, (uint16_t) 1, buf_calibration_data, (uint16_t)10, 1000);
dig_H2=(signed short)buf_calibration_data[1]<<8|(signed short)buf_calibration_data[0];
dig_H3=(unsigned short)buf_calibration_data[2];
dig_H4=(signed short)buf_calibration_data[4]<<3|(signed short)buf_calibration_data[5];
dig_H5=(signed short)buf_calibration_data[6]<<11|(signed short)buf_calibration_data[7];
dig_H6=(signed short)buf_calibration_data[8];
alculation function I get from datasheet BME280.
uint32_t calulete_humidity(uint32_t adc_H)
{
double var_H;
var_H = (((double)t_fine)-76800.0);
var_H = (adc_H-(((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;
sprintf(str_BME280,"HUMIDITY: %d________\r\n", (int)var_H); // convert in str
size=sizeof(str_BME280);
HAL_UART_Transmit(&huart1 , (uint8_t *)str_BME280, size, 0xFFF);
return var_H;
}
I thing ADC value humidity is wrong..
somebody have adc_h value???