BME680 temperature not calibrated

I'm using some BME680s with a ESP32 to make a database but i think that my bmes are not calibrated because the measurements are too higher then what have to be, the enviroment temperature is 5ºC and the bmes are measuring 20ºC. How can I fix this?

The documentation states: "The temperature measurement is controlled by the osrs_t<2:0> setting which is detailed in
Section For the temperature measurement, oversampling is possible to reduce the noise. The resolution of the
temperature data depends on the IIR filter (see Section and the oversampling setting: ".
Are you following the documentation?

What software are you using? I've been using BME280's which are the same temperature sensor. The BME devices have registers programmed into each that must be read and used to compensate the "raw" readings. Are you using software that does this?

I'm using the adafruit lib and a code with some functions to config the oversampling settigns. I think this is not the problem!

I'm programing in the arduino IDE.

Is the sensor placed too close to something that emits heat - like the ESP32?

Yes, it is in the same circuit with esp and anothers sensors.

What I meant was that if the sensor is too close to something that generates heat, the temperature it measures may be influenced by the heat source. Try to move the sensor away from all heat sources.

An error if 15°C is very large. Something small will not cause such a change.

I'm not familiar with the adafruit library. When I was testing a BME680 I used the Bosch "BME680_driver-master" and had accurate temperature readings.

It was more than a few years ago so things have likely changed.

An ESP32 with all peripherals enabled can become quite hot. If the sensor is inside a poorly vented enclosure with the ESP, a temperature which is 15°C off is absolutely plausible. Even if the sensor-chip is pointing out of the enclosure, the PCB it is mounted on may heat up and cause the issue.

Maybe can be this, but i can not move the sensor away cuz the circuit is already soldered on a PCB.

Sorry guys, my mistake here. The temperature is 5ºC outdoor and I was measuring indoor, but anyaway I think it's not calibrated cuz it's much diference. The environment where the sensor is installed does not have any heating system.

OK so you feel the temperature is still in error by some amount. Can you describe your device? You said it all soldered on a PCB.

  • Was the BME680 soldered on the board by you or did you solder a eBay board to your board?
  • Is you device in a case?
  • Is the BME680 near a linear regulator?
  • Is the BME680 powered by 3.3V or 5V?
  • What else is connected to your ESP?

In building a weather station, I used a ESP32 and a BME680 in the same case as the ESP32. The heat from the ESP32 was enough to give me readings of up to 15F off. I moved the sensor to another box and the temp readings were more closely matched to reality.

1 Like

I have a module soldered by me with esp, bme680, ze08 and mq135, all sensors powered by 3.3V.

The white construct at the top of the box is a Steven's Shield where the BME680 resides separate from the CPU.

The Stevenson's shield leaves the BME680 exposed but protected from the weather.

1 Like

IF for a test we assume the issue is as @Idahowalker suggested. I suggest you simply point a fan at you BME680 and see if the temperature drops

1 Like

Ok, i will try it. Thanks for de help guys.