AGS10 TVOC Gas Sensor
Der AGS10 ist ein digitaler TVOC-Gassensor zur Messung der Gesamtmenge flüchtiger organischer Verbindungen (TVOCs) in der Luft. Er eignet sich für Anwendungen wie Raumluftüberwachung, Smart-Home-Systeme und IoT-Projekte.
Kurzüberblick
- Messgröße: TVOC (Total Volatile Organic Compounds)
- Schnittstelle: I²C
- Versorgungsspannung: 3,3 – 5,0 V
- Logikpegel (I²C): 3,3 V und 5 V kompatibel
- I²C-Pull-Ups: auf dem Breakout-Board vorhanden
- Ausgabe: TVOC-Wert in ppb
- Aufwärmzeit: ca. 2–3 Minuten
Typische Anwendungsfälle
- Raumluftqualitätsmessung
- Smart-Home & Gebäudeautomation
- Luftüberwachung in Büros & Werkstätten
- Maker- & IoT-Projekte
Technische Daten
| Parameter | Wert |
|---|---|
| Messbereich | 0 – 1000 ppb TVOC |
| Auflösung | 1 ppb |
| Schnittstelle | I²C |
| I²C-Adresse | 0x1A (Standard) |
| Versorgungsspannung | 3,3 – 5,0 V |
| Logikpegel | 3,3 V / 5 V tolerant |
| Stromaufnahme | typ. ca. 30 mA |
| Betriebstemperatur | -10 °C bis +50 °C |
Pinout & Anschlüsse
| Pin | Bezeichnung | Beschreibung |
|---|---|---|
| VCC | Versorgung | 3,3 – 5,0 V |
| GND | Masse | Ground |
| SDA | I²C Data | I²C Datenleitung |
| SCL | I²C Clock | I²C Taktleitung |
Hinweis:
Auf dem verwendeten Breakout-Board sind die I²C-Pull-Up-Widerstände bereits integriert.
Der Sensor kann daher direkt an 3,3-V- oder 5-V-I²C-Busse angeschlossen werden.
Elektrische Eigenschaften
- Betrieb mit 3,3 V oder 5 V Versorgungsspannung
- I²C-Logikpegel kompatibel zu 3,3 V und 5 V
- Interne Pegelanpassung über das Breakout-Board
- Stabiler Ruhestrom nach abgeschlossener Aufwärmphase
Kommunikation (I²C)
- Bus: I²C
- Adresse:
0x1A - Pull-Ups: vorhanden auf dem Board
- Datenformat: 16 Bit TVOC-Wert (ppb)
Messwert auslesen (vereinfacht)
- Startbedingung
- I²C-Adresse + Read
- 2 Bytes empfangen
- TVOC-Wert berechnen
Beispielcode
Arduino (I²C)
## Beispielcode (Arduino)
#include <Wire.h>
#define AGS10_ADDR 0x1A
#define REG_DATA_ACQ 0x00
#define REG_READ_VERSION 0x11
#define REG_READ_RESISTANCE 0x20
#define CMD_DELAY_MS 30
#define READ_DELAY_MS 1500
uint8_t calcCRC8(const uint8_t *data, uint8_t len) {
uint8_t crc = 0xFF;
for (uint8_t b = 0; b < len; b++) {
crc ^= data[b];
for (uint8_t i = 0; i < 8; i++)
crc = (crc & 0x80) ? (crc << 1) ^ 0x31 : (crc << 1);
}
return crc;
}
bool i2cRead5(uint8_t reg, uint8_t *out) {
Wire.beginTransmission(AGS10_ADDR);
Wire.write(reg);
if (Wire.endTransmission() != 0) return false;
delay(CMD_DELAY_MS);
if (Wire.requestFrom((int)AGS10_ADDR, 5) != 5) return false;
for (uint8_t i = 0; i < 5; i++) out[i] = Wire.read();
return (calcCRC8(out, 4) == out[4]);
}
bool readTVOC(uint32_t &tvoc, uint8_t &status) {
uint8_t buf[5];
if (!i2cRead5(REG_DATA_ACQ, buf)) return false;
status = buf[0];
tvoc = ((uint32_t)buf[1] << 16) | ((uint32_t)buf[2] << 8) | buf[3];
delay(READ_DELAY_MS);
return true;
}
bool readVersion(uint8_t &ver) {
uint8_t buf[5];
if (!i2cRead5(REG_READ_VERSION, buf)) return false;
ver = buf[3];
return true;
}
bool readResistance(uint32_t &res) {
uint8_t buf[5];
if (!i2cRead5(REG_READ_RESISTANCE, buf)) return false;
res = ((uint32_t)buf[1] << 16) | ((uint32_t)buf[2] << 8) | buf[3];
return true;
}
void setup() {
Serial.begin(115200);
Wire.begin();
Serial.println("Paradisetronic - AGS10 TVOC Sensor Test");
Serial.println("Bitte mindestens 2 Minuten Vorheizzeit beachten...");
delay(2000);
uint8_t fw;
if (readVersion(fw)) {
Serial.print("Firmware-Version: 0x");
Serial.println(fw, HEX);
}
uint32_t r;
if (readResistance(r)) {
Serial.print("Sensor-Widerstand: ");
Serial.print(r / 10.0, 1);
Serial.println(" kOhm");
}
Serial.println("Starte TVOC-Messung...");
}
void loop() {
uint32_t tvoc;
uint8_t status;
if (readTVOC(tvoc, status)) {
Serial.print("Status: 0x");
Serial.print(status, HEX);
Serial.print(" | TVOC: ");
Serial.print(tvoc);
Serial.println(" ppb");
} else {
Serial.println("Fehler beim Lesen der TVOC-Daten.");
}
delay(2000);
}
Kalibrierung & Hinweise
• Nach dem Einschalten ist eine Aufwärmzeit von ca. 2–3 Minuten erforderlich.
• Die Messung ist relativ und für Trendanalysen vorgesehen.
• Initialisierung idealerweise in sauberer Umgebungsluft.
• Kurzzeitige Belastungen (Alkohol, Lösungsmittel) führen zu hohen Peaks.
• Nicht für sicherheitskritische Gaswarnsysteme geeignet.
Troubleshooting
Troubleshooting
Keine I²C-Kommunikation • SDA/SCL korrekt verbunden • Versorgungsspannung prüfen (3,3 V oder 5 V) • Keine externen Pull-Ups notwendig (bereits auf dem Board) • I²C-Adresse 0x1A verifizieren • Bus ggf. mit I²C-Scanner testen
Downloads
- Datenblatt (PDF)
Weiterführende Links
- Herstellerdokumentation
- I²C-Spezifikation
- Richtlinien zur Raumluftqualität (TVOC)
Revision / Changelog
| Version | Datum | Änderung |
|---|---|---|
| 1.0 | 2025-01-08 | Erster Release |