Цифровий газовий датчик наднизької потужності для моніторингу якості повітря в приміщенні – з алгоритмом визначення еквівалентних рівнів діоксиду вуглецю CO2 та летких органічних сполук VOC, з шиною i2c
Група елементів | Зовнішні апаратні |
Призначення | Цифрові сенсори рівня якості повітря в приміщенні |
Виробник | ScioSense: https://www.sciosense.com ams (в минулому): https://ams.com |
Модель електронного компоненту | інтегральна мікросхема |
Електронний компонент | Цифровий сенсор рівня якості повітря |
Група елементів | Зовнішні апаратні |
Призначення | Вимірювання рівня якості повітря оточуючого середовища в приміщенні |
Застосування | Цей апаратний компонент застосовується у наступних програмних продуктах alterstrategy.lab: Цифровий газовий датчик CCS811 – програмний I2C драйвер |
Шукати даний компонент у українських інтернет-магазинах через 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-адрес I2C | 0x5A – 0x5B |
Режими роботи:
- Автоматичний алгоритм розрахунку значень eCO2 & eTVOC / Ручний режим налаштувань алгоритма;
- Чотири режими швидкодії постійного (Continuous) перетворення: 1 секунда / 10 секунд / 60 секунд / 0.25 секунди (в цьому режимі – лише сирі дані, без обробки прикладним алгоритмом), а також режим зниженого енергоспоживання, в якому перетворення не виконується;
- З обробкою переривань за порогами по рівню CO2 / без обробки переривань за порогами.
- З обробкою переривань по готовності даних на виході алгоритму розрахунку рівнів eCO2 & eTVOC.
- Є можливість вмикання режиму зниженого енергоспоживання. Для виходу з цього режиму, передбачено окремий вивід 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:
- Дані зберігаються у регістрах CCS811 у вигляді двобайтних двійкових чисел у прямому коді: два байти для значення eCO2 і два байти для значення eTVOC. Потрібно лише виконати перетворення 16-бітного значення eCO2 у десяткове число (рівень в ppm), а також аналогічне перетворення 16-бітного числа для eTVOC (отриманий результат і буде рівень в ppb).
- Значення порогів, які потрібно записувати у відповідні регістри, якщо збираєтеся реалізовувати обробку переривань, теж кодуються двома байтами з прямим кодом.
- Трохи складніше реалізується перетворення значень температури та вологості для компенсації їх впливу на сенсор в процесі роботи прикладного алгоритму розрахунку eCO2 & eTVOC. Потрібно задавати цілу і дробову частини числа з кодуванням фракціями [64 – 1/512]. Для температури також потрібно враховувати зсув шкали. Під повне значення кожного коефіцієнта відводиться по два байти.
Інші особливості:
- сенсор має окремий спеціальний вхід для підключення аналогового сенсора температури, типу NTC, призначений для автоматичної компенсації впливу оточуючого середовища з температурою, однак, зазвичай, цей вивід мікросхеми сенсора не виводять на роз’єм модулів що є у продажу. Швидше за все, виробники модулів так чинять тому, що набагато зручнішим на їх погляд буде застосування саме цифрового сенсора для компенсації одночасно і температури, і вологості.
- сенсор CCS811 має можливість оновлення вбудованого програмного забезпечення, яке і робить його сенсором якості повітря з алгоритмічним розрахунком еквівалентних рівнів CO2 та TVOC. Оновлення внутрішнього ПЗ є можливим через шину I2C за умови, якщо у вас є двійковий файл прошивки для оновлення від виробника. А тому варто перевіряти, яка версія ПЗ знаходится в сенсорі, щоб принаймні відслідковувати наявність необхідних виправлень коду від виробника.
- за замовчуванням сенсор завантажується у режимі прошивки (Bootloader mode). Для того, щоб вбудоване прикладне програмне забезпечення почало працювати, необхідно засобами шини I2C перевести сенсор у режим вимірювання (Application mode). Варто враховувати, що сенсор сам по собі не починає вимірювати після подачі живлення, а тому не може бути застосованим автономно від головного контролера.
Посилання на документацію виробника: | CCS811-Datasheet.pdf ccs811-gas-sensor-solution |