pimoroni / enviro

MIT License
101 stars 79 forks source link

enviro indoor picow (0.0.9) reporting ~3C higher temperature #137

Open herbsoft opened 1 year ago

herbsoft commented 1 year ago

I've noted that with 0.0.9 that my enviro indoor (run on USB power) appears to be reporting the temperature at approximately 3C higher than the actual room temperature. I've ensured there is clear airflow around the device.

In earlier versions of the firmware I did not see this issue.

herbsoft commented 1 year ago

Just spotted this is probably the same issue as reported in #134

djbloc commented 1 year ago

I see similar with reported temperatures higher than actual. Also enviro indoor on USB power. Results are sent to Adafruit and it shows temperature reported at around c. 28 degrees C. I'd guess 6 or 7C higher than actual

madcock commented 1 year ago

I have also noticed this with Enviro Urban.

ChopsKingsland commented 9 months ago

I found this with Enviro Weather. other weather stations in my area say ~17ºC, but mine is reporting upwards of 21ºC! I am running 0.0.10 on permanent USB power

sjefferson99 commented 8 months ago

I've definitely seen USB power heating the board by several degrees. Powering by battery reduces this, but I drive mine from a solar array and poll and upload every minute giving it quite a high on duty cycle, which even on battery power seems to leach significant heat from the cpu/wireless into the board mounted sensors.

If you poll less frequently, consider running through a lipo charger and battery to reduce the impact of what is assumed to be the regulator/power management chips.

Also, the constant offset for USB power is now in main, so you can offset your reported readings if you reprovision from recent firmware and then edit the config.py file in thonny.

I have been playing around with this some more, I've added in a battery offset option in one of my PRs as I run it so often. I've also added support for a separate BME688 board and have been logging both the onboard and BME688 to a database for a while and weather underground for around a year, so the next task is to go back and see if it is a linear offset relative to other stations or something non linear based on the outside temperature. I'll feedback here if it looks like the linear offset will be good enough at a minimum.

sjefferson99 commented 8 months ago

As all my data lives in influxdb it looks like I need to write some scripts to pull this from the APIs as no handy export to CSV in the UI. I took 30 data points manually from the graphs of how my board differed to the separate BME688 and got a trend line of around y = x/20 on top of the offset already configured, probably around 4, need to pull the config to check.

When I can get more time to look at the data, identify if outliers are noise or if say humidity plays a factor or other correlations and see if anything can be confidently learnt from the data I can put some calibration code in.

What we can say is that the board was designed for infrequent polling on battery power. Deploying powered or with frequent polling and uploading introduces heat to the onboard sensor in a potentially non linear fashion with several input variables (poll frequency, upload frequency and environment temperature at least). I suspect the best approach for frequent polling is to move any data collection for temperature and humidity off board via QWST connector and then calibrate them to a known source, as I can see my BME688 out of the box is several degrees higher, but hopefully linearly so without the Pico sinking heat into it.