| 数据搜索系统,热门电子元器件搜索 |
|
BMP280 数据表(PDF) 44 Page - Bosch Sensortec GmbH |
|
|
|||||||||||||||||||||||||||||
BMP280 数据表(HTML) 44 Page - Bosch Sensortec GmbH |
|
44 / 49 page ![]() Bosch Sensortec | BMP280 Data sheet 44 | 49 Modifications reserved | Data subject to change without notice Document number: BST-BMP280-DS001-26 Revision_1.26_102021 8. Appendix 1: Computation formulae for 32 bit systems 8.1 Compensation formula in floating point Please note that it is strongly advised to use the API available from Bosch Sensortec to perform readout and compensation. If this is not wanted, the code below can be applied at the user’s risk. Both pressure and temperature values are expected to be received in 20 bit format, positive, stored in a 32 bit signed integer. The variable t_fine (signed 32 bit) carries a fine resolution temperature value over to the pressure compensation formula and could be implemented as a global variable. The data type “BMP280_S32_t” should define a 32 bit signed integer variable type and could usually be defined as “long signed int”. The revision of the code is rev.1.1. // Returns temperature in DegC, double precision. Output value of “51.23” equals 51.23 DegC. // t_fine carries fine temperature as global value BMP280_S32_t t_fine; double bmp280_compensate_T_double(BMP280_S32_t adc_T) { double var1, var2, T; 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 = (BMP280_S32_t)(var1 + var2); T = (var1 + var2) / 5120.0; return T; } // Returns pressure in Pa as double. Output value of “96386.2” equals 96386.2 Pa = 963.862 hPa double bmp280_compensate_P_double(BMP280_S32_t adc_P) { double var1, var2, p; 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); 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; var2 = p * ((double)dig_P8) / 32768.0; p = p + (var1 + var2 + ((double)dig_P7)) / 16.0; return p; } 8.2 Compensation formula in 32 bit fixed point Please note that it is strongly advised to use the API available from Bosch Sensortec to perform readout and compensation. If this is not wanted, the code below can be applied at the user’s risk. Both pressure and temperature values are expected to be received in 20 bit format, positive, stored in a 32 bit signed integer. The variable t_fine (signed 32 bit) carries a fine resolution temperature value over to the pressure compensation formula and could be implemented as a global variable. The data type “BMP280_S32_t” should define a 32 bit signed integer variable type and can usually be defined as “long signed int”. The data type “BMP280_U32_t” should define a 32 bit unsigned integer variable type and can usually be defined as “long unsigned int”. Compensating the pressure value with 32 bit integer has an accuracy of typically 1 Pa (1-sigma). At very high filter levels this adds a noticeable amount of noise to the output values and reduces their resolution. // Returns temperature in DegC, resolution is 0.01 DegC. Output value of “5123” equals 51.23 DegC. // t_fine carries fine temperature as global value BMP280_S32_t t_fine; BMP280_S32_t bmp280_compensate_T_int32(BMP280_S32_t adc_T) { BMP280_S32_t var1, var2, T; |
|
链接网址 |
| ALLDATASHEET是否为您带来帮助? [ DONATE ] |
关于 Alldatasheet | 广告服务 | 联系我们 | 隐私政策 | 数据表链接 | 链接交换 | 制造商名单 All Rights Reserved©Alldatasheet.com |
| Russian : Alldatasheetru.com | Korean : Alldatasheet.co.kr | Spanish : Alldatasheet.es | French : Alldatasheet.fr | Italian : Alldatasheetit.com Portuguese : Alldatasheetpt.com | Polish : Alldatasheet.pl | Vietnamese : Alldatasheet.vn Indian : Alldatasheet.in | Mexican : Alldatasheet.com.mx | British : Alldatasheet.co.uk | New Zealand : Alldatasheet.co.nz |
|
Family Site : ic2ic.com |
icmetro.com |