Довольно часто в некоторых проектах на Arduino или проектах на основе микроконтроллеров, применяют такие модели датчиков атмосферного давления, как bmp180, bmp280. Основное их назначение это измерение давления в атмосфере. Получено значение давления к примеры можно вывести на дисплей, подключение LCD 1602 к Arduino довольно простое.
В данной статье попробуем рассмотреть, как работают датчики, как их подключать к Arduino, какие существуют варианты программирования скетчей.
Датчик атмосферного давления bmp180
Давайте взглянем на датчик bmp180, сам датчик давления фирмы Bosh. Датчик работает по интерфейсу I2C, поэтому 2 вывода это SCL и SDA, оставшиеся 2 вывода это питание. Для питания датчика нужно 3.3 В, поэтому на плате предусмотрен стабилизатор с обвязкой из керамических конденсаторов который и выдает требуемое напряжение.
На плате есть 2 резистора которые подтягивают линию данных SCL и SDA к питанию. Распиновка и внешний вид датчика bmp180 представлен на рисунке ниже.
Характеристики датчика bmp180
Модель bmp180 обладает такими техническими характеристиками:
- Габариты 15 Х 14 мм;
- Уровень давления 225-825 мм;
- Аккумулятор 3,3 – 5 В;
- Электропотребление 0,5 мА;
- Поддерживает интерфейс I2C;
Схема подключения датчика BMP180 к Ардуино
Датчик атмосферного давления bmp280
Датчик BMP280 был разработан также фирмой Bosh как более продвинутая модель своего предшественника BMP180. Данная модификация, в отличие от bmp180, может работать по двум интерфейсам (SPI и I2C), а также 3 режима работы:
- NORMAL – в данном режиме модуль просыпается с определённой периодичностью, выполняет необходимые измерения и снова засыпает. Частота измерений задаётся программным путём, а результат считывается при необходимости;
- SLEEP – режим максимально пониженного энергопотребления;
- FORCED – этот режим позволяет будить модуль подачей внешнего управляющего сигнала. После выполнения измерений, модуль автоматически переходит в режим пониженного энергопотребления.
Помимо способности измерять показания атмосферного давления,BMP280 может также определять температуру окружающей среды, что является очень хорошим бонусом.
Все производимые вычисления могут быть отфильтрованы настраиваемым программным фильтром. На рисунке показан внешний вид модуля bmp280 его электрическая схема и распиновка выводов.
Характеристики датчика bmp280
Модель bmp280 обладает такими техническими характеристиками:
- Размер 2 х 2,5 х 0,95 мм;
- Уровень давления 300-1100 гПа;
- Температурный диапазон от 0 до 65 С;
- Поддерживает интерфейс I2C и SPI;
- Аккумулятор 1,7 В – 3,6 В;
- Потребляемый ток 2,7 мкА
Схема подключения датчика BMP280 к плате Arduino по протоколу I2C
Схема подключения датчика 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() . Это значение давления над уровнем моря конкретной местности, где располагается в данный момент модуль. Значение можно узнать в интернете.
Похожие записи
На Arduino можно довольно интересный проект начального уровня - цифровые игральные кости. При помощи которых можно генерировать случайное число от 1 до 6. ...
Системы заземления, используемые для выполнения заземления. Среди критериев, способствующих обеспечению защиты от такого процесса, как поражение электричеством, особого внимания...
В Европе для маркировки кабеля используются свои стандарты и нормативные документы. Чтобы расшифровать маркировку импортного кабеля, необходимо знать, что обозначает конкретная...
Сервопривод (servo) - устройство с электрическим мотором, которому можно задать определенный угол поворота и зафиксировать в определенном положении. Подключение сервопривода к Arduino очень...
Представленная схема полицейской мигалки на микроконтроллере и светодиодах может работать в 16 различных режимах. Режим выбирается при помощи одной кнопки, и собрана на микроконтроллере...
Функция setup() вызывается первой когда запускается скетч. Эта функция необходима для инициализации переменных, настройки режимов работы портов (выводов), для старта каких либо функций...