Overview

The ENS160 is a digital multi-gas indoor air quality (IAQ) sensor manufactured by ScioSense (formerly ams OSRAM environmental sensors). Built on TrueMEMS technology with 4 independent metal-oxide (MOX) micro-hotplate sensing elements, it provides high resistance to siloxane contamination and chemical poisoning.

Processing raw MOX gas resistance data internally with an embedded ASIC algorithm, the ENS160 computes three calibrated air quality metrics directly over I2CI^2C or SPI:

  1. Air Quality Index (AQI 1–5): According to German UBA indoor air quality guidelines.
  2. Total Volatile Organic Compounds (TVOC): 0 to 65,000 ppb0\text{ to }65,000\text{ ppb}.
  3. Equivalent CO2\text{CO}_2 (eCO2\text{eCO}_2): 400 to 65,000 ppm400\text{ to }65,000\text{ ppm}.

It is widely deployed on SparkFun Qwiic, Adafruit STEMMA QT, and ESPHome environmental nodes for HVAC ventilation control and smart home air monitors.

Quick reference

Operating voltage (VCC)3.3 V to 5.0 V DC (breakout with 1.8V LDO & level shifters)
IC supply voltage (VDD)1.71 V to 1.98 V DC (1.8 V nominal)
InterfaceI2CI^2C (up to 1.0 MHz) & SPI (up to 10 MHz)
Default I2CI^2C address0x53 (ADDR pin High / un-connected)
Alternate I2CI^2C address0x52 (ADDR pin Low to GND)
Air Quality Index (AQI)1 (Excellent) to 5 (Unhealthy)
TVOC range0 ppb to 65,000 ppb
eCO2\text{eCO}_2 range400 ppm to 65,000 ppm
Warm-up time3 minutes initial heating / 1 hour full baseline stabilization

Pinout

Breakout module header & STEMMA QT / Qwiic connectors:

PinNameTypeDescription
1VCCPowerSupply input (+3.3 V to +5.0 V DC)
2GNDPowerGround reference (0 V)
3SCL / SCLKDigital InputI2CI^2C Serial Clock / SPI Clock
4SDA / MOSIDigital Input / OutputI2CI^2C Serial Data / SPI Data In
5MISODigital OutputSPI Data Out (in SPI mode)
6CSDigital InputChip Select (High = I2CI^2C mode, Low = SPI mode)
7ADDRDigital InputI2CI^2C Address select (High = 0x53, Low = 0x52)
8INTDigital OutputActive-Low interrupt output (data ready trigger)

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply Voltage (Module)VCCV_{CC}3.33.3 / 5.05.5VPower rail with LDO
Active Supply CurrentICCI_{CC}29.035.0mAContinuous 4-hotplate heating
Low Power CurrentIlpI_{lp}0.9mALow power pulse mode
Deep Sleep CurrentIsleepI_{sleep}5µAReset state
TVOC RangeTVOCTVOC065000ppbParts per billion
eCO2\text{eCO}_2 RangeeCO2eCO_240065000ppmEquivalent CO2\text{CO}_2 estimate
AQI Rating RangeAQIAQI151 = Excellent, 5 = Unhealthy
Operating TemperatureToprT_{opr}-4085°CAmbient air

Temperature & Humidity Compensation

The ENS160 allows writing current ambient temperature (TT in C^\circ\text{C}) and relative humidity (RHRH in %\%) values into compensation registers 0x13 and 0x15. Passing live temperature/humidity readings (from an paired AHT20, SHT31, or BME280 sensor) ensures max accuracy under varying climate conditions:

Register 0x13 (Temp)=(TC+273.15)×64\text{Register } 0x13\text{ (Temp)} = (T_{C} + 273.15) \times 64

Register 0x15 (RH)=RH%×512\text{Register } 0x15\text{ (RH)} = RH_{\%} \times 512

Wiring

ENS160 PinArduino / MCUESP32Notes
VCC5V / 3.3V3.3VModule includes 1.8V LDO
GNDGNDGNDSystem ground
SCLA5GPIO 22I2CI^2C Clock
SDAA4GPIO 21I2CI^2C Data
CS3.3V / 5V3.3VPull High for I2CI^2C mode

Example (ScioSense / SparkFun ENS160 Library)

cpp
#include <Wire.h>
#include "SparkFun_ENS160.h"

SparkFun_ENS160 myENS;

void setup() {
  Serial.begin(115200);
  Wire.begin();

  Serial.println("ENS160 Multi-Gas Sensor Test");

  if (!myENS.begin(0x53)) { // Default address 0x53
    Serial.println("ENS160 not found! Check CS and ADDR pins.");
    while (1);
  }

  // Set operating mode to Standard In-Air Operation (0x02)
  myENS.setMode(ENS160_OPMODE_STD);
  Serial.println("ENS160 initialized. Warming up...");
}

void loop() {
  if (myENS.checkDataStatus()) {
    Serial.print("AQI Index (1-5): "); Serial.print(myENS.getAQI());
    Serial.print(" | TVOC: "); Serial.print(myENS.getTVOC()); Serial.print(" ppb");
    Serial.print(" | eCO2: "); Serial.print(myENS.getECO2()); Serial.println(" ppm");
  }

  delay(2000);
}

Common mistakes

  • Leaving CS floating: Pull CS High to 3.3V for I2CI^2C operation. Floating CS drops the IC into SPI mode.
  • Reading during initial 3-minute warm-up: The MOX micro-hotplates require 3 minutes after power-on to reach operating temperatures (200C400C200^\circ\text{C}\dots 400^\circ\text{C}). Readings during the first 180 seconds indicate WARMUP status.

Notes

  • ENS160 vs CCS811 vs SGP30: ENS160 features 4 independent MOX hotplates (vs 1 on CCS811) and higher siloxane immunity.

Assets & downloads