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

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

Сб фев 04, 2023 14:38:15

t_fine используется в расчетах давления, а также влажности и качества воздуха, если датчик имеет эти плюшки, как температурный корректор. По этой причине в Вашем (и любом) коде температуру нужно считать в первую очередь, чтобы "оживить" эту переменную.
Честно говоря, не в курсе, каков алгоритм расчетов внутри самого датчика. Да и зачем?

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

Сб фев 04, 2023 17:20:20

Только не смейтесь . . . Мне попался датчик для ардуино BMP280 и я хочу приспособить его к ПИК'у. SPI мне знаком, действия с 16разрядными числами тоже, datasheet ВМР прочитал от корки до корки. Если смогу сформулировать задачу, думаю справлюсь. Меня устроит самая низкая точность; просто интересно.

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

Сб фев 04, 2023 19:17:55

Да какой смех? Нормальные вопросы. Я и сам считаю себя дилетантом в этих китайских железках. :)

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

Вс июн 25, 2023 07:24:53

Все в моей метеостанции работало отлично, но ВМ280 начал выдавать отрицательное давление и влажность 100%...
Кто-нибудь сталкивался с такими показателями ?

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

Пн июн 26, 2023 14:41:58

У меня после сброса питания измерение влажности не проходят и значения плавают около 72%. Но после второй инициализации (сбрасываю микроконтроллер) - измеряет корректно.

Считайте константы из датчика, затем сырые данные и результаты расчётов, чтобы было понятно, откуда может возникать ошибка.

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

Чт ноя 09, 2023 17:22:39

И еще раз про проблему отрицательных температур.
Мне не понятно как 32 битном int может взяться 1 в 31 разряде при условии что данные с датчика приходят вообще в 20 битном виде?

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

Вс ноя 12, 2023 11:58:49

Мне не понятно как 32 битном int может взяться 1 в 31 разряде при условии что данные с датчика приходят вообще в 20 битном виде?

Это как раз знаковый бит. Если в ём 1 - то тенпература отрицательная

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

Пт ноя 17, 2023 23:52:36

Проблема отрицательных температур - РЕШЕНА!
И так, что бы понять, что и где меняет знак, я вывел данные из модуля в десятичном и двоичном коде (данные собраны с нескольких логов, которые были сгенерированы в разное время):


Как видно при переходе через ноль - появляется 1 в 20 разряде вычисляемой переменной Val1. Вот тут то и кроется корень зла. Это как раз и есть знаковый бит. Если в нём 1 - то температура отрицательная. Так же при переходе через 0 начинают врать давление и влажность.
Максимум который что может вычислить модуль - это 188,5 градусов, а минимум -143 градуса (+/- с моими коэффициентами dig_T1 - dig_T3).
Так же видно, что вычисляемая переменная Val2 - не может быть меньше 0.
По этому я добавил в код следующую строчку:

val1 = (((temper_raw>>3)-((int32_t)calibration_data.dig_T1<<1)))*((int32_t)calibration_data.dig_T2)>>11;
if (val1&(0x100000)) val1 |= 0xFFF00000;
val2 = (((((temper_raw>>4)-((int32_t)calibration_data.dig_T1))*((temper_raw>>4)-((int32_t)calibration_data.dig_T1)))>> 12)*((int32_t)calibration_data.dig_T3))>>14;

получилось:

P.S. "Особо одаренным личностям" рекомендую сначала научиться читать, а затем писать.... Ну, если не получается одновременно.

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

Вс дек 17, 2023 17:16:00

Кто ни будь работал с этими модулями по SPI шине?
Не понятно как работать с R/W регистрами?
Посылка данных по SPI:

Чтение данных из регистра:

А вот как организовать запись данных в регистр?
По идее:
BME280_send(reg);
BME280_send(Data);
PORTB |= 1<<PORTB2;
asm ("NOP");
PORTB &= ~(1<<PORTB2);
Но ведь это ничем не отличается от чтения данных из регистра....

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

Пн дек 18, 2023 07:28:28

Даташит тебе прочитать влом.
Ну я прочитал. Подсказка: "Седьмой бит адреса". Дальше сам.

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

Пн дек 18, 2023 13:59:40

К сожалению я читал перевод. Плохо понимаю по англицки. А перевод оказался не полным. Там заканчивается пунктом 6.2.2 (I2C шина).....
Полез в оригинал. И, таки да, при записи обнуляется старший бит адреса регистра.... Вот уже о чем не мог подумать. И еще, что бросилось в глаза - все адреса регистров начинаются с 88, а не с 0 т.е. 1 в старшем бите всегда присутствует. и ее обнуление - не приведет к путанице с адресами регистров.
Теперь (для таких же как я) функция записи выглядит так:

И еще вопросы
1) стоит ли дергать CS после завершения записи?
2) оверсемплинг - повышает точность измерений и увеличивает время измерения?
3) Как работает БИХ фильтр? Производится несколько измерений и вычисляется достоверное?

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

Пн дек 18, 2023 20:32:22

1) По даташиту CS опускается перед записью и поднимается после. Можно записывать несколько значений и потом поднимать CS.
2) да
3) лучше почитай мурзилку. Это фильтр с бесконечной импульсной функцией.
Ответить