CCS811 I2C-bus Ultra-Low Power Digital Gas Sensor for Monitoring Indoor Air Quality – eCO2 & eTVOC

Цифровий газовий датчик наднизької потужності для моніторингу якості повітря в приміщенні – з алгоритмом визначення еквівалентних рівнів діоксиду вуглецю CO2 та летких органічних сполук VOC, з шиною i2c

Група елементівЗовнішні апаратні
ПризначенняЦифрові сенсори рівня якості повітря в приміщенні
ВиробникScioSense: https://www.sciosense.com
ams (в минулому): https://ams.com
Модель електронного компонентуінтегральна мікросхема
Електронний компонентЦифровий сенсор рівня якості повітря
Група елементівЗовнішні апаратні
ПризначенняВимірювання рівня якості повітря оточуючого середовища в приміщенні
ЗастосуванняЦей апаратний компонент застосовується у наступних програмних продуктах alterstrategy.lab: Цифровий газовий датчик CCS811 – програмний I2C драйвер

Шукати даний компонент у українських інтернет-магазинах через Google:

Шукати через Google

Тип компонентудля встановлення на плату
ІнтерфейсI2C
Тип інтерфейсуЦифровий
Бітність16-bit eCO2, 16-bit TVOC, 16-bit raw-dataУ сирому вигляді 6 біт виділено під значення струму нагрівача та 10 біт під значення опору на вході внутрішнього АЦП.
Вимірювана фізична величинаОпір підложки MOX-сенсора з АЦП та алгоритмічним обчисленням еквівалентних рівнів CO2 & TVOC.
Кількість вимірювальних каналів1 фізичний канал вимірювання
Тип вимірювальних каналіваналого-цифрове перетворення опору чутливого метал-оксидного шару, що нагрівається певним струмом у постійному чи імпульсному режимі.
Діапазон вимірюванняАлгоритмічно підготовлені дані: eCO2: 400 ppm – 29206 ppm;eTVOC: 0 ppb – 32768 ppb.
Сирі дані (raw data): струм нагрівача: 0 – 2^6 поділок шкали АЦП (0μA to 63μA)еквівалент значення опору: 0 – 2^10 поділок шкали АЦП (1023 = 1.65V)
Точністьціна поділки (LSB) АЦП: 1.6 mV
Напруга живлення1.8 В – 3.3 В
Всього пінів10+1(pad)
Значущі сигнальні піниSDA <-> SDASCL <-> SCLInterrupt output <-> GPIOintADDRnWake – GND або GPIOVdd, Vss
Фіксована частина i2c-адреси елемента101 101
Змінна частина i2c-адреси елементаADDR: “1” якщо до Vdd / “0” якщо до GND
Діапазон можливих Hex-адрес I2C0x5A – 0x5B

Режими роботи:

  1. Автоматичний алгоритм розрахунку значень eCO2 & eTVOC / Ручний режим налаштувань алгоритма;
  2. Чотири режими швидкодії постійного (Continuous) перетворення: 1 секунда / 10 секунд / 60 секунд / 0.25 секунди (в цьому режимі – лише сирі дані, без обробки прикладним алгоритмом), а також режим зниженого енергоспоживання, в якому перетворення не виконується;
  3. З обробкою переривань за порогами по рівню CO2 / без обробки переривань за порогами.
  4. З обробкою переривань по готовності даних на виході алгоритму розрахунку рівнів eCO2 & eTVOC.
  5. Є можливість вмикання режиму зниженого енергоспоживання. Для виходу з цього режиму, передбачено окремий вивід nWake на мікросхемі.

Генерація події на стороні електронного компоненту:

Так, через пін nINT (active low):

  • спрацьовує щоразу, коли поточне значення CO2 перетинає значення порогового регістру з урахуванням гістерезису;
  • два пороги створюють три зони рівня eCO2: “низький” / “середній” / “високий”.
  • у якості гістерезису застосовується константа у 50 ppm;
  • для рівня TVOC, вбудованої обробки подій за порогами не передбачено.

Драйвер-модуль у прошивці NodeMCU з Lua:

Ні, за нашими даними готового драйвера для прошивки спільнота не розробила;

Потрібно використовувати наявні C-модулі “i2c.” та “bit.” і писати власний драйвер, або ж купити у нас готовий продукт Цифровий газовий датчик CCS811 – програмний I2C драйвер.

Основні регістри електронного компоненту:

  • STATUS_REG = 0x00 —  Status register / R / 1 байт;
  • MEAS_MODE_REG = 0x01 — Measurement mode and conditions register / R/W / 1 байт;
  • ALG_RESULT_DATA_REG = 0x02 — Algorithm result register / R / до 8 байт;
  • RAW_DATA_REG = 0x03 — Raw ADC data values register / R / 2 байти;
  • ERROR_ID_REG = 0xE0 — Error ID register / R / 1 байт;
  • ENV_DATA_REG = 0x05 — Temperature & humidity compensation data / W / 4 байти;
  • THRESHOLDS_REG = 0x10 — Thresholds register / W / 4 байти.

Формат вихідних/вхідних даних для інтеграції з MCU:

  1. Дані зберігаються у регістрах CCS811 у вигляді двобайтних двійкових чисел у прямому коді: два байти для значення eCO2 і два байти для значення eTVOC. Потрібно лише виконати перетворення 16-бітного значення eCO2 у десяткове число (рівень в ppm), а також аналогічне перетворення 16-бітного числа для eTVOC (отриманий результат і буде рівень в ppb).
  2. Значення порогів, які потрібно записувати у відповідні регістри, якщо збираєтеся реалізовувати обробку переривань, теж кодуються двома байтами з прямим кодом.
  3. Трохи складніше реалізується перетворення значень температури та вологості для компенсації їх впливу на сенсор в процесі роботи прикладного алгоритму розрахунку eCO2 & eTVOC. Потрібно задавати цілу і дробову частини числа з кодуванням фракціями [64 – 1/512]. Для температури також потрібно враховувати зсув шкали. Під повне значення кожного коефіцієнта відводиться по два байти.

Інші особливості: 

  • сенсор має окремий спеціальний вхід для підключення аналогового сенсора температури, типу NTC, призначений для автоматичної компенсації впливу оточуючого середовища з температурою, однак, зазвичай, цей вивід мікросхеми сенсора не виводять на роз’єм модулів що є у продажу. Швидше за все, виробники модулів так чинять тому, що набагато зручнішим на їх погляд буде застосування саме цифрового сенсора для компенсації одночасно і температури, і вологості.
  • сенсор CCS811 має можливість оновлення вбудованого програмного забезпечення, яке і робить його сенсором якості повітря з алгоритмічним розрахунком еквівалентних рівнів CO2 та TVOC. Оновлення внутрішнього ПЗ є можливим через шину I2C за умови, якщо у вас є двійковий файл прошивки для оновлення від виробника. А тому варто перевіряти, яка версія ПЗ знаходится в сенсорі, щоб принаймні відслідковувати наявність необхідних виправлень коду від виробника.
  • за замовчуванням сенсор завантажується у режимі прошивки (Bootloader mode). Для того, щоб вбудоване прикладне програмне забезпечення почало працювати, необхідно засобами шини I2C перевести сенсор у режим вимірювання (Application mode). Варто враховувати, що сенсор сам по собі не починає вимірювати після подачі живлення, а тому не може бути застосованим автономно від головного контролера.
Посилання на документацію виробника:CCS811-Datasheet.pdf
ccs811-gas-sensor-solution