Датчики давления BMP280, BME280 и BMP390
Цифровые барометры Bosch измеряют атмосферное давление с разрешением в доли паскаля — этого хватает, чтобы заметить подъём на один этаж. Разбираем по даташитам, чем различаются BMP280, BME280 и BMP390, как их подключить, какие настройки выбрать и как пересчитать давление в высоту.
Обновлено Редакция GAW
Датчики семейства BMP и BME — микросхемы в корпусе LGA размером около 2 × 2,5 мм: внутри пьезорезистивная мембрана над герметичной полостью и микросхема с АЦП, которая отдаёт сырые коды давления и температуры по I²C или SPI. Пересчёт в паскали и градусы делается в микроконтроллере по калибровочным коэффициентам, записанным в каждый датчик на заводе.
Сравнение
По даташитам Bosch:
| Параметр | BMP280 | BME280 | BMP390 |
|---|---|---|---|
| Что измеряет | давление, температура | давление, температура, влажность | давление, температура |
| Диапазон давления | 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 Па/К |
| Питание VDD | 1,71–3,6 В | 1,71–3,6 В | 1,65–3,6 В |
| Питание интерфейса VDDIO | 1,2–3,6 В | 1,2–3,6 В | 1,2–3,6 В |
| Ток при измерении раз в секунду | 2,8 мкА | 2,8 мкА (с влажностью 3,6 мкА) | 3,2 мкА |
| Идентификатор | 0x58 в регистре 0xD0 | 0x60 в регистре 0xD0 | 0x60 в регистре 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²C | SPI |
|---|---|---|
| CSB | к VDDIO | выбор кристалла |
| SCK | SCL | тактовый сигнал |
| SDI | SDA (открытый сток) | данные от ведущего |
| 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 | ×1 | 2,62 Па | 5,5 / 6,4 мс |
| Low power | ×2 | ×1 | 1,31 Па | 7,5 / 8,7 мс |
| Standard resolution | ×4 | ×1 | 0,66 Па | 11,5 / 13,3 мс |
| High resolution | ×8 | ×1 | 0,33 Па | 19,5 / 22,5 мс |
| Ultra high resolution | ×16 | ×2 | 0,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 / ×1 | 4 | 50,9 мкА | 7,3 Гц | 6,4 см |
| Навигация в здании | нормальный | ×16 / ×2 | 16 | 650 мкА | 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) даёт формулу высоты по давлению для стандартной атмосферы:
где 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 указывает, что он измеряет температуру кристалла, которая зависит от нагрева платы и самого датчика и обычно выше окружающей. Для измерения температуры воздуха датчик выносят подальше от тёплых компонентов или берут отдельный термометр.
Источники
- 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
- 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
- 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
- National Weather Service. Pressure Altitude (wxcalc) — формула высоты по давлению: h = 145366,45 · (1 − (P / 1013,25)^0,190284) футов, перевод в метры умножением на 0,3048
- National Weather Service. Station Pressure (wxcalc) — обратная зависимость давления от высоты со стандартными 288 К, градиентом 0,0065 К/м и показателем 5,2561
Нашли ошибку?
Смотрите также
- Высота по давлениюБарометрическая высота, давление на высоте, давление на уровне моря
- Датчики влажности SHT3x, HDC1080, HDC2080, BME280Точность, адреса, питание, отклик, дрейф, нагреватель, пересчёт и размещение
- ДатчикиТок и температура: шунты, датчики Холла, термисторы, термопары — подключение и расчёт
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек
- SPISCLK, MOSI, MISO, CS, режимы 0–3, daisy chain, частота, SPI в AVR
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- Согласование уровнейПрямое соединение, делитель, диоды, MOSFET-транслятор, I²C на BSS138