BME280 - inaccurate temperature (+1°C)

Hello! I have got a BME280 -based sensor.

Despite the fact I have used all the possible libraries I have found — the temperature is always +0.9-1.1 °C too high (compared with mercury thermometer, DS18B20 and home weather station).

I am aware of self-heating problem and using Force mode, currently like this:

#include <Adafruit_Sensor; // https://github.com/adafruit/Adafruit_Sensor
#include <Adafruit_BME280; // https://github.com/adafruit/Adafruit_BME280_Library
Adafruit_BME280 bme;

...

bme.begin();

//BME280 scenario
Serial.println("Weather Station Scenario:");
Serial.println("forced mode, 1x temperature / 1x humidity / 1x pressure oversampling,");
Serial.println("filter off.");
bme.setSampling(Adafruit_BME280::MODE_FORCED,
Adafruit_BME280::SAMPLING_X1, // temperature
Adafruit_BME280::SAMPLING_X1, // pressure
Adafruit_BME280::SAMPLING_X1, // humidity
Adafruit_BME280::FILTER_OFF);

...

bme.takeForcedMeasurement();
Serial.println(bme.readTemperature());

I have 2 BME280 sensors. Both have +1 °C inaccuracy. I am OK with it (can be shifted on software level), but I am afraid that humidity sensor value depends on temperature, though humidity can be inaccurate as well (can't compare at the moment).

What's wrong with me or my sensor? How to get a correct temperature?

Please help. Thank you!

P.S.
Both 3.3 and 5 V power supply gives the same inaccurate temperature result.

The data sheet says that the typical (most usual) accuracy of the temperature signal of BME280 is +/-1oC. The data sheet has not mentioned anything in the max and min columns. Your BME280 exhibits an accuracy of +/-1.1oC. There is a 0.1o error/offset. Is it an error or a shift (offset)? -- can be verified by observing its responses at some other temperatures and comparing with the good one which you have. If it is an offset, it can be cancelled in the software as you have mentioned.

Moreover, for comparison reasons, we need a reference value. The reading of one BME280 can not be taken as a reference to evaluate the accuracy of another BME280. I have two temperature sensors LM35 and BME280 running at the same time. LM35 shows 29.54oC and BME280 shows 30.75oC. Which one is correct and accurate? To get the answer, I need another one which has been certified by the Testing Institution as a Reference Sensor (It is available at a very high cost.)

Are the mercury thermometer and the home weather station calibrated ? Probably not, so I don't care what temperature they have.

The DS18B20 is ±0.5°C
The BME280 is ±1°C

When there is a differce between them of 1.5°C, that is still within the specifications.

The BME280 is one of the most accurate humidity sensors. That is the only sensor that I'm willing to use for the humidity.

If you want a better temperature sensor than the DS18B20, there are a number of ±0.1°C temperature sensors at Tindie: https://www.tindie.com/products/closedcube/lmt70-01c-precision-analog-temperature-sensor/

To measure the temperature and humidity in a room, there is no need to look for something better than the DS18B20 with the BME280. In a room, there are different temperature and humidity zones. They both are not the same for the whole room.

Thank you guys! :slight_smile:

GolamMostafa, Koepel do you think temperature sensor value has any influence on humidity sensor results?

Thanks!

Yes, of course it does. No, of course it does not. Both are true. This is almost quantum mechanics :wink:

It measures the Relative Humidity, not how much mass or volume of water vapor is in the air.

When the temperature of one BME280 is +1°C offset and the temperature of another BME280 has an offset of -1°C, then I suppose that they both can have the same humidity. However the humidity is ±3% inaccurate. So this is all theory, in real life it does not matter.

The temperature error is very important if you are doing any calculation using humidity. Fir example, calculating Dew Point.

Use the temperature from the BME280 and not any other temperature in those calculations.

blowing off some dust as i have the same problem but a bit more odd

at -18C it's correct (frezzer is set to -18C)
@ 5C it shows as 11C (fridge is set to 5C)
@ 24C it shows as 26C (messured with 2 ATC Semitec 104GT-2 sensors connected to 3D printer)

i'm trying to figure a metod to get temp closer to 30C and see if difference drops

and i will try and verify temps with a Mercury based temp gauge

but how would i correct/calbrate the readings so the "error" is more uniform?

Put the sensor in a different part of the fridge and see if it reads any closer to 5C.

Don

There is problem with temperature drift in BME280 - please look here - BME280 wrong readings / oversampling mode · Issue #1274 · rwaldron/johnny-five · GitHub - , and here - BME280 temperature values seems to be (much) higher then DHT22 values. · Issue #147 · opendata-stuttgart/sensors-software · GitHub
My BME280 also shows temperature about 5C higher (25C) than ambient (20C).
I compeared BME280 to multimeter Brymen 525s, which I got few years for now, and I think its measurings are quite accurate.

My english in quite poor, and I'm also begginer at Arduino, so can't fully understand on what should I change in code to get accurate readings.

Could someone please help me understand that?

Please do not hijack threads, and post only after reading and following the directions in "How to use this forum".

Sorry.
I thought this will be good continuation of previous posts.