Sensirion / arduino-sps

Arduino library for Sensirion SPS30
Other
47 stars 16 forks source link

Values of PM and ranges #35

Closed georgekalantzis4 closed 2 years ago

georgekalantzis4 commented 2 years ago

Hello. I am using the code from /examples/sps30/sps30.ino to test the quality of the measurements of the sps30. Also I have multiple sensors from different brands to test them at the same time. The sps30 is attached to Arduino Yun rev2. I have a question for the values of PM of sps30. You can see the following example.

sps30_pm1.0 | sps30_pm2.5 | reference_sensor_pm2.5 18.28 | 19.33 | 38.33 18.72 | 19.80 | 38.72 17.81 | 18.84 | 38.11

As you can see the pm2.5 of sps30 are much lower than the reference sensor. But the sum of sps30_pm1.0 and of sps30_2.5 is very close to the pm2.5 of the reference_sensor.

The value of the m.mc_2p5 is in range of 1μm-2.5μm or in range 0.3μm-2.5μm?

Also at the end of README you are providing a screenshot that explains the ranges. But I tested the sps30 with a cigarette and I found out something strange:

sps30_pm1.0 | sps30_pm2.5 | sps30_pm4.0 | sps30_pm10.0 111.22 | 118.99 | 120.10 | 120.32

With the explanation of the screenshot the μg/m3 of the range 4.0 to 10.0 μm is 0.22μg/m3 and this is not logical. Because with a cigarette the value of pm10.0 should be around 500μg/m3. But if I add all the values of the pm the result is logical.

So my question again is: m.mc_1p0 -> 0.3 to 1.0 μm m.mc_2p5 -> 1.0 to 2.5 μm m.mc_4p0 -> 2.5 to 4.0 μm m.mc_10p0 -> 4.0 to 10.0 μm

OR

m.mc_1p0 -> 0.3 to 1.0 μm m.mc_2p5 -> 0.3 to 2.5 μm m.mc_4p0 -> 0.3 to 4.0 μm m.mc_10p0 -> 0.3 to 10.0 μm

Thank you.

winkj commented 2 years ago

Hi George,

For any product support - i.e. anything not related to the driver - it's best to contact Sensirion's product support team via https://sensirion.com/contact; the github issues are followed closely by our software teams, but as far as I can tell your question is mostly about the product, and not the arduino-sps driver.

I'd be happy to clarify the implementation of the arduino-sps library though: The values in m.mc_* are not modified after reading them from the bus (see https://github.com/Sensirion/arduino-sps/blob/master/sps30.cpp#L135), so the data available in the Arduino example will be whatever the sensor is transmitting.

According to the datasheet, the ranges are specified as follows

PM1   (mc_1p0):  0.3 to 1.0 μm
PM2.5 (mc_2p5):  0.3 to 2.5 μm
PM4   (mc_4p0):  0.3 to 4.0 μm
PM10  (mc_10p0): 0.3 to 10.0 μm

If you have any further question on the arduino-sps library, feel free to reopen this issue. For any other questions not related to the driver itself, please reach out to the Sensirion support team as mentioned above.

georgekalantzis4 commented 2 years ago

Thank you for your time and for your explanation, I will contact Sensirion's product support for this issue.