VOC and eCO2 Gas Sensor - Arduino Compatible - SGP30

For a CO2 measurement project, I have several Grove VOC and eCO2 sensors from Seedstudio https://wiki.seeedstudio.com/Grove-VOC_and_eCO2_Gas_Sensor-SGP30/

With the examples I got results immediately. The sensors are connected to an arduino mkr1010, vía arduino hub.

It is a school project, in which the air quality in the classrooms is measured, and every X time, these values are sent to a server (we maybe modify it so that some leds are lit, or another warning, if the CO2 goes up). During school hours, I measure every 3 minutes temperature, humidity, and also eCO2. But if I take a single sample, the eCO2 value is always the same (almost always). The minimum, which is 400ppm.

I understand that these sensors have to be heated (they work through a resistance). Because, if I have it measuring continuously (every second), the sensor reacts immediately (it takes about a minute to show values different from the minimum), when it is blown, the eCO2 rises. After that, and with fresh air, the value goes down. I have done this with the example of the SeeedStudio test, which measures every second and displays it on the console.

Now, in my code the sensor measures , and then every time the data is sent to the server, it makes the average of the measurements. The other sensors take the data at that time (temperature, humidity, …).

Is this OK? I don’t know, but I thiks its maybe to much measurements.

Another option could be, to take a sample of 1-1.5 minutes at the time of sending the data. That would be, every 3 minutes I take a sample of 1.-1.5 minutes measuremtns of eCO2 (60-90 measurements).

Thank you in advance.

Hi zampa

If you want to receive a better accuracy value, I suggest you reduce the time to 30 s as a sample or even shorter, coz 1 - 1.5 min that probably will have large numerical fluctuations, This will result in inaccurate data.

Best regards
Fenyi

Thanks.

So, you mean, a take an 30s intervall, measure each second inside this intervall, and make an average.

¿So, each time a want to display a value, i take 30 measurements, each second one, and make an average?

¿Do you know the max amount of measurements I can make with this sensor?

Thanks in advance,
Zampa :slight_smile:

Hi zampa
It depends on your situation. I can not guarantee my way is good for you. Or you can add an OLED display on your device and count function in your code, you do not need to record the data by yourself all the time. wish it can help.

Best regards
fenyi

Thanks!

But, is there any maximum amount of times, I can turn on and off the sensor? I am not shure if the sensor crashes too soon, if I use it every 2 seconds.

Hi zampa

Sorry, I did not do the press test on this sensor.
You are able to use any digital pin as a 3.3 V power supply to support the sensor when you want to close the sensor, you just give a low-level signal.

Best regards
Fenyi

Why need to turn on and turn off the sensor for reading the sensor values? you just need to read the sensor value in a particular interval, for that you don’t need to restart the device.

Of course. I do not restart the sensor each time I read values.

To read the values, I use the baseline_operation_example (https://wiki.seeedstudio.com/Grove-VOC_and_eCO2_Gas_Sensor-SGP30/)

And this, I do it every 2 seconds, and plot the mean value every 4 minutes.

1 Like

Ok, Great :+1:. keep us updated.