Цифровой модуль GY-68 датчика атмосферного давления и температуры BMP180
Артикул:
GY-68
Код товара:
00492
Нет в наличии
Описание
Описание
Цифровой модуль GY-68 датчика атмосферного давления и температуры BMP180 GY-68 Digital Barometric Pressure Sensor Board Module compatible with BMP180
Измеряет атмосферное давление и температуру. С помощью преобразования данных о давлении и температуре определяется высота – цифровой модуль атмосферного давления и температуры используется как высотомер. Модуль GY-68 воспринимает давление и температуру благодаря микросхеме изготовленной по пьезо-резистивной технологии BMP180 BOSCH. Характеристики датчика позволяют применять его в мультикоптерах, воздушных шарах, зондах, дельтапланах. Модуль используется в составе самостоятельного высотомера или вместе с прибором ГЛОНАСС, GPS для уточнения высоты. Найдет применение цифровой модуль атмосферного давления, температуры и в приборах отслеживающих погоду. Ориентирован на работу совместно с микроконтроллером. Каждая микросхема BMP180 проходит калибровку на заводе-изготовителе. В результате калибровочные коэффициенты записываются в ПЗУ. Имеет интерфейс I2C. Измеренные величины давления и температуры передаются по последовательной шине данных цифрового барометра-термометра. Высота над уровнем моря вычисляется по методике изложенной в документации микросхемы BMP180 на странице 15. Количество измерений в секунду может достигать 128. Обычно используют датчик в режиме одно измерение в секунду. Это увеличивает точность и экономит ток потребления. Датчик может измерять атмосферное давление с различной точностью. Требуемая точность измерения сообщается датчику микроконтроллером. Важно правильно задать задержку в программе перед чтением регистров данных. BMP180 соответствует микросхеме BMP085 в части программного обеспечения обрабатывающего данные.
Измерение температуры и давления с помощью BMP180.
Характеристики
Некоторые характеристики датчика измеряются в гектопаскалях сокращенно гПа. 1 гектопаскаль = 100 Паскаль. Это связано с тем, что при измерении высоты с помощью контроля давления используется барическая ступень. Высота, на которую надо подняться или опуститься, чтобы давление изменилось на 1 гПа – барическая ступень.
Питание GY-68 напряжение 3,3 или 5 В ток, мкА в режиме ожидания 0,1 потребление возрастает на 0,5 при увеличении частоты измерений на 1 Гц средний 5 Диапазон измерения давления от 300 до 1100 гПа что соответствует высоте -500…9000 м С точностью ± 0,02 гПа, что при работе в режиме высотомера соответствует 0,17 м Диапазон измерения температуры 0...65 °C С точностью ± 2 °C Разрешающая способность 16 бит Максимальная скорость интерфейса 3,4 Мбод Адрес 7 бит на шине I2C значением 0x77 Время отклика 7,5 мс Шум в режиме низкого потребления 0,5 м в режиме высокого потребления 0,17 м Диапазон температуры при работе –40…85 °C Отверстие под винт 3 мм Размеры 36 x 38 x 9,3 мм
При температуре воздуха 0 °C и давлении 1000 гПа, барическая ступень составляет 8 метров на гПа. Чтобы давление уменьшилось на 1 гПа, нужно подняться на 8 метров. С ростом температуры и увеличением высоты ступень возрастает на 0,4 % на каждый градус нагревания. Она прямо пропорциональна температуре и обратно пропорциональна давлению.
Барометрическое давление в гПа и высота над уровнем моря. Синий график – высота в стандартной атмосфере.
Контакты GY-68
VCC – питание 5 В 3.3 – питание 3,3 В GND – общий провод SCL и SDA – интерфейс I2C
Линии соединений GY-68 и Arduino UNO.
Электрическая схема
Напряжение питания 3,3 В подается на контакт 3.3 или формируется стабилизатором U1 MIC5205 маркированным KB33 при подключению модуля GY-68 к источнику напряжения 5 В. Линия питания 3,3 вольта соединена с подтягивающими резисторам R1 и R2. Они необходимы для работы шины I2C – с их помощью формируются высокие уровни сигнала, а когда BMP180 проваливает это напряжение – формируется низкий логический уровень.
Программирование
Приводим текст программы для ардуино выводящей величины температуры и давления в окно последовательного монитора ардуино.
//Calibration values int ac1; int ac2; int ac3; unsigned int ac4; unsigned int ac5; unsigned int ac6; int b1; int b2; int mb; int mc; int md;
//b5 is calculated in bmp085GetTemperature(...), this variable is also used in bmp085GetPressure(...) //so ...Temperature(...) must be called before ...Pressure(...). long b5;
//Stores all of the bmp085's calibration values into global variables //Calibration values are required to calculate temp and pressure //This function should be called at the beginning of the program void bmp085Calibration() { ac1 = bmp085ReadInt(0xAA); ac2 = bmp085ReadInt(0xAC); ac3 = bmp085ReadInt(0xAE); ac4 = bmp085ReadInt(0xB0); ac5 = bmp085ReadInt(0xB2); ac6 = bmp085ReadInt(0xB4); b1 = bmp085ReadInt(0xB6); b2 = bmp085ReadInt(0xB8); mb = bmp085ReadInt(0xBA); mc = bmp085ReadInt(0xBC); md = bmp085ReadInt(0xBE); }
//Calculate temperature given ut. //Value returned will be in units of 0.1 deg C short bmp085GetTemperature(unsigned int ut) { long x1, x2;
//Calculate pressure given up //calibration values must be known //b5 is also required so bmp085GetTemperature(...) must be called first //Value returned will be pressure in units of Pa long bmp085GetPressure(unsigned long up) { long x1, x2, x3, b3, b6, p; unsigned long b4, b7;
//Read 2 bytes from the BMP085 //First byte will be from 'address' //Second byte will be from 'address'+1 int bmp085ReadInt(unsigned char address) { unsigned char msb, lsb;
//Read the uncompensated temperature value unsigned int bmp085ReadUT() { unsigned int ut;
//Write 0x2E into Register 0xF4 //This requests a temperature reading Wire.beginTransmission(BMP085_ADDRESS); Wire.send(0xF4); Wire.send(0x2E); Wire.endTransmission();
//Wait at least 4.5ms delay(5);
//Read two bytes from registers 0xF6 and 0xF7 ut = bmp085ReadInt(0xF6); return ut; }
//Read the uncompensated pressure value unsigned long bmp085ReadUP() { unsigned char msb, lsb, xlsb; unsigned long up = 0;
//Write 0x34+(OSS<<6) into register 0xF4 //Request a pressure reading w/ oversampling setting Wire.beginTransmission(BMP085_ADDRESS); Wire.send(0xF4); Wire.send(0x34 + (OSS<<6)); Wire.endTransmission();
//Wait for conversion, delay time dependent on OSS delay(2 + (3< //Read register 0xF6 (MSB), 0xF7 (LSB), and 0xF8 (XLSB) Wire.beginTransmission(BMP085_ADDRESS); Wire.send(0xF6); Wire.endTransmission(); Wire.requestFrom(BMP085_ADDRESS, 3);
//Wait for data to become available while(Wire.available() < 3) ; msb = Wire.receive(); lsb = Wire.receive(); xlsb = Wire.receive();
В сети содержится множество библиотек и программ для вывода данных датчика BMP180 на индикаторы и подсчета высоты над уровнем моря.
ПРИМЕЧАНИЕ
Важно: датчик BMP180 чувствителен к влаге. Не применяйте растворители для чистки контактов модуля GY-68 после пайки. Для снижения погрешности рекомендуется закрыть модуль GY-68 от освещения. Не забудьте при построении альтиметра в программе внести коррекцию с указанием высоты, на которой находится ваш исследовательско-конструкторский центр. Именно с этой высоты с учетом атмосферного давления будет производится отсчет подъема летательного аппарата.