Довольно часто в некоторых проектах на Arduino или проектах на основе микроконтроллеров, применяют такие модели датчиков атмосферного давления, как bmp180, bmp280 Основное их назначение это измерение давления в атмосфере. Получено значение давления к примеры можно вывести на дисплей, подключение LCD 1602 к Arduino довольно простое.

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

Датчик атмосферного давления bmp180

Давайте взглянем на датчик bmp180, сам датчик давления фирмы Bosh. Датчик работает по интерфейсу I2C, поэтому 2 вывода это SCL и SDA, оставшиеся 2 вывода это питание. Для питания датчика нужно 3.3 В, поэтому на плате предусмотрен стабилизатор с обвязкой из керамических конденсаторов который и выдает требуемое напряжение.

На плате есть 2 резистора которые подтягивают линию данных SCL и SDA к питанию. Распиновка и внешний вид датчика bmp180 представлен на рисунке ниже.

Распиновка и внешний вид датчик атмосферного давления bmp180

Характеристики датчика bmp180

Модель bmp180 обладает такими техническими характеристиками:

  1. Габариты 15 Х 14 мм;
  2. Уровень давления 225-825 мм;
  3. Аккумулятор 3,3 – 5 В;
  4. Электропотребление 0,5 мА;
  5. Поддерживает интерфейс I2C;

Схема подключения датчика BMP180 к Ардуино

Схема подключения датчика BMP180 к Ардуино

Датчик атмосферного давления bmp280

Датчик BMP280 был разработан также фирмой Bosh как более продвинутая модель своего предшественника BMP180. Данная модификация, в отличие от bmp180, может работать по двум интерфейсам (SPI и I2C), а также 3 режима работы:

  1. NORMAL – в данном режиме модуль просыпается с определённой периодичностью, выполняет необходимые измерения и снова засыпает. Частота измерений задаётся программным путём, а результат считывается при необходимости;
  2. SLEEP – режим максимально пониженного энергопотребления;
  3. FORCED – этот режим позволяет будить модуль подачей внешнего управляющего сигнала. После выполнения измерений, модуль автоматически переходит в режим пониженного энергопотребления.

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

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

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

Характеристики датчика bmp280

Модель bmp280 обладает такими техническими характеристиками:

  1. Размер 2 х 2,5 х 0,95 мм;
  2. Уровень давления 300-1100 гПа;
  3. Температурный диапазон от 0 до 65 С;
  4. Поддерживает интерфейс I2C и SPI;
  5. Аккумулятор 1,7 В – 3,6 В;
  6. Потребляемый ток 2,7 мкА

Схема подключения датчика BMP280 к плате Arduino по протоколу I2C

Схема подключения датчика BMP280 к плате Arduino по протоколу I2C

Схема подключения датчика BMP280 к плате Arduino по протоколу SPI

Схема подключения датчика BMP280 к плате Arduino по протоколу SPI 

 

Для работы с датчиком нужна специальная библиотека. В нашем случае это библиотека Adafruit_BMP280  которая специально заточена для работы с датчиком BMP280.

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

Для того чтобы начать работу с BMP280 нужно скачать и установить библиотеку Adafruit_BMP280 , подключить сам заголовочный файл Adafruit_BMP280.h, а также ещё два файла Wire.h и SPI.h, которые нужны для доступа к необходимым интерфейсам.

Программа для работы с датчиком BMP280


	 #include  // Библиотека для работы с шиной I2C

	 #include  // Библиотека для работы с шиной SPI

	 #include  // Библиотека для работы с датчиком BMP280

	 // Для подключения по шине I2C

	 Adafruit_BMP280 bmp;



	 // Для подключения по аппаратному SPI (указываем только номер пина CS)

	 #define PIN_CS 10

	 Adafruit_BMP280 bmp(PIN_CS);



	 // Для подключения по программному SPI (указываем все пины интерфейса)

	 #define PIN_SCK 13

	 #define PIN_MISO 12

	 #define PIN_MOSI 11

	 #define PIN_CS   10

	 Adafruit_BMP280 bmp(PIN_CS, PIN_MOSI, PIN_MISO, PIN_SCK);

	 void setup() {

	 Serial.begin(9600); // Для вывода отладочной информации в терминал

	   if(!bmp.begin()) { // Если датчик BMP280 не найден

	     Serial.println(“BMP280 SENSOR ERROR”); // Выводим сообщение об ошибке

	     while(1); // Переходим в бесконечный цикл

	 }

	 }


	 bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, // Режим работы

	                 Adafruit_BMP280::SAMPLING_X2, // Точность изм. температуры

	                 Adafruit_BMP280::SAMPLING_X16, // Точность изм. давления

	                 Adafruit_BMP280::FILTER_X16, // Уровень фильтрации

	                 Adafruit_BMP280::STANDBY_MS_500); // Период просыпания, мСек

	 void loop() {

	 // Выводим значение температуры

	 Serial.print(F("Temperature = "));

	 Serial.print(bmp.readTemperature()); // Функция измерения температуры

	 Serial.println(" *C");

	  



	 // Выводим значение атмосферного давления

	 Serial.print(F("Pressure = "));

	 Serial.print(bmp.readPressure()); // Функция измерения атм. давления

	 Serial.println(" Pa");	  



	 // Выводим значение высоты

	 Serial.print(F("Approx altitude = "));

	 Serial.print(bmp.readAltitude(1013.25)); // Функция измерения высоты

	 Serial.println(" m");

	 }

В этом примере следует обратить внимание на число 1013.25 в функции bmp.readAltitude() . Это значение давления над уровнем моря конкретной местности, где располагается в данный момент модуль. Значение можно узнать в интернете.

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

Популярные записи

Датчики атмосферного давления bmp180, bmp280

Довольно часто в некоторых проектах на Arduino или проектах на основе микроконтроллеров, применяют такие...

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

Модуль дисплея LCD 1602 - очень популярен в последнее время ввиду простоты его работы и способа подключения....

Arduino Uno: распиновка, назначение выводов, принципиальная схема

Arduino Uno:— платформа для разработки на базе микроконтроллера ATmega328P...