Arduino Mega 2560 совместимая +Датчик атмосферного давления и температуры BMP280

C Sharp > Arduino Mega 2560 совместимая +Датчик атмосферного давления и температуры BMP280
23.02.2018 23:54:56



Статья:

arduino-1.8.5-windows IDE

CH341 драйвер для китайской платы Arduino Mega 2560 совместимая c ch341

[скачать пример считывания давления и температуры скетч]

Arduino Mega 2560 совместимая +Датчик атмосферного давления и температуры BMP280 установка

BMP280Arduino Mega 2560

bmp280 arduino mega 2560

bmp280 arduino mega 2560

Сенсор с aliexpress с контактами SCL, SDA, CSB и SDO подключается по I2C. Адрес сенсора 0x76.
Подключение BMP280 --> Arduino Mega 2560
SCL --> 21 scl
SDA --> 20 sda

vcc ->питание 3.3v

gnd0->gnd

bmp280 arduino mega 2560

Кстати, в протоколе I2C должны присутствовать подтягивающие резисторы 4,7Ком на линиях SDA, SCL. На плате их нет. Я использую внутренние резисторы микроконтроллера. Их номинал значительно больше, но такой прием работает с BMP085, BMP180 и BMP280. Обратите внимание, что такой номер может не пройти с другими микроконтроллерами.

BMP085 и BMP180 очень похожи между собой, даже библиотека от BMP085 подходит к BMP180. BMP280 на их фоне – это довольно заметный шаг вперед.

Итак, перейдем от разговоров к фактам. Первое, что сразу замечаешь, – размер корпуса датчика. Он существенно уменьшился. Его 8-контактный корпус имеет размеры 2?2.5мм и высоту 0.95мм. Это требует аккуратности и некоторого опыта при монтаже.

Датчик имеет интерфейсы I2C и SPI. (BMP085 имеет только I2C, BMP180 были модели с I2C или SPI).

Вообще, логика работы датчика осталась такой же, но претерпела некоторые долгожданные улучшения. Как и прежде, в начале работы надо считать с датчика коэффициенты (они уникальны для каждого экземпляра). Затем считывать показатели АЦП для температуры и давления и вычислять реальные значения температуры и давления по формулам, которые представлены в документации к датчику. У BMP280 существенно улучшили температурную стабильность и увеличили разрешение АЦП до 20 бит для температуры и давления.

BMP280 имеет три режима работы:

  • SLEEP – режим сна,
  • FORCED – режим аналогичен BMP085 и BMP180. То есть, дали команду на измерение, подождали, считали значения, датчик перешел в спящий режим.
  • NORMAL – этот режим наиболее интересен и загоняет датчик в циклическую работу. То есть, он самостоятельно через определенное время, которое можно задать, выходит из режима сна и выполняет измерения, сохраняет данные в регистры памяти и вновь засыпает на указанное время.

 

Поиск адресов I2C устройств подключенных к Arduino

Скетч

#include <Wire.h>

byte error, address;
int nDevices;  //Кол-во найденных устройств

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}

void loop() {
  Serial.println("Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; 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\n");
  else
    Serial.println("done\n");
  delay(5000);  // Ждем 5 сек. до следующего сканирования
}