Блог ветерана разработок

Датчики - сенсор атмосферного давления BMP180 GY-68

НАЗНАЧЕНИЕ
Сенсор атмосферного давления BMP180 GY-68 предназначен  для измерения атмосферного давления и температуры.


BMP180 это датчик атмосферного давления с функцией измерения температуры. Управляется по шине I2C (TWI).

Характеристики:
•    диапазон измерений: 300 - 1100 гПа (9000 ... -500 метров над уровнем моря)
•    разрешение 0.03 гПа / 0.25 м
•    диапазон измерения температур: -40 to +85°C (точность +-2 град)
•    управление по шине I2C
•    напряжения питания: 1.8 - 3.6В
•    потребление в режиме ожидания: 0,1 мкА

 

СХЕМА ЭЛЕКТРИЧЕСКАЯ
 
Рисунок 2

 

СХЕМА ПОДКЛЮЧЕНИЯ К Arduino UNO
 
Рисунок 3

 

НАЧАЛО РАБОТЫ

1.    Собираем схему изображенную на Рисунке 3.
2.    Загружаем скетч сканера подключенных устройсв   I2C_Scan_OK.ino
3.    На мониторе последовательного порта  должны увидеть устройство с адресом 0х77 как на Рисунке 4.

 
Рисунок 4

4.    Загружаем скетч BMP085_Test_UNO_OK.ino и наблюдаем работу cенсор атмосферного давления BMP180 GY-68
 
Рисунок 5


БИБЛИОТЕКИ
Wire.h
Встроенная в Arduino IDE библиотека. Функции библиотеки позволяют работать с подключенныmи модулями по интерфейсу I2C. 

Adafruit_BMP085.h
Adafruit-BMP085-Library-master.zip
https://github.com/adafruit/Adafruit-BMP085-Library

Библиотека для работы с  микросхемой BMP085 в которой определены основные функции для определения давления и температуры.
 readAltitude()        определения высоты над уровнем моря
readPressure()        считывает давление в Паскалях
readTemperature()    считывает теммпературу

 

СКЕТЧИ
I2C_Scan_OK.ino

/************************************************************
    Сканер подключенных к Arduino устройств работающих по протоколу I2C
    
    Файл I2C_Scan_OK.ino
     10 ноября 2015г    Мащенко В.И    mvi54@mail.ru     
     
 Расположение выводов TWI на тех или иных платах Ардуино для наглядности сведено в таблицу:
Ардуино  Выводы I2C / TWI
Uno, Ethernet     A4 (SDA)  A5 (SCL)
Mega2560          20 (SDA)  21 (SCL)
Leonardo           2 (SDA)   3 (SCL)
Due               20 (SDA)  21 (SCL)
                      SDA1     SCL1

*****************************************************************************/
    #include 
     
     
    void setup()
    {
      Wire.begin();
     
      Serial.begin(9600);
      Serial.println("
I2C Scanner");
    }
     
     
    void loop()
    {
      byte error, address;
      int nDevices;
     
      Serial.println("Scanning...");
     
      nDevices = 0;
      for(address = 1; address < 127; address++ )
      {
        // The i2c_scanner uses the return value of
        // the Write.endTransmisstion to see if
        // a device did acknowledge to the address.
        Wire.beginTransmission(address);
        error = Wire.endTransmission();
     
        if (error == 0)
        {
          Serial.print("I2C device found at address 0x");
          if (address<16)
            Serial.print("0");
          Serial.print(address,HEX);
          Serial.println("  !");
     
          nDevices++;
        }
        else if (error==4)
        {
          Serial.print("Unknow error at address 0x");
          if (address<16)
            Serial.print("0");
          Serial.println(address,HEX);
        }    
      }
      if (nDevices == 0)
        Serial.println("No I2C devices found
");
      else
        Serial.println("done
");
     
      delay(5000);           // wait 5 seconds for next scan
    }

 

BMP085_Test_UNO_OK.ino

/*******************************************************************
Программа для тестирования  Сенсора атмосферного давления BMP180 GY-68
        http://easycraft.by/product.php?article=EC141265

Файл BMP085_Test_UNO_OK.ino
Подготовлен  30 января 2016г  Мащенко В.И.  mvi54@mail.ru

СХЕМА ПОДСОЕДИНЕНИЯ

Arduino UNO  pin    BMP180
SCL      pin A5     SCL
SDA      pin A4     SDA
            +5v     VIN
            GND     GND
********************************************************************/

#include 
#include 

Adafruit_BMP085 my_BMP085;
 
void setup() {
  Serial.begin(9600);
  // проверяем подключен датчик BMP085  или нет
  if (!my_BMP085.begin())
    { //  нет сенсора BMP085
      Serial.println("Could not find a sensor BMP085!");
              while (1) {}
     }
}
 
void loop()
{
  // Считываемв температуру       
    Serial.print("Temperature 		= ");
    Serial.print(my_BMP085.readTemperature());
    Serial.print(" *C");
    Serial.print("
");

// Считываемв   давление в Паскалях       
   Serial.print("Pressure 		= ");
   Serial.print(my_BMP085.readPressure());
   Serial.print(" Pa");
   Serial.print("
");
   
// Считываемв давление над уровнем моря в Паскалях   
    Serial.print("Pressure at sealevel 	= ");
    Serial.print(my_BMP085.readSealevelPressure());
    Serial.print(" Pa");
    Serial.print("
");

// Вычисляем высоту над уровнем моря       
    Serial.print("Altitude 		= ");
    Serial.print(my_BMP085.readAltitude());
    Serial.print (" meters");
    Serial.print("
");

// Можно рассчитать более точно высоту
// если мы знаем реальное давление над уровнем моря в данный момент
// например  если  это   101500 Пасквлей то
    Serial.print("Altitude Real 		= ");
    Serial.print(my_BMP085.readAltitude(101500));
    Serial.print(" meters");

    Serial.print("


");
    delay(500);
}

 

Share This Post: