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.
Вообще, логика работы датчика осталась такой же, но претерпела некоторые долгожданные улучшения. Как и прежде, в начале работы надо считать с датчика коэффициенты (они уникальны для каждого экземпляра). Затем считывать показатели АЦП для температуры и давления и вычислять реальные значения температуры и давления по формулам, которые представлены в документации к датчику. У 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 - коэффициент фильтра
Перейдем к реальным тестам. Схема подключения:
Тестовая плата:
Кстати, в протоколе 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 и пример
Официальная информация производителя
Успехов.
См. также:
Додати коментар

Недавні записи
- Адаптивний ПІД регулятор
- Конструктор регуляторів моторів. Структура.
- Конструктор регуляторів моторів. Анонс.
- Golang + Vue + PostgreSQL #2
- Golang + Vue + SQLite #1
- FOC Position Control. Векторне управління - Стабілізація положення
- Flask & Vue. Завантаження файлів. Приклад № 2.10
- Рекуперація. FOC і цікаві досліди
- Flask & Vue. OAuth. Приклад№ 2.9
- Flask & Vue. Використання систем збірки проекту. Webpack. Приклад№ 2.8
Tags
git st-link bme280 battery stm32 nvic dc-dc html flask raspberry-pi uart meteo watchdog motor foc i2c mpu-9250 flash smd docker usb soldering rtc pwm brushless atmega timer ngnix ssd1331 options avr bluetooth web esp8266 programmator barometer examples exti sensors encoder usart books eb-500 bldc eeprom servo rs-232 rfid solar pmsm websocket remap max1674 displays hih-4000 css java-script mpu-6050 3d-printer capture gpio bmp280 bkp adc lcd wifi gps dma sms dht11 ethernet mpx4115a python mongodb ssd1306 nodemcu tim piezo led
Архіви
