BME680 — датчик газа, давления, влажности и температуры Bosch
BME680 — четыре датчика в корпусе 3 × 3 мм: к давлению, влажности и температуре, как у BME280, Bosch добавила металлооксидный газовый датчик с нагревателем. Его берут для оценки качества воздуха в помещении. Разбираем по даташиту выводы, точность, порядок измерения, что на самом деле выдаёт газовый датчик и зачем для индекса IAQ нужна библиотека BSEC.
Обновлено Редакция GAW
BME680 продолжает линейку BMP280 и BME280: тот же принцип — сырые коды и калибровочные коэффициенты в памяти, компенсация по формулам из даташита, — но с газовым датчиком на нагреваемой пластинке. Карта регистров у BME680 своя, поэтому библиотеки для BME280 к нему не подходят (наш вывод). Пересчёт давления в высоту — в калькуляторе барометрической высоты, сравнение барометров — в статье «Датчики давления», датчиков влажности — в статье «Датчики влажности».
Коротко
- Питание — VDD 1,71–3,6 В (оптимум 1,8 В), VDDIO 1,2–3,6 В; предел 4,25 В.
- Интерфейс — I²C до 3,4 МГц (адреса 0x76 и 0x77) или SPI до 10 МГц, 3 или 4 провода.
- Давление — 300–1100 гПа, ±0,6 гПа абсолютная и ±0,12 гПа относительная точность (тип.).
- Влажность — ±3 % тип. при 20–80 % и 25 °C, отклик τ63 — 8 с.
- Температура — ±0,5 °C при 25 °C, ±1,0 °C при 0…65 °C.
- Газ — сопротивление слоя в омах; нагреватель 200–400 °C, 12 мА тип. при 320 °C.
- Ток — 3,7 мкА при измерении давления, влажности и температуры раз в секунду; 0,15 мкА во сне.
- Корпус — LGA-8 3,0 × 3,0 × 0,93 мм с металлической крышкой и отверстием.
Выводы
Нумерация такая же, как у BME280 и BMP280 по их даташитам: по часовой стрелке в виде сверху и против часовой — в виде снизу, со стороны площадок (рис. 11 даташита). Вентиляционное отверстие в крышке — у края корпуса, противоположного выводу 1.
| Вывод | Обозначение | Назначение | При I²C | При SPI (4 провода) | При SPI (3 провода) |
|---|---|---|---|---|---|
| 1 | GND | общий | GND | GND | GND |
| 2 | CSB | выбор микросхемы, внутренняя подтяжка 70–190 кОм | VDDIO | CS | CS |
| 3 | SDI | данные | SDA | MOSI | данные |
| 4 | SCK | тактовый сигнал | SCL | SCK | SCK |
| 5 | SDO | данные / младший бит адреса | GND — 0x76, VDDIO — 0x77 | MISO | не подключать |
| 6 | VDDIO | питание интерфейса | VDDIO | VDDIO | VDDIO |
| 7 | GND | общий | GND | GND | GND |
| 8 | VDD | питание датчиков | VDD | VDD | VDD |
Интерфейс выбирается по CSB: первый же ноль на нём включает SPI до следующего включения питания. Поэтому для I²C вывод CSB соединяют прямо с VDDIO — так требует раздел 7.2. На оба питания ставят по 100 нФ, подтяжки шины — обычно 4,7 кОм (разд. 7.2). По разделу 6.2 BME680 не растягивает такт (clock stretching): вывод SCL у него — только вход с высоким сопротивлением, без выхода на общий провод.
Параметры
По таблицам 1, 6–8 даташита. Типичные токи — при 25 °C; минимумы и максимумы дрейфов и смещений — ±3σ за срок службы.
| Параметр | Значение |
|---|---|
| Ток во сне | 0,15 мкА тип., 1 мкА макс. |
| Ток при измерении влажности / давления / температуры | 340 / 714 / 350 мкА тип.; макс. 450 мкА (влажность, при 85 °C) и 849 мкА (давление, при −40 °C) |
| Ток при 1 измерении в секунду | 2,1 мкА (влажность и температура), 3,1 мкА (давление и температура), 3,7 мкА (все три) |
| Время до первого обмена | до 2 мс после VDD > 1,58 В и VDDIO > 0,65 В |
| Давление: диапазон полной точности | 300–1100 гПа при 0…65 °C |
| Давление: абсолютная точность | ±0,6 гПа при 300–1100 гПа и 0…65 °C |
| Давление: относительная точность | ±0,12 гПа при 700–1100 гПа, 25…40 °C и постоянной влажности |
| Давление: шум | 1,4 Па в полной полосе, 0,2 Па в уменьшенной (11 и 1,7 см), наибольшая передискретизация |
| Давление: ТКС смещения / дрейф после пайки | ±1,3 Па/К / от −0,5 до +2,0 гПа |
| Влажность: полная точность | 10–90 % при 0…65 °C |
| Влажность: точность / гистерезис / нелинейность | ±3 % / ±1,5 % / 1,7 % |
| Влажность: разрешение / стабильность | 0,008 % / 0,5 % в год |
| Температура: точность / разрешение | ±0,5 °C при 25 °C, ±1,0 °C при 0…65 °C / 0,01 °C |
Температура, как и у BME280, — это температура кристалла: по сноске к таблице 8 она зависит от платы и самонагрева и обычно выше окружающей. Нагреватель газового датчика добавляет к этому собственное тепло (наш вывод) — тем важнее редкие измерения и место подальше от стабилизатора.
Газовый датчик: что он выдаёт
Металлооксидный слой адсорбирует летучие органические вещества; чем больше в воздухе восстанавливающих веществ, тем ниже его сопротивление. Сам BME680 выдаёт только это сопротивление в омах — «сырой» сигнал, который зависит ещё и от влажности. Индекс качества воздуха IAQ (0–500), «статический» IAQ, CO₂- и b-VOC-эквиваленты считает библиотека Bosch BSEC: она распространяется в виде закрытого двоичного кода по лицензионному соглашению, а открытый драйвер BME68x Sensor API на GitHub даёт только обмен и компенсацию. По сноске 3 к таблице 3 все параметры IAQ относятся только к связке BME680 + BSEC. CO₂ датчик не измеряет.
| Параметр газового датчика | Значение |
|---|---|
| Рабочий диапазон | −40…85 °C, 10–95 % |
| Ток нагревателя при 320 °C | 9 / 12 / 13 мА (мин. / тип. / макс., VDD ≤ 1,8 В, 25 °C) |
| Пиковый ток в первую миллисекунду | 15 / 17 / 18 мА |
| Средний ток в режимах BSEC | 0,09 мА (ULP, раз в 300 с), 0,9 мА (LP, раз в 3 с), 12 мА (непрерывный, 1 Гц) |
| Отклик новых датчиков (τ33–63 %) | 92 с (ULP), 1,4 с (LP), 0,75 с (непрерывный) |
| Разрешение / шум сопротивления | 0,05–0,11 % / 1,5 % |
Характеристики сняты на новых датчиках, проработавших не меньше пяти дней на обычном воздухе. Непрерывный режим Bosch рекомендует только для коротких тестов.
Порядок измерения
Режимов два: sleep после включения и forced — один цикл «температура, давление, влажность, газ» (TPHG) по команде, затем снова сон; режима normal, как у BME280, нет. Пример из раздела 3.2.1:
- Передискретизация в ctrl_hum (0x72) и ctrl_meas (0x74): влажность ×1, температура ×2, давление ×16; IIR-фильтр — в config (0x75), коэффициенты от 0 до 127.
- Время нагрева gas_wait_0 (0x64) = 0x59 — 100 мс; температура нагревателя — код res_heat_0 (0x5A), вычисленный для 300 °C по формуле раздела 3.3.5 из калибровочных par_g1–par_g3, поправок res_heat_range и res_heat_val и температуры окружающего воздуха.
- В ctrl_gas_1 (0x71): nb_conv = 0 (уставка 0) и run_gas = 1.
- Запуск — mode = 0b01 в ctrl_meas. Готовность — бит new_data_0 в регистре 0x1D; для газа проверяют ещё gas_valid_r и heat_stab_r в 0x2B. Ноль в heat_stab_r значит, что нагреватель не успел выйти на температуру.
Наш расчёт кода gas_wait: старшие два бита задают множитель 1, 4, 16 или 64, младшие шесть — число миллисекунд 0–63. 0x59 = 0b01 011001 — множитель 4 и 25 мс, итого 100 мс; наибольшее время — 63 × 64 = 4032 мс, как и сказано в разделе 3.3.5. По даташиту нагревателю нужно около 20–30 мс, чтобы выйти на температуру.
Сопротивление газа считают так: gas_res = var1 × const_array2[gas_range] / (gas_adc − 512 + var1), где var1 = (1340 + 5 × range_switching_error) × const_array1[gas_range]; константы — в таблице 16. Наш расчёт для gas_range = 4 (const_array1 = 1, const_array2 = 499 500,4995) и range_switching_error = 0: при gas_adc = 512 сопротивление равно 499 500 Ом, при gas_adc = 768 — 1340 × 499 500,4995 / 1596 ≈ 419 380 Ом.
Отличия от BME280 и BMP280
| BME280 | BME680 | |
|---|---|---|
| Газовый датчик | нет | есть, с нагревателем |
| Корпус | 2,5 × 2,5 × 0,93 мм | 3,0 × 3,0 × 0,93 мм |
| Режимы | sleep, forced, normal | sleep, forced |
| Ток при 1 Гц (все три величины) | 3,6 мкА | 3,7 мкА |
| Давление, абсолютная точность | ±1,0 гПа | ±0,6 гПа |
| Влажность: точность / гистерезис / отклик | ±3 % / ±1 % / 1 с | ±3 % / ±1,5 % / 8 с |
| Регистр ctrl_meas | 0xF4 | 0x74 |
| chip_id (регистр 0xD0) | 0x60 | 0x61 |
Данные BME280 — из его даташита. Адреса I²C у всех трёх датчиков одинаковые — 0x76 и 0x77, и с BMP280 по адресу 0x77 BME680 совпадает, о чём даташит говорит прямо. Наш вывод: если газ не нужен, BME280 проще — у него есть режим normal и отклик по влажности 1 с против 8 с; BME680 берут ради оценки качества воздуха и готовы для этого подключить BSEC. Об адресах на шине — на странице «Адрес I²C», о шинах — в статьях I²C и SPI.
Расхождения в документации
- Ток в режиме normal. Таблица 1 приводит ток ожидания «в паузе режима normal» (0,29 мкА тип.), хотя раздел 3.1 и таблица 10 описывают только режимы sleep и forced. Наш вывод: строку, по-видимому, перенесли из документации BME280 — для BME680 она не применима.
- Шум давления. На с. 3 — «0,12 Па, или 1,7 см», в таблице 7 тем же 1,7 см соответствуют 0,2 Па при уменьшенной полосе. Берите значение таблицы.
- Отклик газового датчика. На с. 3 — «меньше 1 с» для новых датчиков, в таблице 2 — 0,75 с только в непрерывном режиме, 1,4 с в режиме LP и 92 с в ULP.
- Опечатки в регистрах. Раздел 5.3.3.2 называет регистры res_heat_x «res_wait_x»; при пропуске измерения раздел 5.3.2 говорит о значении 0x8000, а разделы 3.3.4 и 5.3.2.4 — о 0x80000 для 20-битных температуры и давления; рис. 2 относит IIR-фильтр только к температуре, разделы 3.3.4 и 5.3.2.4 — к температуре и давлению.
Частые вопросы
Измеряет ли BME680 CO₂?
Нет. Газовый датчик BME680 — металлооксидный: он реагирует на большинство летучих органических соединений и другие восстанавливающие газы, и Bosch прямо называет CO₂ исключением. Значение «CO₂-эквивалента» в библиотеке BSEC — оценка по средней связи между летучими веществами и CO₂ в выдыхаемом воздухе, а не измерение.
Что выдаёт газовый датчик BME680 без библиотеки BSEC?
Сопротивление чувствительного слоя в омах. Его вычисляют из кода АЦП gas_adc и диапазона gas_range по формуле из раздела 3.4.1 даташита. Чем больше в воздухе восстанавливающих летучих веществ, тем меньше сопротивление. Индекс качества воздуха IAQ от 0 до 500 даташит определяет только для связки BME680 с закрытой библиотекой Bosch BSEC.
Какой адрес I²C у BME680?
0x76, если вывод SDO соединён с общим проводом, и 0x77, если с VDDIO; оставлять SDO свободным нельзя. Это те же адреса, что у BME280 и BMP280, поэтому на одной шине помещаются только два таких датчика в любом сочетании. Отличить BME680 можно по регистру 0xD0: в карте памяти даташита для него указано значение 0x61, у BME280 — 0x60.
Можно ли подключить BME680 к Arduino на 5 В?
Саму микросхему — нет: рабочее питание VDD и VDDIO — до 3,6 В, предельное — 4,25 В, а на выводах интерфейса — не выше VDDIO + 0,3 В. Модули под 5 В несут свой стабилизатор и согласование уровней — это проверяют по схеме модуля. Учтите и ток: нагреватель газового датчика при 320 °C потребляет около 12 мА и до 18 мА в момент включения.
Источники
- Bosch Sensortec. BME680 Low power gas, pressure, temperature & humidity sensor: Datasheet (BST-BME680-DS001-09, revision 1.9, February 2024) — с. 2–3 — корпус LGA 3,0 × 3,0 × 0,93 мм, интерфейсы, питание, токи при 1 Гц, диапазоны; с. 7, табл. 1 — питание, токи сна и измерения, запуск 2 мс; с. 8, табл. 2 — газовый датчик: ток нагревателя 9/12/13 мА, пик 17 мА, средний ток и отклик в режимах BSEC, разрешение и шум; с. 9, табл. 3–4 и сноска 3 — IAQ только с BSEC; с. 10, табл. 6 — влажность; с. 11, табл. 7 — давление; с. 12, табл. 8 — температура; с. 13, табл. 9 — предельные 4,25 В; с. 14–23, разд. 3 — режимы sleep и forced, быстрый старт, разрядность, нагреватель 200–400 °C и 1–4032 мс, формулы res_heat_x и gas_res; с. 24–26, разд. 4 — BSEC и индекс IAQ; с. 28–37 — карта памяти, chip_id 0x61, регистры; с. 38–39, разд. 6 — выбор интерфейса, адреса 0x76 и 0x77; с. 44–45, рис. 11, табл. 24 — выводы и схемы включения
- Bosch Sensortec. BME280 Combined humidity and pressure sensor: Data sheet (BST-BME280-DS001-24, revision 1.24, February 2024) — для сравнения: корпус 2,5 × 2,5 × 0,93 мм, 3,6 мкА при 1 Гц, давление ±1,0 гПа, влажность ±3 %RH, гистерезис ±1 %RH, отклик 1 с, температура ±0,5 °C при 0…65 °C, режим normal, chip_id 0x60, ctrl_meas 0xF4 (с. 2, табл. 2–4, разд. 3.3, 5.4)
Нашли ошибку?
Смотрите также
- Микросхемы датчиковТок, давление, влажность, температура, свет, ИК: карточки и статьи
- BME280Давление, влажность, температура: питание, адреса, точность, режимы
- BMP280Барометр I²C и SPI: питание, адреса, точность, шум, режимы, отличие от BME280
- Датчики давления BMP280, BME280, BMP390Точность, подключение по I²C и SPI, режимы, фильтр, компенсация, высота по давлению
- Датчики влажности SHT3x, HDC1080, HDC2080, BME280Точность, адреса, питание, отклик, дрейф, нагреватель, пересчёт и размещение
- Высота по давлениюБарометрическая высота, давление на высоте, давление на уровне моря
- БИХ-фильтрЦифровой фильтр с обратной связью: формула, коэффициент, время отклика
- ПередискретизацияOversampling: дополнительные биты АЦП усреднением
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- Самонагрев датчикаДатчик греется током измерения: ΔT = P/δ
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек
- SPISCLK, MOSI, MISO, CS, режимы 0–3, daisy chain, частота, SPI в AVR