knowit / snappysense

3 stars 1 forks source link

Figure out sensor calibration #3

Open lars-t-hansen opened 1 year ago

lars-t-hansen commented 1 year ago

The v1.0.0 prototype has problems with some of the measurements (the ones I've been able to verify):

Some of this could be a matter of burn-in, other things less obviously so.

Altitude is computed as a function of air pressure, the formula is undocumented and almost certainly requires some kind of calibration.

We need experience with more devices before we know whether this is a problem with the one device or a systematic problem with the sensors or the software.

lars-t-hansen commented 1 year ago

About temperature readings: the bulk of the discrepancy is caused by activity on the device generating heat and confusing the sensor. I ran four experiments on my v1.1 prototype (assembly no. 1):

The ambient temperature in the room is about 21.0-21.5 degrees by my instant-read oven thermometer, which is as good a standard as any. For the first experiment above the sensor was a little too close to my body, but I moved it further away for the others. The device was on USB power only for all experiments.

Results:

A couple things should be researched further: The sensor should be moved off-board to isolate it and see how that affects it; and individual features of the firmware should be disabled to see how they affect the readings of the "default" setup. There's quite a lot of activity and some of it could be restructured to be more sensible.

lars-t-hansen commented 1 year ago

WiFi and serial line command polling seem to be the main factors driving the rapid perceived temperature increase. With all WiFi functions and command polling disabled, but everything else enabled as described for the default configuration in the previous comment, the device reaches 23.0 degrees after about 1h, and my other thermometer shows 21.1 degrees in the room. (At the end of the hour there is still some increase in temperature measurements, but it's clearly slower than before.)

lars-t-hansen commented 1 year ago

And finally, re-enabling serial line command polling does not change the readings from the previous experiment, so the WiFi stack seems to be implicated strongly in the problem. The question is then what happens. Somewhat likely a process / task is created that is never properly stopped, either because it gets stuck in an error state or needs explicit termination / blocking that never arrives.

lars-t-hansen commented 1 year ago

In summary (from #43), the other electronics seriously affect the temperature sensor. The sensor is also affected by the orientation of the device (if the device on its side so that the MCU cools better and does not heat up the board then the sensor less affected).

lars-t-hansen commented 1 year ago

Experiment: I set up two v1.1 devices with identical firmware next to each other in monitoring mode and left them up over the weekend. The sensors track very well indeed (see screenshots), except for:

I did not bother about eco2 as it is computed from tvoc, nor about uv, which is currently too low to measure indoors. I'll get some outdoor uv readings later this week.

A curiosity: Device snp_1_1_no_1 has an AIR sensor that works without a battery attached, cf #4.

humidity light noise pressure temperature tvoc