Обзор модуля BME680. Технические характеристики и применение
В этой статье мы рассмотрим подробнее возможности и преимущества BME680, а также некоторые практические примеры использования этого датчика.
Обзор модуля BME680. Технические характеристики и применение
07.05.2024 в 04:51   1069 0
Версия для печати

Обзор модуля BME680. Технические характеристики и применение

logo

Введение

В эпоху растущего осознания важности здоровья и экологической устойчивости, мониторинг качества воздуха и окружающей среды становится все более неотъемлемой частью нашей повседневной жизни. Для эффективного и точного измерения различных параметров, таких как температура, влажность, давление и состав воздуха, необходимы современные и многофункциональные датчики. И одним из наиболее передовых и разносторонних среди них является BME680.

BME680 - это интегрированный цифровой датчик, разработанный компанией Bosch Sensortec. Он объединяет в себе измерение четырех ключевых параметров окружающей среды: газового состава, температуры, влажности и атмосферного давления. Этот мощный датчик открывает перед пользователями новые возможности для отслеживания и контроля окружающей среды в реальном времени.

Одним из наиболее уникальных аспектов BME680 является его способность измерять газовый состав воздуха, включая VOC (вредные летучие органические соединения). Это позволяет использовать датчик для определения уровня загрязнения воздуха внутри помещений или на улице, а также для мониторинга качества воздуха в зданиях, автомобилях и других средах.

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

Технические характеристики

Основные технические характеристики датчика представлены в таблице ниже

Параметр Технические характеристики
Рабочий диапазон (полная точность) Давление: 300...1100 ГПа
Влажность 0...100%
Температура: -40...85°C
Напряжение питания VDDIO
Напряжение питания VDD
1.2 ... 3.6 V
1.71 ... 3.6 V
Интерфейс I2C и SPI
Средний потребляемый ток
(частота обновления данных 1 Гц))
Среднее потребление тока в спящем режиме
2,1 мкА при влажности и температуре 1 Гц
3,1 мкА при давлении и температуре 1 Гц
3,7 мкА при влажности, давлении и температуре 1 Гц
0,09‒12 мА для p/h/T/ газа в зависимости от режима работы

Время срабатывания газового датчика (τ 33-63%)
Отклонение от датчика к датчику
Энергопотребление
Обработка выходных данных

< 1 с (для новых датчиков)
+/- 15% +/- 15
< 0,1 мА в режиме сверхнизкого энергопотребления
прямой вывод IAQ: показатель качества воздуха

Время срабатывания датчика влажности (τ0-63%),
допуск на точность
, гистерезис

8 с
± 3% относительной влажности
≤ 1,5% относительной влажности
Погрешность
чувствительности датчика давления к
среднеквадратичному шуму
смещение температурного коэффициента

0,12 Па (эквивалентно 1,7 см)
± 0,25 % (эквивалентно 1 м при изменении высоты 400 м)
±1,3 Па/К (эквивалентно до ±10,9 см при изменении температуры на 1°C)

В магазинах датчик встречается как отдельно, так и  виде модуля для подключения к микроконтроллеру со всей необходимой обвязкой. На картинке ниже представлено большинство известных мне вариантов исполнения данного устройства:

sensors

Но несмотря на все многообразие форм-факторов, по сути все эти модули имеют одинаковый функционал и ваш выбор будет зависеть только от способа подключения модуля к микроконтроллеру и его габаритных размеров.

Распиновка и схема подключения

Независимо от варианта исполнения, каждый модуль BME680 имеет следующие контакты для подключения:
Обозначение Функция
VCC Подключение источника питания  1,7 -3,6 В
GND Вывод GND
SCL SCL вывод для интерфейса I 2C / SCK-вывод для связи по SPI
SDA SDA вывод  для интерфейса I 2C / MOSI-вывод для связи по SPI
SD0 MISO вывод для связи по SPI
CS Вывод Chip Select для интерфейса SPI

Если по каким либо причинам использование готового модуля вам не подходит, то на картинке ниже приведена схема расположения контактов на чипе BME680:

bme680

При самостоятельной распайке чипа на плату, необходима дополнительная обвязка. Ее схема приведена ниже:

обвязка

Измеряемые параметры

BME680 — это цифровой датчик 4 в 1, который измеряет:

  • Температуру
  • Влажность
  • Барометрическое давление
  • Газ: летучие органические соединения (ЛОС), включающие в себя углеводороды, альдегиды, спирты, кетоны, терпеноиды и др.

Датчик температуры позволяет измерять температуру во всем рабочем диапазоне –40 …+85 °С. Абсолютная точность в диапазоне 0 …+65 °С составляет ±1 °С. Несмотря на 20-битное разрешение встроенного АЦП, на выходе пользователи получают данные с разрешением 0, 01 °С, что связано с уровнем собственных шумов 0,005 °С. 

Датчик давления имеет рабочий диапазон 300…1100 кПа с разрешением 0,18 Па. В диапазоне температур 0 …+65 °С сенсор характеризуется абсолютной погрешностью ± 0,6 кПа.

Максимальная частота опроса датчика достигает 182 Гц. При частоте опроса 1 Гц типовое потребление составляет 3,1 мкА.

Не стоит забывать о таком негативном эффекте, как старение, которое для данного сенсора оказывается равным примерно ± 1 кПа в год.

Датчик влажности работает в диапазоне 0…100% с абсолютной точностью ± 3% (температура 0 …+65 °С) и разрешением 0,008%. Старение для датчика составляет 0,5% в год.

Для измерения качества воздуха BME680  имеет датчик на основе оксида металла, который определяет содержание ЛОС путем адсорбции молекул кислорода на его чувствительном слое. Датчик реагирует на большинство летучих веществ, загрязняющих воздух в помещении (за исключением CO2). Датчик способен измерять количество загрязняющих веществ ЛОС в окружающем воздухе, таких как выделение газов из краски, мебели или отходов, высокие уровни ЛОС в результате приготовления пищи, потребления пищи и выдыхаемого воздуха или потоотделения.
В качестве необработанного сигнала датчик выдает значения сопротивления, которые изменяются в зависимости от изменения концентрации ЛОС. Чем выше концентрация восстанавливающих ЛОС, тем ниже сопротивление, и наоборот. Поскольку на этот необработанный сигнал влияют параметры, отличные от концентрации ЛОС (например, уровень влажности), необработанные значения преобразуются интеллектуальными алгоритмами в рамках BSEC (Экологический кластер Bosch Sensortec) в индекс качества воздуха в помещении (IAQ).
IAQ Статус Значение
0 ~ 50 Хорошо Качество воздуха считается удовлетворительным, а загрязнение воздуха практически не представляет опасности
51 ~ 100 Умеренный Качество воздуха приемлемое; однако некоторые загрязняющие вещества могут представлять умеренную угрозу для здоровья очень небольшого числа людей, которые необычайно чувствительны к загрязнению воздуха
101 ~ 150 Вредно для чувствительных групп Некоторые люди могут  могут испытывать проблемы со здоровьем. 
151 ~ 200 Вредно для здоровья Воздействие на здоровье может начаться у всех; некоторые люди могут испытывать более серьезные последствия для здоровья.
201 ~ 300 Очень вредно для здоровья Предупреждение об опасности; каждый может столкнуться с более серьезными последствиями для здоровья.
301 ~ 500 Опасный Предупреждение об особо опасном состоянии для здоровья. 

Шкала IAQ находится в диапазоне от 0 (чистый воздух) до 500 (сильно загрязненный воздух). Во время работы алгоритмы автоматически калибруются и адаптируются к типичным условиям, в которых используется датчик. В процессе калибровки учитывается недавняя история измерений, чтобы гарантировать, что IAQ, равный 25, соответствует “обычно хорошему” воздуху, а IAQ, равный 250, указывает на “обычно загрязненный” воздух.
Недостатком встроенного газоанализатора является необходимость дополнительного разогрева чувствительного элемента с помощью специального нагревателя, температура которого достигает нескольких сотен градусов. В частности в BME680 она составляет около 320 °С.
К сожалению, использование нагревателя приводит к тому, что датчик ЛОС оказывается самым «прожорливым» среди встроенных сенсоров. Пиковый ток потребления нагревателя достигает 18 мА, а типовой 12 мА. Благодаря наличию режимов пониженного потребления удается значительно сэкономить ресурс батареи. Среднее потребление датчика в режиме «Ultra Low Power» составляет 90 мкА, 0,9 мА в режиме «Low Power» и 12 мА при периодическом опросе. Между собой режимы главным образом отличаются частотой опроса и, соответственно, временем отклика.

Пример использования датчика в Arduino IDE

Для работы с датчиком используется библиотека BME280, разработанная Adafruit. Она позволяет измерять температуру, влажность, давление, высоту, точку росы и газ. Библиотека очень простая, и, используя всего несколько строк кода, вы можете подключить BME680 к любому микрокотроллеру. Для компиляции библиотеки требуется другая библиотека под названием Adafruit Unified Sensor. Вы можете загрузить библиотеку по следующей ссылке Adafruit Unified Sensor.

После добавления вышеуказанной библиотеки в Arduino IDE, вы можете добавить библиотеку Arduino BME680 в Arduino IDE, скачав её по следующей ссылке Adafruit BME680 Library.

После установки вышеупомянутых библиотек, и подключения модуля по I2c или SPI интерфейсу загрузите в вашу плату микроконтроллера следующий скетч:


#include <Wire.h> //подключаем библиотеку Wire при подключении по i2c
#include <SPI.h> //подключаем библиотеку SPI при соединении по SPI
#include <Adafruit_Sensor.h>//библиотека обработки показаний датчика
#include <Adafruit_BME680.h>//библиотека драйвер датчика BME680

//Пины SPI Arduino
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25) //атмосферное давление на уровне море. Нужно для корректного определения высоты

Adafruit_BME680 bme; // Работаем по I2C интерфейсу. Для Arduino это пины A4 и A5 
//Adafruit_BME680 bme(BME_CS); // Раскомментируйте если хотите работать через SPI по стандартным пинам
//Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); //Программно определить пины SPI 

void setup() {
 Serial.begin(9600); //Запускаем монитор серийного порта
 while (!Serial);
 Serial.println(F("BME680 test"));
//Пробуем запустить BME пока не получится
 if (!bme.begin()) {
 Serial.println("Could not find a valid BME680 sensor, check wiring!");
 while (1);
 }

 // Количество измерений каждого параметра для вывода среднего значения. Чем больше тем выше точность, но ниже скорость 
 bme.setTemperatureOversampling(BME680_OS_8X); //Температура 8х
 bme.setHumidityOversampling(BME680_OS_2X); //Влажность 2х
 bme.setPressureOversampling(BME680_OS_4X); //Атмосферное давление
 bme.setIIRFilterSize(BME680_FILTER_SIZE_3); //фильтрация значений газоанализатора 3х
 bme.setGasHeater(320, 150); // Температура нагрева газоанализатора 320*C на 150 ms
}

void loop() {
 if (! bme.performReading()) { //чтение всех показаний датчика
 Serial.println("Failed to perform reading :(");//ошибка
 return;
 }
//Выводим показания в серийный порт
 Serial.print("Temperature = ");
 Serial.print(bme.temperature);//Температура
 Serial.println(" *C");

 Serial.print("Pressure = ");
 Serial.print(bme.pressure / 100.0);//Атмосферное давление
 Serial.println(" hPa");

 Serial.print("Pressure mm = ");
 Serial.print(bme.pressure / 133.3);//Атмосферное давление в мм ртутного столба
 Serial.println(" mm");

 Serial.print("Humidity = ");
 Serial.print(bme.humidity);//Влажность воздуха
 Serial.println(" %");

 Serial.print("Gas = ");
 Serial.print(bme.gas_resistance / 1000.0); //Индекс качества воздуха
 Serial.println(" KOhms");

 Serial.print("Approx. Altitude = ");
 Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); //вычисляем высоту над уровнем моря на основе атмосферного давления
 Serial.println(" m");

 Serial.println();
 delay(2000);//Пауза 2 секунды
}

Вышенаписанный код я постарался основательно разбавить комментариями, так что, думаю, в дополнительных пояснениях он не нуждается.

Заключение

В заключении можно сказать, что BME680 - мощный и универсальный датчик, позволяющий нам контролировать качество воздуха и окружающей среды. Он обладает уникальной способностью измерять газовый состав, включая вредные соединения. BME680 находит широкое применение в умных домах, промышленности, здравоохранении и экологическом мониторинге. Его точность и функциональность делают его незаменимым инструментом для повышения качества жизни и бережного отношения к окружающей среде. BME680 представляет собой важный прогресс в области датчиков и имеет потенциал стать ключевым элементом в мониторинге окружающей среды для создания более устойчивого будущего.
Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: Обзоры модулей | Добавил: :, (13.06.2023)
Просмотров: 1069 | Теги: BME680, Arduino IDE | Рейтинг: 0.0/0
Поделиться:
Всего комментариев: 0
avatar