Фильтры:
1. RC-фильтр (RC).
Формула работы:
Dacc = Dacc + in – out;
out = Dacc / K;
period – период работы в милисекундах.
Постоянная времени фильтра = K*period, за это время out = 0,63*in.
2. Скользящее среднее на 8 точек (wind).
Формула работы:
out = (temp1+temp2+temp3+temp4+temp5+temp6+temp7+temp8) / 8;
где temp – предыдущие значения входного сигнала (массив).
После каждого вычисления массив значений сдвигается (самое старое значение удаляется, новое заносится в массив).
3. Фильтр аномальных значений (anomal_1).
in – текущее входное значение.
in_1 – предыдущее входное значение.
Если (in – in_1) входит в диапазон (delta), то текущее значение попадает на выход.
4. Фильтр аномальных значений (anomal_2).
in – текущее входное значение.
in_x – предыдущие входные значения.
Если (in – in_1 + in_2 – in_3) входит в диапазон (delta), то их среднеарифметическое значение попадает на выход.
5. Фильтр аномальных значений (anomal_3).
in – текущее входное значение.
in_x – предыдущие входные значения.
in_summ – среднеарифметическое предыдущих четырех измерений.
Если (in – in_summ) входит в диапазон (delta), то текущее входное значение попадает на выход.
6. Медианный фильтр на 10 и 20 точек (median).
Принцип работы:
Есть ряд значений (11,10,12,100,500,30,10,9,10,12,11), которые запомнил фильтр.
Фильтр раскладывает их по возрастанию (9,10,10,10,11,11,12,12,30,100,500) и на выход выдает средний член этого ряда (11).
7. Фильтр Калмана.
Также в архиве есть пара файлов Exel с реальными тестами работы фильтров с болтающимся в воздухе аналоговым входом Arduino.
Видео по использованию фильтра Кальмана.