реклама на сайте
подробности

 
 
> Определение фактов заправок по датчику уровня топлива, Определение фактов заправок
KillJoy
сообщение Nov 17 2015, 13:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 3-08-09
Пользователь №: 51 716



Есть сигнал с датчика уровня топлива в баке. Нужно определить все факты заправок. ( выделены зеленым на графике ). Я пробовал использовать метод скользящего среднего для сглаживания данных и интерполяцию кубическими сплайнами, но при этом пики (факты заправок) смещаются вправо. Задача в следующем - нужно игнорировать маленькие всплески (<30 литров) и при этом определять большие всплески (>30 литров).


Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Santik
сообщение Nov 18 2015, 05:48
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 30-03-12
Из: Мирный (Якутия)
Пользователь №: 71 096



Метод скользящего среднего - это КИХ фильтр. На малых порядках имеет отвратительную АЧХ. Большие порядки приводят к существенной временной задержке сигнала, или как говорит ТС "сдвигаются вправо". Эту задержку конечно можно скомпенсировать сдвинув после фильтрации картинку влево на число отсчётов, равное порядку фильтра.
Но более грамотно - использовать антикаузальные фильтры - ведь для этой задачи фильтрация в реальном времени не стоит.
Делается просто - берется вектор данных - фильтруется (любым фильтром) - выходной вектор реверсируется во времени (первая выборка становится последней и т.д.)- снова фильтруется тем же фильтром- и выходной вектор снова реверсируется. Таким образом временной сдвиг, создаваемый фильтром компенсируется, а АЧХ возводится в квадрат. Сплошные преимущества, короче. laughing.gif
Но определённые требования к фильтру всё же есть. Он должен иметь коэффициент передачи в полосе пропускания - как можно ближе к 1. (иначе 0.9*0.9=0.81 - АЧХ фильтра в полосе пропускания из-за возведения в квадрат может здорово испортится.
Наиболее подходящими фильтрами для антикаузальной фильтрации является фильтр Баттерворта и фильтр Чебышева 2-го рода.
Естественно, можно фильтровать и с помощью преобразования Фурье (это тоже антикаузальный фильтр получится).
Главное для данной задачи - правильно определить частоту среза ФНЧ , иначе ступеньки сигнала, соответствующие заправкам - будут сглаживаться.
Ну а далее надо продифференцировать отфильтрованные данные по времени.

Прикрепленное изображение

Прикрепленное изображение

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016