PySense accuracy



  • I made some tests with PySense, using 0.0.6 PySense board firmware with the current library and 1.9.2.b2 LoPy firmware. As a control used a COZIR szenzor and a home meteorological station.

    TEMPERATURE

    PySense temperature is 31.2 / 29.9 Celsius, while other devices measure both 25 Celsius. It is a big error between the two PySense temp sensors and from the air temperature. In the beginning of the test PySense figures were a bit lower, 27.2 / 28.5 probably due to the dissipation of LoPy. However these values are not usable as a sensor data.

    HUMIDITY

    PySense is 38.3% while other sensors 39% / 47% where the 47% is the COZIR which expected to be the most accurate, therefore no idea what is the real humidity.

    AIR PREASSURE

    PySense figure is 1008 mbar while the meteo station is 1020, lets say they are close, it looks the most accurate sensor. PySense barometric altitude is 48m, GPS is 116m. Not bad, and usually it must be calibrated to the actual conditions, so it seems to be OK.

    LIGHT

    Can't test.

    All together I wouldn't use it in production environment, specially not the temp sensors.



  • @catalin Was this fixed in newer versions of the PySense?



  • @catalin Hi, Sorry should have been more specific. I also thought that the offset by -7 was right by calculations however as the temp changes the discrepancy between the external temp sensor and the pysense board would increase. I have found that if you use a percentage method the discrepancy stays within half a degree either way.

    temp1 = (mp.temperature()-7)

    temp1 = (mp.temperature()*0.75)

    hope this made more sense :)



  • @jimpower Just to be sure I've understood.
    So, you have another, probably external Temperature sensor, for which you used a constant offset as compensation method?
    Still, I'm not getting what's the "75%" about.



  • @catalin This what I have done and the readings seem to be pretty accurate with other sensors Im using. I have adjusted to 75% of the sensor reading which seems to keep its output to within 0.5 of a degree either way of other sensors I have in the test lab.



  • Hi guys,
    You could use a simple temperature offset to correct SI7006A20 readout temperature, taking into consideration your application sleep regime.
    So, start your app (transmit data, do go_to_sleep), and measure temperature, let's say you have 30 deg C, and your ambient is 23, so you have a 7 deg offset. Let the board enough for the ambient to transfer (at least 30 min). Use this offset to compensate temperature for the future readings.
    Try this setup, in a different ambient (outside, or in the fridge), but also for at least 30 mins. The offset method should offer +/-1 deg of precision.
    In my experiments, I've obtained 2 deg offset, for a simple python script which wakes up LoPy every 5 mins, and stays active 30 secs(sending some data over Wifi). This worked both indoors (24 deg) and outdoors (8 deg), within 1 degree of error.



  • Hi guys,
    We have investigated the temperature an humidity problems from the sensor mounted on Pysense.
    First the temperature sensor, it's constructed to measure the temperature of the thermal paddle on the bottom of the chip which is connected to the ground plane. With in IR thermometer, I could prove that the PCB temperature is the exact one indicated by the sensor. On an ambient of 25 deg C, the sensor indicates 31-32 deg C. We'll try to improve this by isolating the ground plane from the thermal paddle, in a next Pysense release.
    However, keep in mind the Silicon Labs Si7006 sensor used, has a precision of +/-1 deg C, and +/-5% humidity (RH).
    Regarding Humidity, if the temperature is compensated to the Ambient one, then using Magnus formula: https://en.wikipedia.org/wiki/Dew_point#Simple_approximation,
    "For every 1 °C difference in the dew point and dry bulb temperatures, the relative humidity decreases by 5%, starting with RH = 100% ...."
    In @bmarkus case, T_sensor - T_ambient = 5.5deg C, and the RH_sensor is 38.3%, this means the RH for T_ambient of 25 deg is 38.3/(0.95^5.5)=50.7% RH, which is close to the 47% measured by the reference sensor.
    Furthermore, there are 2 application notes from Silabs
    https://www.silabs.com/documents/public/application-notes/AN1026-Si70xx-Temp-Sensor-Designers-Guide.pdf
    https://www.silabs.com/documents/public/application-notes/AN607.pdf
    Regarding, AN1026, we are using FR4 for the PCB, and the constants are already computed.
    I've tried to make a temperature compensation model for Pysense, to find real ambient temperature. It's doable for a static process (start *py board and keep it powered), but for deep sleep cycles and using FiPy with multiple heat sources (ESP+LTE) this becomes impossible.



  • What might help in a future version is a cutout around the sensor, and removing any groundplanes. This is what some of the manufacturers recommend in their datasheets, here from the SHT21:

    alt text

    alt text

    I'm using this design for our iC880A backplane and it seems to work nicely.

    When doing environmental sensing, a sensor disconnected from the electronics (e.g. through a cable or flex-PCB) would probably be the better option.



  • @crumble said in PySense accuracy:

    @bmarkus you may need better and calibrated sensors, if you need exact values.

    If I have a dedicated sensor board I expect to have usable / trusted values provided. Otherwise why to use a sensor board? Temp measurement inaccuracy is far from acceptable.

    I have a LoRa GPS MOTE where even the MCU's built-in temp sensore provides accurate measurement with less than 1 Celsius difference to other sensors.



  • @bmarkus you may need better and calibrated sensors, if you need exact values. I am not trusting my DHT-22 soldered to a PyTrack as well. DeepSleep will help against the heat form the ESP32. There will be no significant heat problems, if your LoPy wakes up every n minutes, measures, sending data and go back to DeepSleep. If you are using the normal sleep methods, the LoPy is still handling WiFi and and other stuff. This will heat up the whole system.



  • @bmarkus You could try to separate both units, but then the nice package is gone. At least the temp sensor can be use to check, whether the total package is in a good condition, if you pack enclose it in a sealed package. But looking at the overall power consumption, there seems not to be a risk, and that may not have been the intention.



  • @robert-hh said in PySense accuracy:

    @bmarkus The temperature pysense tells is influenced by the LoPy heating it up. That was observed at several places here. Since temperature and relative humidity are connected, at higher temperature the reading for relative humidity for the same absolute humidity will be lower, so that's not surprising, and the ratio is in the right range. (see e.g. https://en.wikipedia.org/wiki/Relative_humidity)

    Thanks Robert. It is pity that temp sensors are not usable even if device is in open air and not boxed.



  • @bmarkus The temperature pysense tells is influenced by the LoPy heating it up. That was observed at several places here. Since temperature and relative humidity are connected, at higher temperature the reading for relative humidity for the same absolute humidity will be lower, so that's not surprising, and the ratio is in the right range. (see e.g. https://en.wikipedia.org/wiki/Relative_humidity)


Log in to reply
 

Pycom on Twitter