Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

BMP280, датчик давления и температуры

Ср мар 01, 2017 11:42:57

Здравствуйте. Купил у китайцев платку с BMP280, подключил к STM32F030F4P6. Датчик успешно выдает паскали давления и градусы температуры, НО температура практически не меняется при нагреве датчика, показывает 2312 +-2 единицы младшего разряда. Проверил что выдается датчик - тоже меняется слабо. Вот не пойму или датчик такой или я не так настроил. Кто с ним работал, подскажите?

Режимы задал:
F4 регистр: BMP280_NORMAL_MODE | BMP280_OVERSAMP_T2 | BMP280_OVERSAMP_P16;
F5 регистр: BMP280_STANDBY_TIME_0_5_MS | BMP280_FILTER_COEFF_4;

UPDATE1:
Код инициализации:


UPDATE2:
Чтение температуры и давления с коррекцией:

Re: BMP280, датчик давления и температуры

Пт апр 07, 2017 08:32:31

Разобрался наконец-то. Я ошибся в нумерации регистров, при чтении блока данных из 6 регистров 0xF7-0xFC. Код выше правильный, номера регистров должны быть:
Код:
#define   BMP280_PRESSURE_MSB_DATA     0
#define   BMP280_PRESSURE_LSB_DATA     1
#define   BMP280_PRESSURE_XLSB_DATA    2
#define   BMP280_TEMPERATURE_MSB_DATA  3
#define   BMP280_TEMPERATURE_LSB_DATA  4
#define   BMP280_TEMPERATURE_XLSB_DATA 5

А было у меня наоборот 0-2 температура, а 3-5 давление.

Re: BMP280, датчик давления и температуры

Ср ноя 22, 2017 11:01:34

А есть описание работы с этим датчиком для "чайников"?
Скачал даташит на BMP280 от BOSCH "Data sheet BMP280 Digital Pressure Sensor", но там для меня как-то все непонятно расписано.
Кроме даташита накачал кучу примеров исходников. Легче мне не стало.
С адресами регистров вроде по даташиту и примерам разобрался


Дальше нужно как-то инициализировать датчик, считать калибровочные данные, и рассчитать. Выручайте букварем!

Или хотя бы на словах порядок действий!
Инициализировать нужно? (запись в регистры config, ctrl_meas. Или вначале считывать калибровочные данные, а потом конфигурировать?
То есть выше изложенный пример верен?

Добавлено after 1 hour 29 minutes 46 seconds:
Я ориентируюсь на эту диаграмму работы
Изображение
Вот как раз по ней и не видно инициализации. Сразу идет измерение температуры, затем давления. А после считывание и преобразование

Re: BMP280, датчик давления и температуры

Ср ноя 22, 2017 11:12:56

Смотрите Figure3 или Figure4.
Init - это запись в регистры ctrl_meas и config.
Формулы для расчётов температуры и давления в pdf есть (даже есть пример на стр.23).

Re: BMP280, датчик давления и температуры

Ср ноя 22, 2017 13:09:46

Albert_V писал(а):Смотрите Figure3 или Figure4.

Смотрю fig4 для Normal mode/
POR - Power On Run? Подача питания? Не понял как расшифровывается.
Write settings - Какие настройки записываются? Config и Ctrl_meas?
Mode=11 это понятно, но по сути будет же прописываться сразу в регистр ctrl_meas
Далее я не понял. Идет вроеде измерение, а сверху прописаны osrs_t[2:0] и osrs_p[2:0], то есть опять же настройка это. И только после цикла ожидания пойдут измерения?
Изображение

А когда, собственно, считывать калибровочные данные?

Re: BMP280, датчик давления и температуры

Ср ноя 22, 2017 13:24:18

serg_svd писал(а):POR - Power On Run? Подача питания?
Верно.
serg_svd писал(а):Write settings - Какие настройки записываются? Config и Ctrl_meas?
Правильно.
serg_svd писал(а):Далее я не понял.
А вот тут уже вы поленились. Вбейте в поиск по документу osrs_t и osrs_p и посмотрите к чему это относится. Это НЕ настройка.
P.S.
Калибровочные данные можно считать один раз и хранить их в памяти или постоянно считывать вместе со значениями температуры и давления. Это уже как вам будет удобнее.
P.P.S.
Документация, на мой взгляд, сделана несколько через ...., но вся информация есть.

Re: BMP280, датчик давления и температуры

Ср ноя 22, 2017 14:40:59

Albert_V писал(а):А вот тут уже вы поленились. Вбейте в поиск по документу osrs_t и osrs_p и посмотрите к чему это относится. Это НЕ настройка.

Да какая лень? Переводчик говорит про регистр ctrl_meas: "устанавливает параметры сбора данных устройства".

Albert_V писал(а):Документация, на мой взгляд, сделана несколько через ....

вот тут я ЗА +100500
Поэтому и разбираюсь очень долго. По-моему документация написана для очень подготовленных инженеров и программистов.

Albert_V писал(а):Калибровочные данные можно считать один раз и хранить их в памяти или постоянно считывать вместе со значениями температуры и давления

Я не очень уверен, но на мой взгляд лучше считывать их каждый раз. Мало ли сбой памяти и полезут "странные" показания. Лучше потратить время на их чтение в каждом цикле

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 01:12:38

serg_svd писал(а):Переводчик говорит про регистр...
Тогда так:
На Figure3(4) по "Y" - ток потребления. osrs_t и osrs_p - это имеется ввиду "её внутренняя работа" по оцифровке данных с датчиков.
Обратите внимание на то что при INIT-е, вначале ей надо записать config и следом ctrl_meas (не наоборот).
Если будете использовать oversampling более х1 - увеличится разрядность данных. Тут уже смотрите какой математикой будете пользоваться. Если 32бит и oversampling более х1 - округлять число до 16-бит придётся вам до начала расчётов.
serg_svd писал(а):По-моему документация написана для очень подготовленных инженеров и программистов.
Скорее, "чтоб враг не догадался" или чтоб скачивали их "родные" библиотеки. :)
----
P.S.

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 02:03:50

Я не очень уверен, но на мой взгляд лучше считывать их каждый раз. Мало ли сбой памяти и полезут "странные" показания. Лучше потратить время на их чтение в каждом цикле

Сбой какой памяти и где? При сбое памяти все может оказаться очень странным, если вообще будет работоспособным ))
А если уж все равно очень хочется быть уверенным считайте их один раз достоверно, запишите на бумаге и забейте в программу как постоянные. И используйте, как постоянные величины, конечно если у вас только один датчик и Вы его менять не собираетесь.
Кстати, мой совет, если только начинаете разбираться с подобными датчиками, купите сразу ВМЕ280, чуть больше усилий, но Вы наверняка разберетесь , если разобрались с ВМР280 и у Вас будут еще данные о влажности так сказать "в одном флаконе" с температурой и давлением. Разница в цене не так уж и велика, но ВМЕ280 чуть-чуть посвежее и поинтереснее для освоения.
По поводу документации присоединяюсь к предыдущим ораторам)

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 02:29:56

Поддерживаю предыдущий совет как насчет алгоритма, так и сенсора. Помимо этого сенсора, посмотрите ещё, например, на MS8607, у которого также все в одном флакоме: давление, влажность, температура. У меня про него статья есть.

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 09:22:59

Спасибо всем ответившим. Продолжаю разбираться.
Сам датчик я прикупил попутно с чем-то на али очень давно. Поэтому пока то что есть, надо запустить, а потом думать покупать или нет что-то другое.
При этом, если судить по информации о маркировке, это не оригинальный датчик и я еще не в курсе, запустится он или нет

Добавлено after 4 minutes 54 seconds:
Тут по настройкам вопрос.
Имеется в даташите таблица
Изображение
Вот какие порекомендуете применять настройки для простого применения по колонке Use case?

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 09:27:29

Встречный вопрос: Для чего вам нужны данные о температуре и давлении? В каком изделии будет BMP280?

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 09:44:43

Встречный вопрос

Да не секрет. Хочу встроить в термометр, чтобы кроме индикации температуры периодически выводить значение давления.
МК ATmega8A, тактовая частота сейчас 4 МГц. Хватит ли ее или поднимать до 8 МГц? Питание от сети.
Я хотел использовать режим Normal, чтобы датчик сам постоянно проводил измерения, а я периодически их забирал для вывода на индикацию

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 09:54:50

Закажите "Indoor navigation".
Не понравится - потом измените.
Не забудьте что в этом случае, до вычислений, значение давления надо будет разделить на 16, а температуру на 2.

Добавлено after 3 minutes 37 seconds:
Что касается тактовой частоты - именно для работы с датчиком это не имеет значения.

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 10:05:23

Albert_V писал(а):Не забудьте что в этом случае, до вычислений, значение давления надо будет разделить на 16, а температуру на 2.

Это для облегчения вычислений?
Просто я еще не дошел до математики вычисления значений температуры и давления. Потихоньку разбираюсь с конфигурацией да и код общения с датчиком, получается, пишу свой. Пусть и кривой, но надо разобраться.
По поводу математики думал ориентироваться на пример со страницы 44 даташита "8. Appendix 1: Computation formulae for 32 bit systems".

Re: BMP280, датчик давления и температуры

Чт ноя 23, 2017 10:13:08

serg_svd писал(а):Это для облегчения вычислений?
Нет. После oversampling-а на 16 вы получите число умноженное на 16.
Начинайте с математики. На стр. 23 есть пример вычислений с исходными данными и результатом. Это вам может пригодиться для проверки.

Re: BMP280, датчик давления и температуры

Пт ноя 24, 2017 22:39:48

Albert_V писал(а):После oversampling-а на 16 вы получите число умноженное на 16.

Вообще-то думал, что это внутренние вычисления в самом датчике.

На стр. 23, на мой взгляд, очень неудачный пример. Он меня запутал еще сильнее. Прокол у Боша вышел с даташитом, даже картинку не могли вставить с нормальным качеством.

В общем я все же взял и скопировал код со стр. 44 "8. Appendix 1: Computation formulae for 32 bit systems" расчет с компенсацией. Только заменил все имена переменных на unsigned long int и long int , ориентируясь по смыслу кода. Ну и имена калибровочных значений своими заменил.

В общем заработало. Выводит давление. Сказать насколько точно - не могу. Другого барометра дома нет. Ориентируюсь на данные сайта метео.нет в моем регионе. На сайте сегодня 719 мм рт. ст. У меня показывает 720.

Re: BMP280, датчик давления и температуры

Сб ноя 25, 2017 07:00:52

serg_svd писал(а):В общем заработало.
Поздравляю.

Re: BMP280, датчик давления и температуры

Сб ноя 25, 2017 11:02:42

Поздравляю.

Спасибо! Но пока не за что. Надо понаблюдать за показаниями. Я мог все-таки что-то напортачить, особенно с типами данных.
Почему говорю, что рано, на данный момент те же 720 на индикаторе. По данным сайта - 722. Точности нет и неизменные показания смущают

Re: BMP280, датчик давления и температуры

Сб ноя 25, 2017 11:14:55

Я не вбивал эти формулы "напрямую", поскольку делал свою математику (программа на ASM).
Сами формулы ошибок не имеют.
Для проверки, делал подстановку значений с датчика (в программе) и перепроверял на отсутствие ошибок просчётом в Exel-е.
Ещё один вариант проверки (если изделие относительно "переносное") - замерить давление на 1-ом этаже дома и на 12-ом. Если датчик исправный - можете высоту вычислить.
P.S.
Себе я ещё сделал поправку на высоту в Па (до перевода в мм рт.ст).
Ответить