Страница 1 из 2

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 13:04
anabolik
Ребята подскажите как реализовать следующее: Имеется барометр БМП280, нужно чтобы он не только показывал данные в реальном времени, но и анализировал показания в течении например 2 - 3 и допустим выводил некое среднее значение показаний за это время.
Заранее спасибо)

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 15:45
Airis
Циклически загоняйте данные о давлении в массив а дальше, а дальше уже с массива можно вычислить средняя значение, минимальное, максимальное и кучу всего на что способна математика.

Добавлено (29.11.2017, 15:45)
---------------------------------------------
Тут даже лучше использовать не просто массив а стек.

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 15:48
pan
в блоках пользователей есть блок усреднения

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 16:33
Nikan
.

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 20:38
anabolik
Airis писал(а):Циклически загоняйте данные о давлении в массив а дальше, а дальше уже с массива можно вычислить средняя значение, минимальное, максимальное и кучу всего на что способна математика.
Я так понимаю, надо сделать следующее: Создаю массив на 60 значений, на дату его кидаю значение датчика давления, на save делаю допустим генератор симметричный который раз в секунду будет давать импульс на запись, потом беру массив сложения снимаю с него данные делю их на 60 и получаю среднее значение ?

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 20:45
pan
метка времени не понятно зачем нужна.
 60 значений думаю слишком много.
и лучше не массив а стек.
периодически делите сумму значений стека на его размер(количество записей) вот и все. "среднее" некуда.

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 20:52
Airis
anabolik писал(а):Создаю массив на 60 значений,
Тут лучше использовать не просто массив а стек. В стек циклически пишется новые данные а стрые автоматически стирается. Но при большем размере массива (стека) надо подумать об автоматическом заполнении всего массива, при подаче питание, иначе, пока весь массив незаполнится до конца, результаты вычисление над данными массива будет очень далеки от реальных.

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 21:30
anabolik
pan писал(а):периодически делите сумму значений стека на его размер(количество записей) вот и все. "среднее" некуда.
А значения то чем вынимать суммой массива сразу или выдергивать значение по одному используя получение элемента массива?
может кто скинет образец схемы?

Добавлено (29.11.2017, 21:30)
---------------------------------------------
А потом 60 слишком много говорите, а если мне нужно допустим среднее значение за 3 -4 часа?

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 21:40
pan
да, берете сумму массива и делите.
anabolik писал(а):нужно допустим среднее значение за 3 -4 часа?
 я думал просто нужно усреднение чтоб не скакали значения.
 ну делайте 60

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 21:41
Airis
Нет 60 не слишком много. Надо только сделать так, чтобы при подаче питание быстро заполнились все ячейки массива, а уже потом их можно заполнять на нужной скорости.

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 21:46
anabolik
От ответов еще больше возникает вопросов)) а как то делается что-бы сумма массива вынималась не сразу а раз в какое-то время?

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 21:53
pan
вроде по русски написано
Изображение

Добавлено (29.11.2017, 21:52)
---------------------------------------------
а, наоборот надо..

Добавлено (29.11.2017, 21:53)
---------------------------------------------
поставьте блок суммы на отдельную плату и выполняйте её по условию когда нужно

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 22:06
anabolik
Опишу задачу подробнее может я не так все и делаю). Я делаю метеостанцию для катера. Хочу сделать предупредитель шторма. Т.е условно если в течении 3 - 4 часов резко падает давление на 2-3 мм ртутного столба то срабатывало бы предупреждение.

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 22:14
pan
опишу как я это представляю.
на примере 1 часа.
запись в стек каждую минуту. (60 записей)
нужно узнать как изменилось давление за последние пол часа.
значит берем из стека давление с индексом 60 (последнее значение) и сравниваем его с давлением с индексом 30 (30 минут назад)
и смотрим разницу

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 22:20
Airis
Вариантов как сделать такую схему много.
Вот один такой:

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

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 22:29
Airis
Сравнение можно сделать так

Измерение давления во времени BMP280

Добавлено: 29 ноя 2017, 22:46
anabolik
Опишу задачу подробнее может я не так все и делаю). Я делаю метеостанцию для катера. Хочу сделать предупредитель шторма. Т.е условно если в течении 3 - 4 часов резко падает давление на 2-3 мм ртутного столба то срабатывало бы предупреждение.

Добавлено (29.11.2017, 22:46)
---------------------------------------------
Благодарю всеех за помощь !

Измерение давления во времени BMP280

Добавлено: 30 ноя 2017, 08:09
eugeneb
Интересная задачка.
А зачем тогда усреднение? По-моему здесь требуется нахождение максимума и минимума за последние 4 часа. И величина разницы между ними и будет сигналом тревоги.

Измерение давления во времени BMP280

Добавлено: 30 ноя 2017, 12:38
anabolik
eugeneb писал(а):А зачем тогда усреднение?
Насколько я в этом разобрался давление имеет суточное колебание и если выдергивать показания из конкретной ячейки массива то будет слишком сильная погрешность. Поэтом логично сначала усреднить значения за допустим час а потом сравнить это число с показанием первой ячейки массива и сделать вывод а тренде давления.

Измерение давления во времени BMP280

Добавлено: 30 ноя 2017, 16:12
eugeneb
Надо узнать какие они, суточные колебания. Вроде как они сильнее у экватора и снижаются к полюсам. Может они незначительные по сравнению со штормовыми скачками.

Если значительные, то скорее всего волновые. Можно будет корректировать показания синусоидальной поправкой прямо в момент съёма показаний. Так что в архив отсчёты лягут уже поправленными.

Я бы снимал 8-10 показаний за раз и тут же усреднял с отбросом выпадающих. Делал бы это, допустим, раз в пять минут. Получается 12 очищенных от флуктуаций (и, если надо, скорректированных) показаний в час. Эти показания задвигаем в FIFO буфер нужной глубины. Допустим на 6 часов - 72 ячейки.

А далее при получении очередного пятиминутного отсчёта сравнивал бы его со всеми наличными отсчётами. Если оно меньше любого отсчёта из архива больше чем на величину тревоги - вот он шторм.

Я пока не говорю о реализации в FLProg. Я говорю об алгоритме. Это то что вы хотели?

Я почитал о предсказании погоды по барометру. Там можно не только шторм предсказывать, но и просто хорошую или плохую погоду. Но это вы потом сможете добавить, если захотите.