INFORMACIÓN
El SGP30 es un sensor digital de calidad del aire que utiliza tecnología de óxido metálico (MOX) para medir compuestos orgánicos volátiles (TVOC) y el equivalente de dióxido de carbono (eCO₂) en el ambiente. Funciona mediante una superficie sensible que cambia su resistencia al contacto con gases presentes en el aire; el chip interpreta estos cambios mediante algoritmos internos y genera lecturas precisas en tiempo real. Se comunica a través de I2C, lo que facilita su integración con microcontroladores.
El SGP30 se utiliza ampliamente en sistemas de monitoreo ambiental, domótica, purificadores de aire, estaciones meteorológicas, ventilación inteligente, y dispositivos portátiles que requieren medir TVOC y eCO₂ para evaluar la calidad del aire interior. Gracias a su interfaz I2C, es compatible con una gran variedad de tarjetas de desarrollo, incluyendo Arduino UNO, Arduino Mega, ESP32, ESP8266, Raspberry Pi, STM32, y otros microcontroladores que soporten comunicación I2C.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Sensor: SGP30.
- Tipo: Sensor de Gas MOX.
- Voltaje de Alimentación: 1.8 a 5 VDC.
- Consumo de Corriente: 40 mA.
- Interfaz de Conexión: I2C.
- Precisión Típica: 15%.
- Rangos de Medición:
- Compuestos Orgánicos Volátiles (TVOC): Desde 0 hasta 60 000 ppb.
- Dióxido de carbono (eCO2): Desde 400 hasta 60 000 ppm.
- Frecuencia de Muestreo (sampling rate): 1 Hz (una medida por segundo) para TVOC y eCO₂.
- Dimensiones: 11 mm x 11 mm x 1.6 mm.
- Peso: 0.73 g.
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
¿Cómo probar el SGP30 Sensor de Calidad del Aire I2C?
Aquí tienes una guía paso a paso (clara y práctica) para probar el SGP30 (I²C) con un Arduino UNO.
Materiales Necesarios.
- Módulo SGP30.
- Arduino UNO (u otra placa compatible I²C).
- Cables dupont.
- PC con Arduino IDE instalado y acceso a la Biblioteca Adafruit_SGP30.
Diagrama de Conexión.
- Conecta VIN → 5V del Arduino.
- Conecta GND → GND del Arduino.
- Conecta SDA → A4.
- Conecta SCL → A5.

Código de Programación.
- Abre Arduino IDE.
- Ve a Sketch → Include Library → Manage Libraries.
- Busca: SGP30.
- Instala Adafruit SGP30.
- Carga el Ejemplo → SGP30_test.
El código lo puedes abrir desde ejemplos o copiarlo de aquí:
#include <Wire.h>
#include "Adafruit_SGP30.h"
Adafruit_SGP30 sgp;
/* return absolute humidity [mg/m^3] with approximation formula
* @param temperature [°C]
* @param humidity [%RH]
*/
uint32_t getAbsoluteHumidity(float temperature, float humidity) {
// approximation formula from Sensirion SGP30 Driver Integration chapter 3.15
const float absoluteHumidity = 216.7f * ((humidity / 100.0f) * 6.112f * exp((17.62f * temperature) / (243.12f + temperature)) / (273.15f + temperature)); // [g/m^3]
const uint32_t absoluteHumidityScaled = static_cast<uint32_t>(1000.0f * absoluteHumidity); // [mg/m^3]
return absoluteHumidityScaled;
}
void setup() {
Serial.begin(115200);
while (!Serial) { delay(10); } // Wait for serial console to open!
Serial.println("SGP30 test");
if (! sgp.begin()){
Serial.println("Sensor not found :(");
while (1);
}
Serial.print("Found SGP30 serial #");
Serial.print(sgp.serialnumber[0], HEX);
Serial.print(sgp.serialnumber[1], HEX);
Serial.println(sgp.serialnumber[2], HEX);
// If you have a baseline measurement from before you can assign it to start, to 'self-calibrate'
//sgp.setIAQBaseline(0x8E68, 0x8F41); // Will vary for each sensor!
}
int counter = 0;
void loop() {
// If you have a temperature / humidity sensor, you can set the absolute humidity to enable the humditiy compensation for the air quality signals
//float temperature = 22.1; // [°C]
//float humidity = 45.2; // [%RH]
//sgp.setHumidity(getAbsoluteHumidity(temperature, humidity));
if (! sgp.IAQmeasure()) {
Serial.println("Measurement failed");
return;
}
Serial.print("TVOC "); Serial.print(sgp.TVOC); Serial.print(" ppbt");
Serial.print("eCO2 "); Serial.print(sgp.eCO2); Serial.println(" ppm");
if (! sgp.IAQmeasureRaw()) {
Serial.println("Raw Measurement failed");
return;
}
Serial.print("Raw H2 "); Serial.print(sgp.rawH2); Serial.print(" t");
Serial.print("Raw Ethanol "); Serial.print(sgp.rawEthanol); Serial.println("");
delay(1000);
counter++;
if (counter == 30) {
counter = 0;
uint16_t TVOC_base, eCO2_base;
if (! sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
Serial.println("Failed to get baseline readings");
return;
}
Serial.print("****Baseline values: eCO2: 0x"); Serial.print(eCO2_base, HEX);
Serial.print(" & TVOC: 0x"); Serial.println(TVOC_base, HEX);
}
}
Resultados.
Una vez cargado el código, abra la consola serie a 115200 baudios. Las primeras 10 a 20 lecturas siempre serán TVOC 0 ppb eCO2 400 ppm. Esto se debe a que el sensor se está calentando, por lo que tendrá lecturas nulas. Después de unos segundos, verá que las lecturas de TVOC y eCO2 fluctúan. También se imprimirá un valor de referencia aproximadamente cada minuto.

SN74F138DR Demultiplexor decodificador
0603B222K500NT Capacitor Cerámico 0603 2.2nF 50V
Limpiador y Lubricante para Equipos Electrónicos en Aerosol 170 ml SILIJET E-PLUS
Optoacoplador de Alta Velocidad SMD6N137S(TA)
Limpiador de Pantallas 170 ml COMPUSTAT
Push Button KY-004
Clip Analizador Lógico IC de Doble Gancho 10pcs
Congelante Detector de Falla para Circuitos Electrónicos 170 ml SILIJET E-3
Adaptador USB a RS232 Serial DB9
Toallitas Húmedas para Limpieza de Equipos Electrónicos 30pcs COMPUTOALLAS
Cargador de Carga Rápida 40W US + Cable Tipo C
CAU-118 Punta Conica para Cautin CAU-105 y CAU-115
Pluma Flux 951 Kester 10ml Non Clean
UNIT Cargador de Batería LiPo Boost & I2C
Kit de 100 diodos 1N5399 1N5408 1N4148 1N4007 1N5819 1N5822
Generador de Alta Tension 3-6V 400kV Boost Step Up
UNIT Touchdot ESP32-S3 WiFi BT
Sensor Fotoeléctrico de Radiación Solar (400-1100nm) RS485 SEN0640
Modulo Dual MOSFET D4184 PWM 0-20KHz 3.3-20V 15A 400W
E01C-ML01DP5 Modulo Inalambrico RF
100 Leds Difuso de 5mm Colores Rojo Verde Azul Amarillo y Blanco
1N4004 Diodo Rectificador 1A 400V
Gravity Kit de 37 Sensores Compatibles con Arduino KIT0150
Sensor Micrófono KY-038



























Valoraciones
No hay valoraciones aún.