Multi-Gassensor SGP30

SGP30 - Board

Der Multi-Gassensor SGP30 (hier auf einem Board) kann mittels eines Metalloxid(MOX)-Halbleiter-Gassensorelements flüchtige organische Verbindungen (TVOC), äquivalent berechnete Kohlendioxid-Konzentration (eCO2) messen. Darüber hinaus misst er Ethanol bzw. H2-Konzentration zwischen 0 und 1000 ppm.

Features laut Hersteller

Hinweise

Arbeitstemperaturbereich des SGP30
Abb.: Arbeitstemperaturbereich des SGP30

Aufbau

Detailansicht des eigentlichen Sensors SGP30
Abb.: Detailansicht des eigentlichen Sensors SGP30
Rückseite des SGP30-Boards
Abb.: Rückseite des SGP30-Boards:
65K5: Linearer Spannungsregler (1,8V, 300mA)
702: N-Channel MOSFET 2N7002 (60V, 115mA)

Verwendete Bauteile

Anschlüsse

Pin Beschreibung Arduino Uno
VIN Spannungsversorgung 5V 5V
GND Masse/0V GND
SCL "Serial clock" (I²C-Anschluss) A5
SDA "Serial data" (I²C-Anschluss) A4

Messungen

Library "RobTillaart/SGP30"

Die folgenden Messungen werden mir der Library RobTillaart/SGP30 durchgeführt:

#include "SGP30.h"

SGP30 SGP;

void setup()
{
   SGP.begin();
   SGP.GenericReset();

   Serial.begin(9600);
   Serial.println("TVOC\teCO2\tH2\tETH");
}

void loop()
{
   SGP.measure(true);

   Serial.print(SGP.getTVOC());
   Serial.print("\t");
   Serial.print(SGP.getCO2());
   Serial.print("\t");
   Serial.print(SGP.getH2());
   Serial.print("\t");
   Serial.println(SGP.getEthanol());

   delay(500);
}
Ausgabe auf der seriellen Konsole der Arduino-IDE
Abb.: Ausgabe auf der seriellen Konsole der Arduino-IDE
Ausgabe der Werte auf dem seriellen Plotter der Arduino-IDE
Abb.: Ausgabe der Werte auf dem seriellen Plotter der Arduino-IDE (der große Ausschlag in der Mitte war das Ausatmen direkt auf den Sensor für 1-2 Sekunden)

Library "Adafruit_SGP30"

Die folgenden Messungen werden mir der Library Adafruit_SGP30 durchgeführt:

#include <Wire.h>
#include "Adafruit_SGP30.h"

Adafruit_SGP30 sgp;
int counter = 0;

void setup()
{
   Serial.begin(9600);
   if (!sgp.begin()) {
      Serial.println("Sensor not found!");
      while (true);
   }
}

void loop()
{
   if (!sgp.IAQmeasure()) {
      Serial.println("Measurement failed");
      return;
   }
   if (!sgp.IAQmeasureRaw()) {
      Serial.println("Raw Measurement failed");
      return;
   }

   Serial.print("TVOC=" + String(sgp.TVOC) + "ppb - ");
   Serial.print("eCO2=" + String(sgp.eCO2) + "ppm - ");
   Serial.print("H2=" + String(sgp.rawH2) + " - ");
   Serial.println("ETH=" + String(sgp.rawEthanol));

   counter++;
   if (counter == 10) {
      counter = 0;

      uint16_t TVOC_base, eCO2_base;
      if (!sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
         Serial.println("Failed to get baseline readings");
         return;
      }

      Serial.println("--------------------------------------------------");
      Serial.print("Baseline values:\neCO2: 0x");
      Serial.println(eCO2_base, HEX);
      Serial.print("TVOC: 0x");
      Serial.println(TVOC_base, HEX);
      Serial.println("--------------------------------------------------");
   }

   delay(1000);
}
Ausgabe auf der seriellen Konsole der Arduino-IDE
Abb.: Ausgabe auf der seriellen Konsole der Arduino-IDE

Wärme-Signaturen

Nach kurzer Zeit des Betriebs erreicht das Zentrum des SGP30-Sensors eine Temperatur von über 80°C:

Wärme-Signatur des SGP30
Abb.: Wärme-Signatur des SGP30 (Aufnahme mit InfiRay P2 Pro)

Unabhägig vom SGP30 wird der USB/Seriell-Wandler (MEGA16U2) durch die intensive Verwendung der seriellen Schnittstelle auch warm:

Wärme-Signatur des ATMEL MEGA16U2
Abb.: Wärme-Signatur des ATMEL MEGA16U2 (USB/Seriell-Wandler) (Aufnahme mit InfiRay P2 Pro)
zurück