I’m having some issues with my AirGradient Pro kits. I moved all the sensors and the microcontrollers over to my two new kits, added SGP30 sensors, and removed the I2C pullups on the SHT sensors. However I’m seeing reliability issues with the SHT sensors. I’ve tried 50kHz and 100kHz I2C bus speeds. The display and SGP30 sensors work fine but most of the time I see no response from the SHT. I threw my scope on the I2C lines and I’m seeing rise times of almost 1500ns, well outside the SHT’s spec of 300ns max, while fall times are less than 40ns. This would indicate to me insufficient pullup current on the I2C lines. I’m going to experiment with additional pullups to see what values bring the bus back in spec.
The OLED has about 55kOhm from the I2C lines to 3V3 (with everything else disconnected). Installing the SGP30 brings that to 7.5kOhm. Now is when things get weird, because the SHT3X is a 5V part…until now, SCL/SDA to 5V have been open. Installing the SHT3X (with the module’s external pullups removed) gets us about 4MOhm to 5V, and still 7.5k to 3V3. Plugging in the ESP now gives 80k to 5V and 7k to 3V3. I have not connected the SenseAir or Plantower at this point…
Aha, also of note, I’m seeing just 3.5V P-P on SCL and SDA. So I think that in my case, removing those 10k pullups on the SHT30 was detrimental, I’ll try to solder them back on.
Okay, 10k pull-ups are back on the SHT3X. I’ve now got 6.3k to 5V and 6.1k to 3V3. In this configuration nothing works. The bus fails to initialize. If I remove either the SGP or the SHT it works again (but the rise times are still very slow).
I also have a pro kit and removed the pull-ups from the SHT (and also have a display and a SGP30 connected to the I2C bus). It does work fine for me but the rise time seems to be below 300ns in my case (or at least not too far from the 300ns if I understand the definition correctly)
I have had this issue also but no scope to see the problem.
I finally just changed the SHT30 to 3.3v by adding a wire so it’s not connected to 5v. Now all my sensors: SHT30, SGP30, BME280 and the oled are connected on same bus with original 10k pullups which results in 2.9k total. When adding the ESP I can’t reliably measure the resistance because it keeps changings and the multimeter can’t keep up. There will become a scope quite handy.
After adding SHT30 the SGP30 stops working. I’ve tried 50, 100, 200, 400khz and added different resistor values to counteract. I calculated the required value. For all speeds all sensors worked except SGP30. The only thing that did work, was when the total resistance on the bus was above 4.1k(by removing a sensor) and SGP30 happily reports. I can’t make sense of that because a value of minimal 1k
total should work.
Edited because previous reply was incomplete.
And after another try. Removing BME280 to replace it only with 10k or 5.1k resistor the SGP30 still works at 100khz. Only when adding 2k SGP30 stops working again. So I’m starting to think the SGP30 has some other issue which I can’t measure without scope. Maybe noise or other interference? Could some of you look into this? This issue SGP30 - Unkown setup error · Issue #10 · nkitanov/iaq_board · GitHub looks the same to me.
Still trying out. I came on the idea of maybe the 3.3v power line isn’t stable enough for the LDO on the SGP30 to operate hence it doesn’t respond/error. I’ve added a 22uF cap between 3.3v and ground and all sensors are now working at 100khz. I’ll report after a few days too see if it’s stays working.
This is interesting. Yes, please report back with your results.
Well it didn’t last long. I’ve had 3 i2c bus hangs in 2 weeks. Only by powering off the bus it starts working again. But SGP30 is still flaky.
With or without capacitor for 3.3v or 5v or both didn’t make a noticeable change. I tried different size capacitors up to 500uF and/or adding decoupling capacitor 0.1uF. If someone has an oscilloscope to measure these things that would help understanding the problem. I can’t tell if there is too much pull-up or too much capacitance into play.
If I would need to make a guess, this SGP30 variant on this board isn’t up to specifications required to run with multiple devices on the same i2c bus.
I did try one other thing. Because the issue is with the SGP30 itself, the power/noise problem could be on the module board itself.
There is a LDO to bring down the voltage from 5v/3.3v down to 1.8v. Although I cannot measure it, I added an extra 10uF cap to the existing 10uF and 2x 0.1uF smd caps. It’s now working. Long term stability testing again.
Let us know how this goes as my temperature and humidity goes to zero sometimes and the tvoc value goes nuts