BME280 Temp Sensor Predictable Error in Reading!?

@RWB, I am using the BME280 with a Photon as I had issues with Gen3 devices if I recall. The BME280 specs don’t specify a command for setting the I2C speed. It only specifies that it can be up to 3.4MHz.

I’ll test again later today with an Argon to see what, if anything works and report back.

2 Likes

The BME280 works fine with 400kHz when I run it alone on an Argon on a library that uses Wire.begin() instead of the Adafruit.

But, when I stick it on with the PM25AQI it goes into a boot loop until I revert to the old library.

So to be clear, the BME280 sensor when connected to a Gen3 Device via I2C will eventually have corrupt data transfer when operating at the default I2C Bus speed.

The BME280 does not have a register for setting the Bus Speed to 400Khz but it does state it works up to 3.4Mhz .

Your saying the data corruption goes away when you set the Argon or Boron’s I2C Bus Speed to 400 speed?

If so lets report this to Particle as another case of I2C data corruption with another sensor. I really would love for this issue to be identified and fixed.

1 Like

Not quite, I'm saying that it doesnt happen at all when I have the BME280 on its own device, irrespective of the setting to 400kHz.

But, when I have it on a device with another i2c sensor, it seems to go bad as temps rise above 23C and cuts out around 25C. It does this consistently at warmer temps, but it's absolutely fine at low temps. When I try to change the sensor to 400kHz with multiple i2c devices, it fails to run at all. So, the 400kHz seems to be fine with the BME280, but my other sensor (PM25AQI) doesn't like the 400kHz.

Havent had a chance to wire up the option that power cycles the BME280, but I think this wont work, as the readings are wrong for virtually all readings when the temp goes above 25C.

It would seem the PM25AQI might be causing my BME280 heartache?

@peekay123 and @RWB what temp/humidity sensors are known to work well with Gen3 devices? I was using an SGP30 and SHT31 and it had issues with both. Happy to buy a sensor that has a proven track record with a gen3.

I have been using about a dozen Si7021 sensors for a few years now. It has been operating on all gen3 devices with all the os revisions - I2C - and I have found no trouble. Lately, I have been using the library - Particle_SI7021. The unit I use is:

I have also been using a SHT30 device from Adafruit on an Argon since June of this year - I2C. It is part of an outdoor weather station. It has been working very well. Library is: adafruit-sht31. But, this is only 1 unit on 1 device. Not much history to go by:

1 Like

So, just reading the Adafruit guides and came across this:

so have jumpered these two together and will give it a run tomorrow and see how it goes... Fingers crossed!

Awesome, have ordered one and will see how it goes!

1 Like

I’ve been using the SHT31 Temp/Humidity sensor, SGP30 VOC sensor, and the SPS30 Air Quality Sensor.

I have noticed the SHT31 temp readings to be higher than the real temp by 2-5 degrees for some reason. The temp sensor had worked great for some time but now the temp drift is too much so I need to switch to a different temp/humidity sensor. A few other guys have reported the same thing over time with this temp sensor.

The VOC and Air Quality Sensor work perfectly fine over the years and I recommend them.

1 Like

Update, jumpering the CS to Vin did nothing…

Temps climbing and the Argon with more than one 12c (Argon3 red/orange) has already started to play up whilst the other Argon (Argon 2 blue/green) readings are doing fine, even at a higher (indoor) temp…

1 Like

Update, no change… /sigh.

Thought… Could this be a pull-up resistor issue? As in, if Adafruit have too high a pull-up resistor, with 2 devices sharing the i2c… could it possibly be that? I cant find any information on what size pull ups are being used though.

I am assuming you have the:

Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor

PRODUCT ID: 2652

1 Like

That's the one! Am I reading this right that it doesnt have pull-ups!? Will solder some on... can i confirm, I'm connecting two resistors (have some 10k ohm resistors laying around) between the SCL/SDA and the 3.3v VIN rail?

It does have 10K pullups already on the board.

1 Like

Then, it looks like I dont know how to read a diagram… (oh, right, there they are!)

Either way, was reading that for 100kHz i2c it should likely be a 10k ohm pull up, and for 400kHz it should be 4.7k ohm… perhaps the addition of the second 10k ohm (dropping it to 5k ohm as a result) has done the trick, because (not wanting to jinx it… but)…

1 Like

Fingers crossed :crossed_fingers:

Actually here is a bit of info that may be the cause of this :thinking: :grinning:

2 Likes

Gents (and potentially ladies), we’ve done it!!!

2x 10k ohm resistors between SDA and SCL and Vin did the trick!

Full warm afternoon with no anomalies!

1 Like

The Argon has 13K pull ups built in on the I2C pins.

You added a 10K Resistor to the 10K resistor that is on the BME280 Breakout.
.
So 13K + 10K + 10K = What?? approx 3K??

1 Like

Yeah, would be around 3.7k if my math is right.

Strange that these sensors work in isolation with 13k + 10k (so, 5.75k?) but when you slap on another device (my PM25AQM, which also has inbuilt 10k pull-ups) it cant handle it when the temp climbs…

download

Well, I think maybe the issues I was having had to do with not knowing there are 13K pullups already on the Gen3 Devices. I’m hoping changing pullup resistance fixes my problem also.

Maybe the higher temps were causing the resistance to change enough on the resistors to push it over the edge.

1 Like