Меню

Bmp180 датчик атмосферного давления и температуры

Взаимодействие BMP180, датчика атмосферного давления и температуры, с Arduino

Добавьте в свой следующий проект на Arduino возможность отслеживать состояние окружающей среды с помощью датчика BMP180.

Взаимодействие BMP180, датчика атмосферного давления и температуры, с Arduino

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

  • По мере того, как мы поднимаемся от уровня моря до горной вершины, атмосферное давление снижается. Это означает, что, измеряя давление, мы можем определить высоту. Таким образом, мы можем использовать этот датчик в качестве альтиметра (высотомера).
  • Поскольку атмосферное давление меняется в зависимости от погоды, мы можем использовать его для мониторинга изменений погоды.

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

Обзор железа

В основе модуля лежит цифровой датчик давления и температуры нового поколения производства Bosch – BMP180.

Чип BMP180

BMP180 может измерять атмосферное давление от 300 гПа до 1100 гПа (что соответствует высотам от 9000 до -500 метров над уровнем моря) и температуру от -40°C до 85°C с точностью ±1,0°C.

Рисунок 1 – Чип BMP180 на модуле

Измерения давления настолько точны (небольшой шум соответствует колебаниям высоты 0,25 м), что вы даже можете использовать его в качестве альтиметра с точностью ±1 метр.

Рисунок 2 – Технические характеристики датчика BMP180

Требования к питанию

Модуль поставляется со встроенным стабилизатором 3,3В LM6206, поэтому вы можете без проблем использовать его с микроконтроллером с логикой 5 В, например, с Arduino.

Рисунок 3 – Стабилизатор 3,3 В на модуле BMP180

BMP180 потребляет менее 1 мА во время измерений и только 5 мкА в режиме ожидания. Такое низкое энергопотребление позволяет использовать его в устройствах с батарейным питанием.

Интерфейс I2C

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

Адрес на шине I2C данного модуля установлен аппаратно, он равен 0x77HEX.

Распиновка модуля BMP180

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

Рисунок 4 – Распиновка модуля BMP180

VIN – вывод для подключения источника питания для модуля, напряжение питания может находиться в диапазоне от 3,3 до 5 В.

GND подключается к выводу земля на Arduino

SCL – это вывод синхронизации для интерфейса I2C.

SDA – вывод данных для интерфейса I2C.

Подключение модуля BMP180 к Arduino

Давайте подключим модуль BMP180 к Arduino.

Подключение довольно простое. Начните с соединения выводов GND на модуле и на плате Arduino, затем подключите вывод VIN к выводу 5V на Arduino.

Теперь остаются выводы, которые используются для связи I2C. Обратите внимание, что у разных плат Arduino для I2C используются разные выводы. На платах Arduino с разводкой R3 SDA (линия передачи данных) и SCL (линия синхронизации) находятся на разъеме выводов рядом с выводом AREF. Они также известны как A5 (SCL) и A4 (SDA).

Если у вас Arduino Mega, выводы будут отличаться! Вам необходимо использовать цифровые выводы 21 (SCL) и 20 (SDA). В таблице ниже приведены выводы, использующиеся для I2C на разных платах Arduino.

Выводы шины I2C на разных платах Arduino

SCL SDA
Arduino Uno A5 A4
Arduino Nano A5 A4
Arduino Mega 21 20
Leonardo/Micro 3 2

Следующая диаграмма показывает, как всё подключить.

Рисунок 5 – Подключение модуля BMP180 к Arduino

Установка необходимых библиотек

Расчет высоты и барометрического давления с помощью модуля BMP180 требует много математики. К счастью, была написана библиотека Adafruit BMP180, чтобы скрыть все сложности, и мы могли бы выполнять простые команды для считывания данных о температуре, атмосферном давлении и высоте.

Чтобы установить библиотеку, перейдите в раздел «Скетч»→ «Подключить библиотеку» → «Управлять библиотеками…». Подождите, пока менеджер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Рисунок 6 – Установка библиотеки Arduino – выбор управления библиотеками в Arduino IDE

Отфильтруйте результаты поиска, набрав «bmp180». Там должно быть пара записей. Ищите библиотеку Adafruit BMP085 by Adafruit. Нажмите на эту запись, а затем выберите «Установка».

Рисунок 7 – Установка библиотеки Arduino BMP180

Код Arduino, чтение показаний температуры и атмосферного давления

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

Вот как выглядит вывод в мониторе последовательного порта.

Рисунок 8 – Вывод в мониторе последовательного порта

Каждое снижение давления на уровне моря на 1 гПа приводит к ошибке 8,5 м в расчетах высоты. Поэтому высота, которую мы получаем, достаточно близка, но не точна.

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

Данный код предполагает, что текущее давление на уровне моря составляет 1013,25 миллибар, что равно 101325 Паскалям. Вот почему переменная seaLevelPressure_hPa установлена в 1013.25 .

Объяснение кода

Скетч начинается с включения двух библиотек, а именно Wire.h и Adafruit_BMP085.h .

Далее мы определяем переменную seaLevelPressure_hPa , необходимую для расчета высоты. Измените ее значение на текущее давление на уровне моря в вашем регионе.

Мы также создаем объект bmp , чтобы получить доступ к функциям, связанным с ним.

В функции setup() мы инициализируем последовательную связь с компьютером и вызываем функцию begin() .

Функция begin() инициализирует интерфейс I2C и проверяет правильность идентификатора чипа. Затем она программно перезапускает микросхему и ждет окончания калибровки датчика после запуска.

В функции основного цикла для считывания с модуля BMP180 показаний температуры, атмосферного давления и высоты мы используем следующие функции:

  • функция readTemperature() возвращает от датчика температуру;
  • функция readPressure() возвращает от датчика атмосферное давление;
  • функция readAltitude(seaLevelPressure_hPa * 100) вычисляет высоту (в метрах) исходя из текущего атмосферного давления (в гПа);
  • функция readSealevelPressure() вычисляет давление на уровне моря (в гПа).

Источник

Обзор датчика давления BMP180 (BMP080)

Автор: Сергей · Опубликовано 21.09.2017 · Обновлено 13.04.2020

Датчик BMP180 (3.3В, GY-68) — является недорогим и простым в использовании сенсорным датчиком, позволяющий измерить атмосферное давления и температуру окружающей среды. Используют данный датчик для определения высоты (чем выше, тем меньше давление), а так же в самодельных метеостанциях.

Технические параметры

► Напряжение питания: 3.3 В – 5 В
► Рабочий ток: 0.5 мA
► Диапазон измеряемого давления: 300 гПа – 1100 гПа
► Интерфейс: I2C
► Время срабатывания: 4.5 мс.
► Точность измерения давления: 0,1 гектопаскаль;
► Точность измерения температуры: 0,1°С;
► Габариты: 15 мм х 14 мм

Общие сведения

Рассмотрим модуль поближе, в левой части расположен сам сенсорный датчик BMP180 фирмы Bosch. Так как датчик BMP 180, работает от 3.3В (а почти все платы Arduino работают на 5В), на плате предусмотрен стабилизатор напряжения XC6206P332MR в корпус SOT-23, который выдает на выходе напряжение в 3.3В, рядом установлена обвязка стабилизатора, состоящая из двух керамических конденсаторов на 1 мкФ. Подключение осуществляется по интерфейсу I2C, линии SCL и SDA выведены на группу контактов на другой стороне модуля, туда же выведено и питание. Последние два резистора на 4.7 кОм, необходимы подтяжки линии SCL и SDA к питанию, конечно при необходимости их можно выпаять, если используете несколько устройств на I2C линии.

Назначение контактов:
► SCL — линия тактирования (Serial CLock)
► SDA — линия данных (Serial Data)
► VCC — «+» питание
► GND — «-» питание

Принципиальная схема датчика BMP180, показана ниже.

Подключение датчика давления BMP180 к Arduino

Необходимые детали:
► Барометрический датчик давления BMP180 (3.3В, GY-68) x 1 шт.
► Arduino UNO R3 (DCCduino, CH340G)x 1 шт.
► Провод DuPont 10x, 2,54 мм, 20 см, F-F (Female — Female) x 1 шт.

Подключение:
В данном примере используем датчик BMP 180 и плату Arduino UNO R3, все получение показание отправлять в «Serial порт», принципе и все, осталось собрать схему по рисунку ниже. Для интерфейса I2C на плате arduino предусмотрено только два вывода A4 и A5, другие вывода не поддерживают I2C, так что учтите при проектирование.

Теперь, о программной части, для нашего удобства разработана библиотека BMP180 Breakout Arduino Library v.1.1.2, которая позволяет упросить работу с датчиком, скачиваем и устанавливаем ее, кстати датчик BMP180 и BMP080 похожи, включая и команды, так что библиотека у них одна.

Источник

Ардуино: датчик давления BMP180 (BMP085)

Барометр — это устройство, которое измеряет атмосферное давление. То есть давление воздуха, который давит на нас со всех сторон. Еще со школы мы знаем, что первый барометр представлял собой тарелку с ртутью, и перевернутой пробиркой в ней. Автором этого устройства был Эванджели́ста Торриче́лли — итальянский физик и математик. Снять показания ртутного барометра можно так же просто, как и показания спиртового термометра: чем давление снаружи колбы больше, тем выше столбик ртути внутри неё. Пары ртути, как известно, весьма ядовиты.

Позже, появился более безопасный прибор — барометр-анероид. В этом барометре ртуть была заменена на гофрированную коробку из тонкой жести, в которой создано разрежение. Под воздействием атмосферы, коробочка сжимается и через систему рычагов поворачивает стрелку на циферблате. Вот так выглядят эти два барометра. Слева — анероид, справа — барометр Торричелли.

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

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

Электронный барометр

Такие громоздкие барометры мы не сможем использовать в робототехнике. Нам нужен миниатюрный и энергоэффективный прибор, который легко подключается к той же Ардуино Уно. Большинство современных барометров делают по технологии МЭМС, так же как и гиротахометры с акселерометрами. МЭМС барометры основаны на пьезорезистивном, либо на тензометрическом методе, в которых используется эффект изменения сопротивления материала под действием деформирующих сил.

Если открыть корпус МЭМС барометра, можно увидеть чувствительный элемент (справа), который находится прямо под отверстием в защитном корпусе прибора, и плату управления (слева), которая осуществляет первичную фильтрацию и преобразование измерений.

Датчики BMP085 и BMP180

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

Немного важных характеристик BMP180:

  • диапазон измеряемых значений: от 300 гПа до 1100 гПа (от -500м от +9000м над уровнем моря);
  • напряжение питания: от 3.3 до 5 Вольт;
    сила тока: 5 мкА при скорости опроса — 1 Герц;
  • уровень шума: 0.06 гПа (0.5м) в грубом режиме (ultra low power mode) и 0.02 гПа (0.17м) а режиме максимального разрешения (advanced resolution mode).

Теперь подключим этот датчик к контроллеру, и попробуем оценить атмосферное давление.

Подключение BMP180

Оба датчика имеют I2C интерфейс, так что их без проблем можно подключить к любой платформе из семейства Ардуино. Вот как выглядит таблица подключения к Ардуино Уно.

BMP 180 GND VCC SDA SCL
Ардуино Уно GND +5V A4 A5

Принципиальная схема

Внешний вид макета

Программа

Для работы с датчиком нам понадобится библиотека: BMP180_Breakout_Arduino_Library

Скачиваем её из репозитория, и устанавливаем в Arduino IDE. Теперь все готово для написания первой программы. Попробуем получить сырые данные из датчика, и вывести их в монитор COM порта.

Процедура получения заветного давления из датчика не такая тривиальная, и состоит из нескольких этапов. В упрощенном виде алгоритм выглядит так:

  1. запрашиваем у барометра показания встроенного датчика температуры;
  2. ждем время A, пока датчик оценивает температуру;
  3. получаем температуру;
  4. запрашиваем у барометра давление;
  5. ждем время B, пока датчик оценивает давление;
  6. получаем значение давления;
  7. возвращаем значение давления из функции.

Время B зависит от точности измерений, которая задается в функции startPressure. Единственный аргумент этой функции может принимать значения от 0 до 3, где 0 — самая грубая и самая быстрая оценка, 3 — самая точная оценка давления.

Загружаем программу на Ардуино Уно, и наблюдаем поток измерений атмосферного давления. Попробуем поднять датчик над головой, и опустить до уровня пола. Показания будут немного меняться. Осталось только разобраться, как нам преобразовать эти непонятные числа в высоту над уровнем моря.

Преобразование давления в высоту над уровнем моря

Датчик BMP180 возвращает величину давления в гектопаскалях (гПа). Именно в этих единицах принято измерять атмосферное давление. 1 гПа = 100 Паскалей. Известно, что на уровне моря давление в среднем составляет 1013 гПа, и каждый дополнительный метр над уровнем моря будет уменьшать это давление всего на 0.11 гПа (примерно).

Таким образом, если мы вычтем из результата функции getPressure число 1013, и разделим оставшуюся разность на 0.11, то мы получим значение высоты над уровнем моря в метрах. Вот так изменится наша программа:

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

Здесь p — измеренное в данной точке давление, p0 — давление относительно которого идет отсчет высоты.

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

Я не стал полностью копировать функцию getPressure, чтобы сохранить читабельность текста.

В программе появилась еще одна переменная P0 — это давление, которое мы измерим на старте программы. В случае летательного аппарата, P0 будет давлением на взлетной площадке, относительно которой мы начнем набор высоты.

Визуализация

Теперь попробуем отобразить показания давления в программе SFMonitor, и посмотрим как меняется давление при движении датчика на высоту 2 метра.

В результате работы программы получим график давления в Паскалях:

Заключение

Как мы уяснили из урока, определение высоты над уровнем моря не такая тривиальная задача. Мало того, что давление зависит от высоты нелинейно, так еще картину портят различные внешние факторы. Например, давление у нас дома постоянно меняется с течением времени. Даже за несколько минут, высота измеренная нашим прибором может варьироваться в диапазоне 0.5 — 1 метра. Температура так же сильно влияет на качество измерений, поэтому нам приходится учитывать её при расчете давления.

Для летательных аппаратов рекомендуется использовать датчики повышенной точности, такие как MS5611. У этого барометра точность измерений может достигать 0,012 гПа, что в 5 раз лучше, чем у BMP180. Также, для уточнения барометрической высоты полета применяют координаты GPS.

Источник

Читайте также:  Механические датчики давления масла на субару
Adblock
detector