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] чим зможу допоможу.
Недавні записи
- Розпізнавання мови (Speech recognition)
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
- DC-DC для IGBT драйверів ізольований 2 W +15 -8 вольт
- U-FOC - Векторне керування безколекторними моторами
Tags
esp8266 examples adc usart rfid eb-500 soldering lcd stm32 raspberry-pi python mongodb gps mpu-9250 sensors led hih-4000 foc ngnix wifi servo sms ethernet bldc 3d-printer bluetooth mpx4115a web pmsm options remap solar timer bme280 mpu-6050 avr docker flash bkp capture gpio uart meteo i2c usb rtc encoder programmator ssd1306 battery displays java-script barometer watchdog eeprom flask websocket pwm dht11 motor ssd1331 piezo smd brushless atmega books css git st-link dc-dc html nodemcu dma nvic rs-232 exti tim bmp280 max1674
Архіви