BMP280 — датчик атмосферного тиску від BOSCH
Невеличкий огляд датчика атмосферного тиску BMP280.
Хочу сказати, що я досить давно використовую датчики тиску, а останні декілька років перейшов на датчики Bosch Sensortec. Я використовував BMP085, BMP180, і тепер BMP280. Тобто маю з чим порівнювати.
BMP085 та BMP180 дуже схожі між собою, навіть бібліотека від BMP085 підходить до BMP180. BMP280 на їх тлі - це досить помітний крок вперед.
Отже, перейдемо від балачок до фактів. Перше, що відразу помічаєш, - розмір корпуса датчика. Він суттєво зменшився. Його 8-контактний корпус має розміри 2x2.5мм та висоту 0.95мм. Це вимагає при монтажі акуратності та деякого досвіду.
Датчик має інтерфейси I2C та SPI. (BMP085 має тільки I2C, BMP180 були моделі з I2C або SPI). Я використовував тільки I2C.
Взагалі, логіка роботи датчика залишилася такою ж, але зазнала деяких довгоочікуваних покращень (в прямому сенсі цього слова). Як і раніше, на початку роботи треба зчитати з датчика коефіцієнти (вони унікальні для кожного екземпляра). Потім зчитувати показники ADC для температури та тиску та обчислювати реальні значення температури та тиску за формулами, які надані у документації до датчика. У BMP280 суттєво поліпшили температурну стабільність та збільшили роздільну здатність АЦП до 20 біт для температури та тиску.
BMP280 має три режими роботи:
- SLEEP - режим сну,
- FORCED - режим аналогічний до роботи BMP085 та BMP180. Тобто, дали команду на вимірювання, зачекали, прочитали показники, датчик перейшов у режим сну.
- NORMAL - цей режим найбільш цікавий і заганяє датчик у циклічну роботу. Тобто, він самостійно через певний час, який можна задати, виходить з режиму сну та виконує вимірювання, складає дані у регістри пам’яті та знов засинає на вказаний час.
Таким чином, для ваших конкретних задач, можна налаштувати програмний фільтр та точність вимірювань за допомогою наступних параметрів:
- OVERSAMPLING для температури (16,17,18,19,20 біт)
- OVERSAMPLING для тиску (16,17,18,19,20 біт)
- TSB - час очікування датчика між вимірюваннями (0.5,62.5,125,250,500,1000,2000,4000 мс)
- FILTER_COEFFICIENT - коефіцієнт фільтру
Перейдемо до реальних тестів. Cхема підключення:
Тестова плата:
Доречі, у протоколі I2C повинні бути присутні підтягуючі резистори 4,7КОм на лініях SDA, SCL. На платі їх нема. Я використовую внутрішні резистори мікроконтролера. Їх номінал значно більший, але такий прийом працює з BMP085, BMP180 та BMP280. Зверніть увагу, що такий номер може не пройти з іншими мікроконтролерами.
Код для прикладу:
#include <stdio.h>
#include <avr/io.h>
#include "atmega_bmp280_lib.h"
#include "uart.h"
int main(void)
{
int32_t temperature;
int32_t pressure;
int32_t altitude;
uint8_t error_code=0;
int32_t var1, var2;
// Initialize UART0
uart_init();
// Initialize TWI
i2cSetBitrate(1000);
// Initialize BMP280
BMP280_Begin(&error_code);
if (error_code > 0) {
printf("Error code: %d ",error_code);
return -1;
}
while(1)
{
bmp280Convert(&temperature, &pressure, &error_code);
altitude = bmp280CalcAltitude(pressure);
var1 = temperature/10;
var2 = temperature - var1*10;
printf("Temperature: %ld.%ld", var1, var2);
printf("Pressure: %ld Pa", pressure);
var1 = altitude/100;
var2 = (altitude - var1*100)/10;
printf("Altitude: %ld.%ld", var1, var2);
_delay_ms(200);
}
}
Скачати документацію на BMP280
Скачати бібліотеку GCC для AVR і приклад
Успіхів.
Дивись також:
Доброго дня! У мене питання - де Ви його придбали і в яку ціну? А також, чи не могли б ви мені допомогти з 180-м?
Доброго дня. Купував у китайців по $2. Наприклад тут: http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20150409222319&SearchText=bmp280 В Україні поки не знайшов. Щодо BMP180 пишіть мені: [email protected] чим зможу допоможу.
Tags
web java-script bmp280 adc bldc stm32 rs-232 programmator 3d-printer flash pwm sms motor docker raspberry-pi meteo gps ngnix bme280 timer ssd1331 mpu-6050 bkp battery rfid st-link tim mpx4115a ssd1306 encoder atmega pmsm wifi options rtc examples nvic soldering mongodb esp8266 books lcd foc flask barometer bluetooth ethernet brushless uart watchdog servo gpio solar git remap dma usart eb-500 smd nodemcu sensors displays html python capture dht11 led i2c eeprom piezo exti websocket max1674 usb dc-dc avr hih-4000 css mpu-9250
Архіви



