Compensate temperature readings on always-on enviro indoor pico w?

Hi there. I have a couple of the “pico w aboard” enviro indoor sensors, and the temperature readings are definitely too high (and too similar), presumably because the boards are connected to usb power and thus never go into deep sleep.

Has anyone had a go at compensating for that situation to get more realistic temperatures, or is that not really feasible?


If the sensor on that board (BME688) is running continually I’ve read that this alone (i.e. the sensor on it’s own, ignoring other heat sources on the board) can raise the measured temperature by ~ 1degC. If you google ‘BME688 self-heating’ you’ll see what I mean.

I’ve seen a few examples floating around for various temperature sensors, and they almost all amount to

temperature = temperature - precalculated_value

where precalculated_value can be pretty simple

# linear parallel
precalculated_value = 2
# linear increase
precalculated_value = temperature * percentage
# linear decrease
precalculated_value = some number / temperature

or much more complex with a curve based on the temperature and even scalled by minimum up time

I think the proximity of an always-on pico generates too much of a false thermal floor for any numeric compensation to really solve the issue. I’ve switched to battery power instead of usb, which allows the enviro to go into deep sleep between readings, and the temperature values are much better.

1 Like