Рубрики
Схемы на Arduino

Измерение концентрации углекислого газа с помощью Arduino и инфракрасного датчика CO2

Увеличивающаяся концентрация углекислого газа в атмосфере с каждым годом становится все более серьезной проблемой для человечества. Согласно данным такой авторитетной организации как NOAA, концентрация углекислого газа (CO2) достигла уровня 0.0385% (385 ppm), что является самым высоким значением за последние 2.1 миллиона лет. Концентрация 385 ppm означает, что в одном миллионе частиц воздуха содержится 385 частиц углекислого газа.

Возрастающая концентрация CO2 может оказать существенное негативное влияние на климат всей нашей планеты и может привести к новому глобальному потеплению.

В этой статье мы рассмотрим подключение аналогового инфракрасного датчика гравитации CO2 (Gravity Infrared CO2 Sensor) к плате Arduino для измерения концентрации углекислого газа в окружающем воздухе в единицах PPM (parts per million – частиц на миллион). Инфракрасный датчик гравитации CO2 представляет собой аналоговый высокоточный датчик CO2 (углекислого газа). Он измеряет содержание CO2 в диапазоне от 0 до 5000 ppm. Также на нашем сайте вы можете посмотреть следующие проекты по измерению качества воздуха и присутствию в нем различных газов:

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

  1. Плата Arduino Nano (купить на AliExpress).
  2. Инфракрасный датчик гравитации CO2 (Gravity Infrared CO2 Sensor V1.1) (купить на AliExpress).
  3. 0.96’ SPI OLED Display Module – модуль OLED дисплея с диагональю 0.96’ и поддержкой интерфейса SPI (купить на AliExpress — если будете покупать по приведенной ссылке, то выбирайте модель OLED дисплея с 7 контактами).
  4. Макетная плата.
  5. Соединительные провода.

Инфракрасный датчик гравитации CO2

Gravity Infrared CO2 Sensor V1.1 (инфракрасный датчик гравитации CO2) представляет собой один из новейших высокоточных аналоговых датчиков углекислого газа, выпускаемый компанией DFRobot (www.dfrobot.com — на ее сайте я достаточно много интересного для себя обнаружил, может быть, и вас заинтересует). Принцип работы датчика основан на технологии недисперсионного инфракрасного излучения (NDIR). Датчик имеет хорошую избирательность, температурную компенсацию, бескислородную зависимость и имеет выход ЦАП (цифро-аналогового преобразователя). Эффективный диапазон измерений датчика составляет от 0 до 5000ppm с точностью ± 50ppm + 3%. Данный инфракрасный датчик углекислого газа может использоваться в системах отопления, кондиционирования и вентиляции, а также во многих других сферах, в которых необходим контроль за качеством воздуха.

Датчик имеет 3-контактный разъем. Назначение контактов (распиновка) датчика показаны на следующем рисунке.

Назначение контактов инфракрасного датчика CO2:
— Signal: выход аналогового сигнала в диапазоне 0.4~2V;
— VCC: питающее напряжение (4.5~5.5V);
— GND: общий провод (земля).

Технические характеристики инфракрасного датчика CO2:
— обнаруживаемый газ: углекислый газ (CO2);
— рабочее напряжение: 4.5 ~ 5.5V DC;
— время предварительного прогрева: 3 минуты;
— время отклика: 120 секунд;
— диапазон рабочих температур: 0 ~ 50 ℃;
— влажность (при которой может работать датчик): 0 ~ 95% RH;
— водозащищенное и антикоррозийное исполнение;
— длительный срок службы.

Модуль OLED дисплея (0.96’ OLED Display Module)

OLED (Organic Light-Emitting Diodes, органический светоизлучающий диод) – это светоизлучающая технология, которая применяется в большинстве современных телевизоров. В OLED дисплеях используется тот же принцип формирования изображения, что и в современных телевизорах, только количество пикселей в них значительно меньше.

Для нашего проекта мы использовали монохромный 7-ми контактный OLED дисплей SSD1306 с диагональю 0.96”. Он может использовать 3 различных коммуникационных протокола: 3-х проводный SPI, 4-х проводный SPI и I2C.

Назначение его контактов (распиновка) приведены в следующей таблице.

Номер контакта Название контакта Альтернативное название контакта Назначение контакта
1 Gnd Ground земля
2 Vdd Vcc, 5V напряжение питания (в диапазоне 3-5 В)
3 SCK D0, SCL, CLK используется как контакт синхронизации (clock pin). Применяется в интерфейсах I2C и SPI
4 SDA D1, MOSI контакт данных. Применяется в интерфейсах I2C и SPI
5 RES RST, RESET контакт сброса модуля. Применяется в интерфейсе SPI
6 DC A0 контакт команд (Data Command pin). Применяется в интерфейсе SPI
7 CS Chip Select (выбор чипа) используется когда несколько устройств взаимодействуют по интерфейсу SPI

Подключение данного дисплея к плате Arduino рассматривалось в этой статье, а все проекты с использованием данного дисплея на нашем сайте вы можете посмотреть по следующей ссылке.

Технические характеристики OLED дисплея SSD1306:

  • драйвер микросхемы OLED: SSD1306;
  • разрешение: 128 x 64;
  • угол зрения: >160°;
  • входное напряжение: 3.3V ~ 6V;
  • цвет пикселов: синий;
  • диапазон рабочих температур: -30°C ~ 70°C.

Схема проекта

Схема подключения инфракрасного датчика CO2 к плате Arduino представлена на следующем рисунке.

Как видите, схема достаточно простая. Инфракрасный датчик CO2 и OLED дисплей запитываются от контактов +5V и GND платы Arduino. Сигнальный аналоговый контакт датчика CO2 подключен к контакту A0 платы Arduino Nano. OLED дисплей подключен к плате Arduino по интерфейсу SPI. Соединения между OLED дисплеем и платой Arduino представлены в следующей таблице:

OLED дисплей Плата Arduino
GND Ground
VCC 5V
D0 10
D1 9
RES 13
DC 11
CS 12

После сборки проекта на макетной плате у нас получилась конструкция следующего вида:

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
В коде программы используются библиотеки Adafruit_GFX и Adafruit_SSD1306. Эти библиотеки можно скачать и установить с помощью менеджера библиотек (Library Manager) Arduino IDE. Для этого откройте Arduino IDE и выберите в ней пункт меню Sketch > Include Library > Manage Libraries. После этого выполните в открывшемся окне поиск библиотеки Adafruit GFX и установите ее (библиотека от компании Adafruit).

Аналогичным образом установите библиотеку Adafruit SSD1306 от компании Adafruit. Для работы с инфракрасным датчиком CO2 нам не потребуется никакой библиотеки поскольку мы будем непосредственно считывать значения от него на аналоговом контакте платы Arduino.

Далее в коде программы подключим заголовочные файлы используемых библиотек.

Затем зададим ширину (SCREEN_WIDTH) и высоту (SCREEN_HEIGHT) используемого OLED дисплея. Измените их значения если будете использовать дисплей другого размера. Используемый нами OLED дисплей имеет размеры 128×64.

После этого укажем контакты SPI интерфейса, к которым подключен OLED дисплей.

Затем создадим объект дисплея с необходимыми нам параметрами.

Далее укажем контакт платы Arduino, к которому подключен инфракрасный датчик CO2.

После этого в функции setup() инициализируем последовательную связь со скоростью 9600 бод для целей отладки и инициализируем OLED дисплей.

Внутри функции loop() мы будем считывать значения с аналогового контакта платы Arduino с помощью функции analogRead(). Далее мы эти значения будем преобразовывать в значения напряжения.

После этого мы будем проверять измеренное значение напряжения с выхода датчика. Если значение напряжения менее  0 V это будет означать что с датчиком какие то проблемы. Если значение напряжения более 0 V, но менее 400 mV, это значит что датчик еще находится в режиме предварительного нагрева.

Если значение напряжения равно или больше чем 400 mV, то мы преобразуем его в значение концентрации  CO2 (углекислого газа).

После этого установим размер шрифта и цвет текста на OLED дисплее с помощью функций setTextSize() и setTextColor().

Затем установим положение курсора на дисплее с помощью функции setCursor(x,y). И, наконец, выведем значение концентрации CO2 на экран дисплея с помощью функции display.println().

Чтобы отобразить текст на экране дисплея вызовем функцию display().

Тестирование работы проекта

После того как аппаратная часть проекта будет готова, можно приступать к его тестированию. Подключите плату Arduino к компьютеру, выберите в Arduino IDE необходимый порт и вид платы, и загрузите программу в плату Arduino. Потом подождите некоторое время (пока завершится процесс предварительного прогрева датчика) и откройте окно монитора последовательной связи (serial monitor) – в нем вы должны увидеть следующую картину:

Также значения концентрации CO2 должны отображаться на экране OLED дисплея.

Примечание: перед первым использованием датчика дайте ему прогреться примерно в течение 24 часов чтобы после этого он показывал правильные значения концентрации CO2 в единицах PPM. Когда мы включили этот датчик в первый раз, он показывал значения концентрации CO2 в диапазоне от 1500 PPM до 1700PPM и только после 24 часового прогрева он стал показывать значения концентрации CO2 в диапазоне от4 50 PPM до 500 PPM, что является правильными значениями. Поэтому важно откалибровать датчик перед его дальнейшим использованием.

Исходный код программы (скетча)

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

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

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