Перейти к содержанию

Датчики давления BMP280, BME280 и BMP390

Цифровые барометры Bosch измеряют атмосферное давление с разрешением в доли паскаля — этого хватает, чтобы заметить подъём на один этаж. Разбираем по даташитам, чем различаются BMP280, BME280 и BMP390, как их подключить, какие настройки выбрать и как пересчитать давление в высоту.

Обновлено Редакция GAW

Датчики семейства BMP и BME — микросхемы в корпусе LGA размером около 2 × 2,5 мм: внутри пьезорезистивная мембрана над герметичной полостью и микросхема с АЦП, которая отдаёт сырые коды давления и температуры по I²C или SPI. Пересчёт в паскали и градусы делается в микроконтроллере по калибровочным коэффициентам, записанным в каждый датчик на заводе.

Сравнение

По даташитам Bosch:

ПараметрBMP280BME280BMP390
Что измеряетдавление, температурадавление, температура, влажностьдавление, температура
Диапазон давления300–1100 гПа300–1100 гПа300–1100 гПа
Относительная точность±0,12 гПа (±1 м)±0,12 гПа±0,03 гПа (±0,25 м), типично
Абсолютная точность±1 гПа при 0–65 °C±1 гПа при 0–65 °C±0,5 гПа, типично
Температурный дрейф нуля±1,5 Па/К±1,5 Па/К±0,6 Па/К
Питание VDD1,71–3,6 В1,71–3,6 В1,65–3,6 В
Питание интерфейса VDDIO1,2–3,6 В1,2–3,6 В1,2–3,6 В
Ток при измерении раз в секунду2,8 мкА2,8 мкА (с влажностью 3,6 мкА)3,2 мкА
Идентификатор0x58 в регистре 0xD00x60 в регистре 0xD00x60 в регистре 0x00

Влажность BME280 измеряет с точностью ±3 % в диапазоне 20–80 % при 25 °C, с гистерезисом ±1 % и временем отклика около секунды. Регистры давления и температуры BME280 совместимы с BMP280, поэтому код для давления от BMP280 подходит и к нему, если драйвер не проверяет идентификатор; влажность он, конечно, не прочитает. Предшественник BMP180 по таблице Bosch шумит больше (3 Па против 1,3 Па) и работает только по I²C.

Подключение

Интерфейс выбирается выводом CSB в момент включения: если он подключён к VDDIO, работает I²C, если подтянут к нулю — SPI. После первого перевода CSB в ноль I²C отключается, и датчик работает только по SPI до следующего сброса по питанию.

ВыводI²CSPI
CSBк VDDIOвыбор кристалла
SCKSCLтактовый сигнал
SDISDA (открытый сток)данные от ведущего
SDOмладший бит адреса: к общему проводу — 0x76, к VDDIO — 0x77данные к ведущему

Скорость — до 3,4 МГц по I²C и до 10 МГц по SPI. Подтягивающие резисторы линий I²C считают как для любой шины — в статье «Интерфейс I²C»; адрес 0x77 совпадает с адресом BMP180, а два датчика на одной шине разводят выводом SDO, подробнее — в статье об адресах I²C.

Питание и уровни — до 3,6 В, предельно 4,25 В. С платой на 5 В нужны стабилизатор и согласование уровней. Bosch отдельно предупреждает: если на выводы интерфейса подана единица, а питание VDDIO выключено, ток через защитные диоды может повредить датчик. Поэтому датчик и подтяжки шины питают от одного источника.

Режимы и настройки

Режимы. После включения датчик спит. В принудительном режиме (forced) он делает одно измерение по команде и засыпает, в нормальном — измеряет сам с заданной паузой между измерениями. Для метеостанции с опросом раз в минуту подходит принудительный режим, для высотомера — нормальный.

Передискретизация. Каждое удвоение числа отсчётов добавляет бит разрешения и увеличивает время измерения:

Режим BoschДавлениеТемператураРазрешение давленияВремя измерения, типично / макс.
Ultra low power×1×12,62 Па5,5 / 6,4 мс
Low power×2×11,31 Па7,5 / 8,7 мс
Standard resolution×4×10,66 Па11,5 / 13,3 мс
High resolution×8×10,33 Па19,5 / 22,5 мс
Ultra high resolution×16×20,16 Па37,5 / 43,2 мс

Больше ×2 для температуры Bosch ставить не советует: шум давления определяется в основном сырым кодом давления.

Фильтр. Встроенный цифровой фильтр сглаживает кратковременные скачки — от хлопнувшей двери или ветра. Чем больше коэффициент, тем медленнее отклик: при коэффициенте 4 выход доходит до 75 % скачка за 5 измерений, при 16 — за 22. Шум давления при этом падает: в режиме ultra high resolution — с 1,3 Па без фильтра до 0,2 Па с коэффициентом 16.

Готовые сочетания из даташита BMP280:

ЗадачаРежимДавление / температураФильтрТокЧастотаШум высоты
Метеостанцияпринудительный×1 / ×1выкл.0,14 мкАраз в минуту26,4 см
Определение этажа, лифтнормальный×4 / ×1450,9 мкА7,3 Гц6,4 см
Навигация в зданиинормальный×16 / ×216650 мкА26,3 Гц1,6 см
Обнаружение падениянормальный×2 / ×1выкл.509 мкА125 Гц20,8 см

Чтение и компенсация

Результаты читают одним пакетным чтением регистров 0xF7–0xFC: давление и температура — 20-битные коды. Читать регистры по одному не стоит: по даташиту только пакетное чтение гарантирует, что все байты относятся к одному измерению.

Сырые коды пересчитывают по калибровочным коэффициентам dig_T1…dig_T3 и dig_P1…dig_P9 из регистров 0x88–0xA1 (у BME280 добавляются dig_H1…dig_H6). Сначала считается температура — промежуточная переменная t_fine из этого расчёта входит в формулу давления. Bosch даёт формулы в трёх вариантах: целочисленные с 64-битной арифметикой (самые точные), упрощённые 32-битные для 8-битных микроконтроллеров и с плавающей точкой для ПК. На Cortex-M3 без FPU пересчёт давления занимает около 1400 тактов в 64-битном варианте и около 5400 — с двойной точностью. Bosch настоятельно рекомендует использовать готовую библиотеку производителя.

Высота по давлению

Метеослужба США (National Weather Service) даёт формулу высоты по давлению для стандартной атмосферы:

h=44 307,69⋅(1−(P1013,25)0,190284)h = 44\,307{,}69 \cdot \left(1 - \left(\frac{P}{1013{,}25}\right)^{0{,}190284}\right)

где P — давление в гектопаскалях, h — в метрах (в оригинале 145 366,45 фута, умноженные на 0,3048). Обратная формула NWS — давление по высоте при температуре 288 К и градиенте 0,0065 К/м — построена на тех же константах: 288 / 0,0065 ≈ 44 307,7 м, а её показатель 5,2561 близок к 1 / 0,190284 ≈ 5,255.

ДавлениеВысота по формуле
1013,25 гПа0 м
1000 гПа110,8 м
900 гПа988,1 м
700 гПа3010,9 м
300 гПа9160,1 м

Около уровня моря 1 гПа соответствует примерно 8,3 м высоты, на 900 гПа — около 9,2 м. Отсюда ±1 м у BMP280 при относительной точности ±0,12 гПа.

Формула отсчитывает высоту от стандартного давления 1013,25 гПа, а реальное давление на уровне моря меняется с погодой: ошибка в 1 гПа в опорном давлении сдвигает высоту на те же 8 м. Поэтому барометр хорошо измеряет разность высот — этаж, подъём, вертикальную скорость, — а абсолютную высоту даёт только с поправкой на текущее давление, например по данным метеостанции или по GPS. Посчитать высоту, давление на высоте или давление, приведённое к уровню моря, можно в калькуляторе высоты по давлению. Другие датчики — в разделе «Датчики».

Частые вопросы

Какой адрес I²C у BMP280?

0x76, если вывод SDO соединён с общим проводом, и 0x77, если SDO подключён к питанию интерфейса VDDIO. Оставлять SDO свободным нельзя: по даташиту Bosch адрес тогда не определён. Вывод CSB при этом должен быть подключён к VDDIO — иначе датчик выберет SPI.

Как отличить BMP280 от BME280?

Прочитать регистр идентификатора 0xD0: у BMP280 там 0x58, у BME280 — 0x60. Регистры давления и температуры у них совместимы, но BME280 дополнительно измеряет влажность. У BMP390 идентификатор 0x60 лежит в другом регистре — 0x00.

Можно ли подключить BMP280 к Arduino на 5 В?

Сам датчик — нет: его питание и уровни интерфейса — до 3,6 В, предельно 4,25 В. Нужны стабилизатор 3,3 В и согласование уровней на линиях I²C или SPI. На готовых модулях они бывают, но это зависит от модуля — проверьте его схему.

Почему BMP280 показывает температуру выше комнатной?

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

Источники

  1. Bosch Sensortec. BMP280 Digital Pressure Sensor: Data sheet (BST-BMP280-DS001-26, revision 1.26, October 2021) — табл. 1 — сравнение с BMP180; табл. 2 — точность, токи, питание; табл. 3 — предельные режимы; табл. 4–9 — передискретизация, фильтр, сценарии, шум; табл. 13 — время измерения; разделы 3.11 и 5 — компенсация, адрес I²C, выбор интерфейса; регистр 0xD0 = 0x58
  2. Bosch Sensortec. BME280 Combined humidity and pressure sensor: Data sheet (BST-BME280-DS001-24, revision 1.24, February 2024) — влажность ±3 %, гистерезис ±1 %, время отклика 1 с; совместимость регистров с BMP280; регистр 0xD0 = 0x60
  3. Bosch Sensortec. BMP390 Digital pressure sensor: Datasheet (BST-BMP390-DS002-07, revision 1.7, March 2021) — относительная точность ±3 Па (±0,25 м), абсолютная ±50 Па, ТКС ±0,6 Па/К, питание от 1,65 В; регистр 0x00 = 0x60
  4. National Weather Service. Pressure Altitude (wxcalc) — формула высоты по давлению: h = 145366,45 · (1 − (P / 1013,25)^0,190284) футов, перевод в метры умножением на 0,3048
  5. National Weather Service. Station Pressure (wxcalc) — обратная зависимость давления от высоты со стандартными 288 К, градиентом 0,0065 К/м и показателем 5,2561

Нашли ошибку?