Меню

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

Датчики давления Arduino bmp280, bmp180, bme280

Датчики атмосферного давления bmp180, bmp280, bme280 – частые гости в инженерных проектах. С их помощью можно предсказать погоду или измерить высоту над уровнем моря. Сегодня именно эту линейку можно назвать самыми популярными и недорогими сенсорами для ардуино. В этой статье мы расскажем принцип действия датчиков, схему подключения к различным платам Arduino и приведем примеры программирования скетчей.

Принцип действия барометра на BMP280, BMP180, BME280

Барометр – устройство, измеряющее атмосферное давление. Электронные барометры используются в робототехнике и различных электронных устройствах. Наиболее распространенными и доступными являются датчики давления от фирмы BOSH: это BMP085, BMP180, BMP280 и другие. Первые два очень похожи между собой, BMP280 – это более новый и усовершенствованный датчик.

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

Датчик BMP280 создан специально для приложений, где требуются малые размеры и пониженное потребление энергии. К таким приложениям относятся навигационные системы, прогноз погоды, индикация вертикальной скорости и другие. Датчик обладает высокой точностью, хорошей стабильностью и линейностью. Технические характеристики датчика BMP280:

  • Габариты 2 х 2,5 х 0,95 мм.
  • Давление 300-1100гПа;
  • Температуры от 0С до 65 С;
  • Поддержка интерфейсов I2C и SPI;
  • Напряжение питания 1,7В – 3,6В;
  • Средний ток 2,7мкА;
  • 3 режима работы – режим сна, режим FORCED (проведение измерения, считывание значения, переход в спящий режим), режим NORMAL (перевод датчика в циклическую работу – то есть устройство самостоятельно через установленное время выходит из режима сна, проводит измерения, считывает показания, сохраняет измеренные значения и переходит снова в режим сна).

Датчик BMP180 – это дешевый и простой в применении сенсорный датчик, который измеряет атмосферное давление и температуру. Используется обычно для определения высоты и в метеостанциях. Состоит устройство из пьезо-резистивного датчика, термодатчика, АЦП, энергонезависимой памяти, ОЗУ и микроконтроллера.

Технические характеристики датчика BMP180:

  • Пределы измеряемого давления 225-825 мм рт. ст.
  • Напряжение питания 3,3 – 5В;
  • Ток 0,5мА;
  • Поддержка интерфейса I2C;
  • Время срабатывания 4,5мс;
  • Размеры 15 х 14 мм.

Датчик bme280 содержит в себе 3 устройства – для измерения давления, влажности и температуры. Разрабатывался для малого потребления тока, высокой надежности и долгосрочной стабильной работы.

Технические характеристики датчика bme280:

  • Размеры 2,5 х 2,5 х 0,93 мм;
  • Металлический LGA-корпус, оснащенный 8-ю выходами;
  • Напряжение питания 1,7 – 3,6В;
  • Наличие интерфейсов I2C и SPI;
  • Потребляемый ток в режиме ожидания 0,1 мкА.

Если сравнивать все устройства между собой, то датчики очень похожи. По сравнению со своим предшественником, к которым относится BMP180, более новый датчик BMP280 заметно меньше по размерам. Его восьмиконтактный миниатюрный корпус требует аккуратности во время монтажа. Также устройство поддерживает интерфейсы I2C и SPI, в отличие от предшественников, которые поддерживали только I2C. По логике работы датчика изменений практически нет, была только усовершенствована температурная стабильность и увеличено разрешение АЦП. Датчик BME280, измеряющий температуру, влажность и давление, также похож на BMP280. Отличие между ними заключается в размерах корпуса, так как BME280 имеет датчик влажности, который немного увеличивает габариты. Количество контактов и их расположение на корпусе совпадают.

Варианты подключения к Arduino

Подключение датчика BMP180 к Ардуино. Для подключения понадобятся сам датчик BMP180, плата Ардуино UNO, соединительные провода. Схема подключения показана на рисунке ниже.

Землю с Ардуино нужно соединить с землей на датчике, напряжение – на 3,3 В, SDA – к пину А4, SCL – к А5. Контакты А4 и А5 выбираются с учетом их поддержки интерфейса I2C. Сам датчик работает от напряжения 3,3 В, а Ардуино – от 5 В, поэтому на модуле с датчиком установлен стабилизатор напряжения.

Читайте также:  Какое давление на высоте низкое или высокое

Подключение BMP 280 к Ардуино. Распиновка и вид сверху платы изображены на рисунке.

Сам модуль датчика давления выглядит следующим образом:

Для соединения с Ардуино нужно подключить выходы следующим образом: соединить землю с Ардуино и на датчике, VCC – на 3,3В, SCL / SCK – к аналоговому контакту А5, SDA / SDI – к А4.

Подключение датчика BME280. Расположение контактов и распиновка у датчика BME280 такая же, как у BMP280.

Так как датчик может работать по I2C и SPI, подключение можно реализовать двумя методами.

При подключении по I2C нужно соединить контакты SDA и SCL.

При подключении по SPI нужно соединить SCL с модуля и SCK (13й контакт на Ардуино), SDO с модуля к 12 выводу Ардуино, SDA – к 11 контакту, CSB (CS) – к любому цифровому пину, в данном случае к 10 контакту на Ардуино. В обоих случаях напряжение подключается к 3,3В на Ардуино.

Описание библиотеки для работы с датчиком. Пример скетча

Для работы с датчиком BMP180 существуют различные библиотеки, упрощающие работу. К ним относятся SFE_BMP180, Adafruit_BMP085. Эти же библиотеки подходят для работы с датчиком BMP080. Для датчика bmp280 используется похожая библиотека Adafruit_BMP280.

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

Затем нужно получить информацию об атмосферном давлении.

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

Датчик BME280 также показывает давление и температуру, дополнительно он может считывать показания о влажности, который по умолчанию выключен. При необходимости можно произвести настройки датчика и начать считывать показания о влажности. Диапазон измерения от 0 до 100%. Библиотека, которая нужна для работы с датчиком, называется Adafruit_BME280.

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

Возможные ошибки при подключении и устранение их

Наиболее часто встречающаяся ошибка – неправильные данные о давлении и температуре, которые отличаются на несколько порядков от реального значения. Причиной этого чаще всего становится неправильное подключение – например, в библиотеке указано, что нужно подключать по I2C, а датчик подключен по SPI.

Также при использовании “китайских” датчиков можно столкнуться с нестандартными I2C или SPI адресами. В этом случае рекомендуется просканировать все присоединенные устройства с помощью одного из популярных скетчей и выяснить, по какому адресу откликается ваш датчик давления.

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

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

Заключение

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

Читайте также:  Народная медицина травы для понижения давления

Подключение датчиков не представляет какой-либо сложности, т.к. используется стандартной i2C или SPI соединение. Для программирования можно использовать одну из готовых бесплатных библиотек.

Источник

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

BMP180 — Датчик абсолютного давления, построенный по пьезорезистивной схеме, он имеет низкий шум и высокую линейность, а также высокую скорость установки показаний. На кристалле расположен MEMS-датчик в виде гибкой кремниевой мембраны, закрывающей камеру со стандартным давлением. На мембране расположены тензодатчики, которые включены по схеме моста, и изменяют своё сопротивление при изгибе мембраны. Изгиб мембраны зависит от разности между окружающим давлением и давлением в камере, и выходной сигнал с тензомоста зависит от давления окружающей среды. Так как параметры мембраны и резисторов зависят от температуры, то на кристалле расположен цифровой термометр, показания которого используются для компенсации данных барометра, но может использоваться и самостоятельно. Не рекомендуется использование для компенсации данных барометра данные о температуре с других датчиков. Термометр в BMP180 расположен на самом измерительном кристалле, он измеряет температуру чувствительного элемента — поэтому его показания наиболее близки к температуре барометра и точны. Барометр может работать с максимальной точностью 2 Пa (если использовать его как барометрический высотомер это соответствует погрешности измерения высоты в 17 см).

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

Напряжение питания 1.62V — 3.6V.

Интерфейс подключения I2C.

Точность до 0.02hPa (17cm).

Диапазон: 300hPa to 1100hPa (+9000m to -500m).

Выходные данные: 16 бит давление и температура

разрешение по давлению 0.01hPa

разрешение по температуре 0.1 о С

Интерфейс барометра BMP180 — I2C, что делает работу с ним простой и удобной. На модуле кроме самого датчика установлен линейный стабилизатор на микросхеме XC6206P332MR в корпусе SOT-23 (падение напряжения на стабилизаторе составляет всего 250 мВ, собственное потребление — 1uA.)

Принципиальная схема модуля BMP180

С1 и C2 по 1uF на схеме — обвес линейного стабилизатора.
R1 и R2 по 4.7К — подтяжка к питанию линий шины I2C.
С3 100 nF — только один из двух, положенных по даташиту BMP180, конденсаторов на питание.

Схема подключения к Arduino. Для Duemilanove и Uno: SDA к выводу A4 ,SCL к A5 .У Arduina Mega подключается на соотвествующие выводы.Остальные выводы GND на GND,VCC на вывод 3.3в(если нет стабилизатора) или 5в(если есть стабилизатор на модуле).

Полная таблица подключения модуля BMP180 к Ардуино

BMP180 label Pin function Arduino connection
DA (SDA) I 2 C data Any pin labeled SDA, or:

Uno, Redboard, Pro / Pro Mini A4
Mega, Due 20
Leonardo, Pro Micro 2
CL (SCL) I 2 C clock Any pin labeled SCL, or:

Uno, Redboard, Pro / Pro Mini A5
Mega, Due 21
Leonardo, Pro Micro 3
«-» (GND) ground GND
«+» (VDD) 3.3V power supply 3.3V

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

Arduino Example Code

/***************************************************
This is an example for the BMP085 Barometric Pressure & Temp Sensor
Designed specifically to work with the Adafruit BMP085 Breakout
—-> https://www.adafruit.com/products/391
These displays use I2C to communicate, 2 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/

// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock — on ‘168/’328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data — on ‘168/’328 Arduino Uno/Duemilanove/etc thats Analog 4
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here

void setup() <
Serial.begin(9600);
if (!bmp.begin()) <
Serial.println(«Could not find a valid BMP085 sensor, check wiring!»);
while (1) <>
>
>

Читайте также:  Плакаты безопасности сосуды работающие под давлением

void loop() <
Serial.print(«Temperature = «);
Serial.print(bmp.readTemperature());
Serial.println(» *C»);

Serial.print(«Pressure = «);
Serial.print(bmp.readPressure());
Serial.println(» Pa»);

// Calculate altitude assuming ‘standard’ barometric
// pressure of 1013.25 millibar = 101325 Pascal

Serial.print(«Altitude = «);
Serial.print(bmp.readAltitude());
Serial.println(» meters»);

Serial.print(«Pressure at sealevel (calculated) = «);
Serial.print(bmp.readSealevelPressure());
Serial.println(» Pa»);

// you can get a more precise measurement of altitude
// if you know the current sea level pressure which will
// vary with weather and such. If it is 1015 millibars
// that is equal to 101500 Pascals.

Serial.print(«Real altitude = «);
Serial.print(bmp.readAltitude(101500));
Serial.println(» meters»);

Данный скетч выводит

  • Temperature = хх.хх *C — Температура в градусах Цельсия
  • Pressure = хх Pa — Атмосферное давление в Паскалях
  • Altitude = хх.хх meters — Высота в метрах
  • Pressure at sealevel (calculated) = хх Pa — Атмосферное давление в Паскалях (относительно уровня моря (расчетная))
  • Real altitude = хх.хх meters — Реальная высота (расчетная)

Для того чтобы выводить атмосферное давление в мм ртутного столба надо изменить несколько строк

Serial.print (bmp.readPressure() / 133.322); // Полученное значение в Па делим на 133,322 и получаем мм.рт.ст.

Serial.println (» mm»); // и соответственно меняем «Pa» на «mm»

Serial.print («Pressure at sealevel (calculated) = «);

Serial.print (bmp.readSealevelPressure() / 133.322);

Настройка датчика BMP180

Атмосферное давление зависит от места измерения, температуры воздуха и погоды. На уровне моря среднегодовое атмосферное давление составляет pн = 1013.25 мбар = 101,325 кПа (нормальное давление) при среднегодовой температуре 15°С. И при подъеме на каждые 8 м атмосферное давление падает на 100 Па = 1 мбар.

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

Нормальное атмосферное давление на уровне моря составляет приблизительно 101,3 кПа или 101325 Па. Проще для получения нужного значения воспользоваться онлайн калькулятором — Расчёт атмосферного давления на различных высотах, а для перевода из (мм рт. ст.) в (Па) есть простая формула Па = мм рт. ст. * 133,322. Для калибровки высоты нам потребуется внести изменения в строку

Serial . print ( bmp . readAltitude ( 101500 ) ) ;

где вместо значения 101500 вводим своё рассчитанное значение.

Вещи, которых нужно остерегаться

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

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

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

Влага: BMP180 чувствителен к влаге и не должен контактировать с водой.

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

Источник

Adblock
detector