Барометр BMP280

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 20 мая 2019, 22:03

Барометр BMP280.jpg
Барометр BMP280
Барометр BMP280.jpg (71.93 КБ) 1658 просмотров


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

Модуль датчика атмосферного давления BMP280 - новой версии датчика BMP180. Кроме атмосферного давления, датчик так же измеряет температуру. Управление возможно как по I2C интерфейсу, так и по SPI.
BMP280 отличается низким энергопотреблением и высокой точностью, так что его можно использовать в качестве высотомера, с точностью до метра.

Характеристики:
Напряжение питания 1,8 В до 3,6
Низкое энергопотребление - 0.5uA на 1 Гц
интерфейс I2C
Макс I2C Скорость: 3.5MHz
Очень низкий уровень шума - до 0.02hPa (17см)
Диапазон давления: 300-1100 гПа
Размер: 15 * 12 мм
[center]i love you [s]mxIni[/s] Mysql[/center]


Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#2 Дим » 15 июня 2019, 17:57

По I2C почему то не захотел работать, пришлось подключать по SPI. Необходимы библиотеки Adafruit BME280 Library и Adafruit Sensor.

Подключение через SPI.png
Подключение через SPI
Подключение через SPI.png (87.67 КБ) 1583 просмотра

вывод SCL модуля подключается к SCK шины SPI (в нашей схеме это пин номер 13), (в коде 9)
вывод SDO модуля к MISO шины SPI (в нашей схеме это пин номер 12), (в коде 7)
вывод SDA модуля к MOSI шины SPI (в нашей схеме это пин номер 11), (в коде 6)
вывод CSB (CS) модуля к любому цифровому выходу (в нашей схеме это пин номер 10), (в коде 5)

Код: Выделить всё

//#include <Wire.h>
//#include <SPI.h>
//#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>

#define BMP_SCK 9
#define BMP_MISO 7
#define BMP_MOSI 6 
#define BMP_CS 5

//Adafruit_BMP280 bme; //  работаем по шине I2C
//Adafruit_BMP280 bme(BMP_CS); // работаем по шине  hardware SPI
Adafruit_BMP280 bme(BMP_CSBMP_MOSIBMP_MISO,  BMP_SCK);
  
void setup() {
  
Serial.begin(9600);
  
Serial.println(F("BMP280 test"));
  
  if (!
bme.begin()) {  
    
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
    while (
1);
  }
}
  
void loop() {
    
Serial.print("Temperature = ");
    
Serial.print(bme.readTemperature());
    
Serial.println(" *C");
    
    
Serial.print("Pressure = ");
    
Serial.print(bme.readPressure());
    
Serial.println(" Pa");

    
Serial.print("Approx altitude = ");
    
Serial.print(bme.readAltitude(1013.25)); // this should be adjusted to your local forcase
    
Serial.println(" m");
    
    
Serial.println();
    
delay(2000);


Для перевода из pressure pa в наши привычные mmhg, необходимо Pressure/133.3 => 99541,66/133,3 = 746,7491372843

Код: Выделить всё

Serial.print(bme.readPressure()/133.3);
[center]i love you [s]mxIni[/s] Mysql[/center]


Вернуться в «Аппаратная часть»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 6 гостей