Подключение датчика газа SGP30 к Arduino для обнаружения CO2 и TVOC


В этой статье мы подключим датчик CO2 и TVOC SGP30 к Arduino и отобразим измеренные значение на экране OLED-дисплея. Датчик SGP30 способен обнаруживать эквивалентное количество углекислого газа (CO2) и общее количество летучих органических соединений (TVOC) в атмосфере. Ранее на нашем сайте мы измеряли CO2 и TVOC с помощью датчика газа CCS811, а также интегрированного датчика окружающей среды BME680.

Подключение датчика газа SGP30 к Arduino для обнаружения CO2 и TVOC

Но SGP30 — это совершенно другой датчик, который может быстро давать правильные показания. В то время как CCS811 требует прогрева в течение 48 часов и обкатки в течение 20 минут, SGP30 готов к работе всего через 15 секунд.

В этом проекте мы сначала прочитаем значение CO2 и TVOC с датчика SGP30 с помощью библиотеки Arduino Sparkfun и отобразим их значение на последовательном мониторе. Датчик также может измерять значения этанола и водорода (H2) в необработанных значениях. Позже мы отобразим показания датчика на 0,96″ I2C OLED-дисплее и протестируем датчик, поместив немного духов рядом с датчиком.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Датчик качества воздуха SGP30 (купить на AliExpress).
  3. Модуль OLED дисплея SSD1306 128×64 с интерфейсом I2C (купить на AliExpress).
  4. Макетная плата
  5. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Датчик качества воздуха SGP30

Датчик газа SGP30 — это датчик качества воздуха, используемый для измерения VOC и eCO2. Это очень точный датчик качества воздуха от экспертов по датчикам компании Sensirion. Датчик имеет интерфейс I2C. Он выдает полностью откалиброванные выходные сигналы с типичной точностью 15% в пределах измеренных значений. SGP объединяет несколько чувствительных элементов на основе оксида металла на одном чипе для предоставления более подробных сигналов качества воздуха. Этот модуль обеспечивает вывод TVOC (общее количество летучих органических соединений) и CO2eq с выдающейся долговременной стабильностью и низким энергопотреблением. Это делает его идеальным выбором для определения качества воздуха в помещении с использованием Arduino или любого другого микроконтроллера.

Датчик качества воздуха SGP30

Sensirion SGP30 — это цифровой многопиксельный газовый датчик, который можно легко интегрировать с очистителями воздуха или вентиляцией с регулируемой потребностью. Датчик работает на основе технологии CMOSens® компании Sensirion, которая объединяет полную сенсорную систему на одном чипе с микронагревателем с регулируемой температурой и двумя предварительно обработанными сигналами качества воздуха в помещении. Как первый металлооксидный газовый датчик с несколькими чувствительными элементами на одном чипе, SGP30 предоставляет более подробную информацию. Проверьте спецификацию SGP30 для получения дополнительной информации.

Он выводит эквивалент CO2 в ppm и общее количество летучих органических соединений (TVOC) в ppb. Датчик также предоставляет доступ к своим необработанным значениям измерений этанола и H2. SGP30 может похвастаться высокой стабильностью с низким долгосрочным дрейфом. Благодаря алгоритму непрерывной компенсации показания датчика остаются точными с течением времени. Вы даже можете точно настроить свои показания, подключив внешний датчик влажности для добавления компенсации влажности.

Характеристики датчика

  • Датчик Sensiron SGP30 TVOC и eCO2.
  • Измерение TVOC от 0 до 60 000 ppb (частей на миллиард).
  • Измерение CO2 от 400 до 60 000 ppm (частей на миллион).
  • Частота дискретизации 1 Гц.
  • Интерфейс I2C (адрес 0x58).
  • Совместимость с напряжением 3,3 В или 5 В.
  • Распиновка, совместимая с Raspberry Pi (контакты 1, 3, 5, 7, 9).
  • Совместим со всеми моделями Raspberry Pi и Arduino.

Приложения

  • Очиститель воздуха.
  • Вентиляция с регулируемой интенсивностью.
  • Приложения Интернета вещей.
  • Монитор кондиционирования воздуха в доме.

Библиотека SGP30 Sparkfun для Arduino

Библиотека для SGP30 разработана Adafruit, а также Sparkfun. Но в этом проекте мы будем использовать библиотеку SGP30 Sparkfun Arduino.

Библиотека SGP30 Sparkfun для Arduino на гитхабе

Вы можете скачать библиотеку SGP30 с Github'а. Загрузите библиотеку и добавьте в свою среду разработки Arduino через менеджер библиотек.

Взаимодействие датчика SGP30 с Arduino

Теперь давайте подключим датчик SGP30 к плате Arduino. Схема соединения между Arduino и SGP30 очень проста.

Схема подключения датчика SGP30 к Arduino

Подключите контакты VCC и GND SGP30 к контактам Arduino 3.3V и GND соответственно. Поскольку SGP30 является модулем I2C, подключите его контакты SDA и SCL к контактам Arduino A4 и A5 соответственно.

Собранная на макетной плате конструкция проекта

Исходный код программы для чтения CO2 и TVOC

Следующий код взят из примера библиотеки Sparkfun SGP30. Код выводит результаты измерения общего количества летучих органических соединений (TVOC) в частях на миллиард (ppb), эквивалента диоксида углерода (CO2) в частях на миллион (ppm).

В менеджере плат выберите используемую вами плату Arduino. Также выберите COM-порт. Затем нажмите кнопку загрузки, чтобы загрузить код на плату Arduino.

После завершения загрузки кода откройте последовательный монитор.

Измеренные значения CO2 и TVOC в окне монитора последовательной связи (начало измерений)

Первоначально последовательный монитор будет отображать значение CO2 как 400 ppm и значение TVOC как 0 ppb. После 15-20 показаний датчик стабилизируется по мере нагревания. Затем значение датчика будет отображаться правильно.

Измеренные значения CO2 и TVOC в окне монитора последовательной связи (после стабилизации датчика)

Исходный код программы для чтения этанола и водорода (H2)

SGP30 использует динамический алгоритм компенсации базового значения (baseline) и встроенные в чип параметры калибровки для предоставления двух дополнительных сигналов качества воздуха. Базовое значение должно быть сохранена в EEPROM. Если при первом включении питания в EEPROM нет базового значения или базовая запись старше семи дней, датчик должен работать в течение 12 часов, пока базовое значение не будет сохранено. Блок-схема этой программы представлена на следующем рисунке.

Блок-схема программы для чтения этанола и водорода

Сигналы H2_Signal и Ethanol_signal - оба сигнала можно использовать для расчета концентрации газа c относительно опорной концентрации cref по формуле ln(C/Cref)=(Serf-Sout)/a , где a = 512, sref — выходной сигнал H2_signal или Ethanol_signal при опорной концентрации, а sout = Sout_H2 или Sout = Sout_EthOH.

Для более точного измерения можно установить компенсацию абсолютной влажности. Значение по умолчанию составляет 11,57 г/м3. Немного затруднительно то, что вам придется получать значение относительной влажности окружающей среды другим способом, поскольку в SGP30 нет встроенного устройства для измерения влажности.

Формула для расчета концентрации газа

Вот полный код программы, который считывает значения CO2, TVOC, H2 и этанола.

После загрузки кода вы можете снова открыть последовательный монитор. Наблюдайте за показаниями после 15-20 показаний, вы сможете увидеть значения CO2, TVOC, H2 и этанола. Примечание: значения H2 и этанола являются только необработанными значениями.

Измеренные значения CO2, TVOC, H2 и этанола в окне монитора последовательной связи

Отображение значений CO2 и TVOC на OLED-дисплее

Теперь давайте отобразим значение CO2 и TVOC на каком-нибудь дисплейном модуле вместо отображения на последовательном мониторе. Лучший модуль для этого — 0,96″ I2C OLED дисплей. Схема подключения снова довольно проста.

Схема подключения датчика SGP30 и OLED дисплея к Arduino

OLED-дисплей также является модулем I2C. Поэтому подключите его напрямую к выводам I2C платы Arduino.

Собранная на макетной плате конструкция проекта с OLED дисплеем

Исходный код программы проекта с OLED-дисплеем

Для работы с OLED-дисплеем SSD1306 требуются две библиотеки. Загрузите следующие библиотеки и добавьте их в папку библиотек.

  1. Библиотека Adafruit SSD1306: https://github.com/adafruit/Adafruit_SSD1306
  2. Библиотека Adafruit GFX: https://github.com/adafruit/Adafruit-GFX-Library

Скопируйте следующий код и загрузите его на плату Arduino.

OLED-дисплей инициализируется и начнет отображать значение CO2 и TVOC. Первоначально он будет отображать значение CO2 и TVOC как 400ppm и 0ppb соответственно.

Тестирование работы проекта с OLED дисплеем (часть 1)

После 15–20 считываний OLED-дисплей начнет отображать правильное стабильное значение.

Тестирование работы проекта с OLED дисплеем (часть 2)

Чтобы проверить работу датчика, вы можете поднести к нему духи, спрей или любое органическое соединение. Датчик покажет значение большими цифрами в ppm и ppb.

Тестирование работы проекта с OLED дисплеем (часть 3)

Видео, демонстрирующее работу проекта

Ссылка на видео на YouTube

(Проголосуй первым!)
Загрузка...
28 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *