Need to re-calibrate a Sparkfun BMP085 barometer

Hi,

I’m measuring the atmospheric pressure using 2 Sparkfun BMP085 barometers and the readings of the barometers differs substantially.

Barometer1 (B1) gives a compensated pressure in the vicinity of 100450 pascal.

Barometer2 (B2) gives a compensated pressure in the vicinity of 100200 pascal.

Both barometers readings fall into the range of my elavation location (Vancouver BC ~100 meters above sea level).

Also, both pressures seems stable. I monitor the pressure every 5 seconds for an entire night and the pressure trend patterns is the same. For example, the pressure drops down similarly for B1 and B2 overnight.

The difference seems to be as an offset or scale, which leads me to believe that there is a problem in the set of calibration parameters for one of the barometers.

Moreover, I compared the pressure reading with a third barometer (B3) of different type (LPS331AP from STMicroelectronics) and its pressure is similar to the pressure of B1.

This leads me to suspect that the calibration parameters for B2 are incorrect.

My question is:

Is there a way to recalibrate the B2? i.e. what is the procedure to repeat the process done in the factory and come up with a new set of numbers for B2?

Additional details about the hardware configuration, and the calibration parameters is described below.

Regards,

Avner

Additional details:


To further simplify the problem, I looked at the compensated temperature, which is resuired preceding step before the calculation of the compensated pressure.

The calculation of the compensated temperature involves fewer parameters. It computes the parameter b5, which impacts the temperature and the compensated pressure.

I found that the compensated temperature differs between B1 and B2.

The temperature of B1 is 21.9 deg Celsius

The temperature of B2 is 21.2 deg Celsius

The 2 tempratures differ by 0.5 deg Celsius. I’m not sure if this is a preoblem since this difference is in range of the expected accuracy error according to the BMP085

datasheet http://www.seeedstudio.com/wiki/images/ … 000-06.pdf

The equations for the calculation of the compensated temperature are listed below, and involve parameters ac5 and ac6.

  long x1 = ( (ut - ac6) ) * ac5 ) >> 15;
  long x2 = mc << 11) / (x1 + md);
  b5 = x1 + x2;
  compensatedTemperature = (b5 + 8) >> 4;

The BMP085 barometers are operated as follows:

  • The 2 BMP085 barometers are connected to Arduino Uno.

  • The End of Conversion (EOC) interruption signal is used to wait between readings.

  • The xclr is used to toggle between the 2 sensors (the parameters set are toggled to match the active barometer).

  • The calibration parameters of the 2 barometers are:

B1:
ac1: 7034
ac2: -1151
ac3: -14441
ac4: 34288
ac5: 24521
ac6: 21975
b1: 5498
b2: 61
mb: -32768
mc: -11075
md: 2432

B2:
ac1: 8820
ac2: -1229
ac3: -14589
ac4: 35384
ac5: 24493
ac6: 20392
b1: 5498
b2: 67
mb: -32768
mc: -11075
md: 2432

The data sheet for the BMP085 says that the absolute accuracy of the pressure sensor is typically +/- 1 hPa, with maximum error +2.5 hPa, and this is the difference you are seeing between the two. So, they are performing according to specifications. Short of comparing them to a laboratory-grade precision pressure transducer, the best you can do is average the readings from the two devices together.

Thanks for replying.

The data sheet for the BMP085 says that the relative accuracy pressure is +/-0.2 hPa

I should also note that the barometers operate in a ultra high resolution mode (oversampling_setting OSS 3). The data sheet specifies that a typical RMS noise of 0.03 hPa for this mode, which indeed fits the individual measurements variance that I am seeing. I researched the Internet and absolute pressure is defined as relative to vacuum, which is not my case, so I was hoping that the measurment accuracy will fit the relative accuracy.

Can you explain the difference between absolute pressure accuracy vs relative pressure accuracy?

Also, what is the meaning of the RMS noise of 0.03 hPa if the result itself is distorted by a factor of 100 of this measurement?

I measured the pressure difference between B1, B2 and B3 in the following two settings below.

I was hoping that if the difference between B1 and B2 could be compensated with a constant offset.

But the barometers don’t change by the same amount.

The diff between B1 and B3 has changed between the two settings from 5 to -21, i.e. by -26

The diff between B2 and B3 has changed between the two settings from 675 to 599, i.e. by -76

Regards,

Avner

Setting1 - all barometers are adjacent and at the same height
B1 val 100998
B2 val 101668
B3 val 100993
B1 num samples 120
B2 num samples 150
B3 num samples 496
B1 variance 20.2
B2 variance 10.9
B3 variance 28.8
diff_B1_to_B3 5
diff_B2_to_B3 675
diff_B1_to_B2 -670

Setting2 - barometers B1, B2 are adjacent and the same height. Barometer B3 is lower by by ~3 meters
B1 val 100001
B2 val 100621
B3 val 100022
B1 num samples 120
B2 num samples 146
B3 num samples 493
B1 variance 25.0
B2 variance 9.0
B3 variance 40.5
diff_B1_to_B3 -21
diff_B2_to_B3 599
diff_B1_to_B2 -620

If you are measuring the atmospheric pressure, that is by definition relative to the vacuum and so is an absolute measurement. So, the absolute accuracy is the appropriate measure of device performance. Like most other MEMS pressure sensors, I suspect that the BMP085 contains a partially evacuated chamber closed off by a membrane, with a resistive sensor to measure pressure-induced deformations.

I don’t know for sure what Bosch means by “relative accuracy”, but my guess is that it is in relation to some other measurement taken by the same device – for example if a storm front hits and the pressure drops from 1020.00 hPa to 950.00 hPa, then that difference should be accurate to +/- 0.2 hPa.

From your measurements, B2 does seem out of line with respect to B1 and B3, and could be faulty. However, keep in mind that the BMP085 is capable of measuring a very large pressure range and the largest differences you are seeing amount to less than 1% of that range. That is pretty good for a cheap, mass produced sensor. But if you really want to know, find a professional-grade barometer for comparison.

That is pretty good for a cheap, mass produced sensor. But if you really want to know, find a professional-grade barometer for comparison.

Yep, this is common.

If you have a high accuracy barometer then you could do a calibration in software after taking the measurement.