Страница 1 из 1
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 02:55}
ecoins
======Фильтры=====
Доработаны и созданы блоки фильтров:
1.Ускоренный фильтр медианный 3-го порядка.
2.Медианный фильтр N-го порядка.
3.Фильтр бегущего среднего.
Работа фильтров обсуждалась на форуме.
Перечисленные фильтры хорошо описаны
https://alexgyver.ru/lessons/filters/
4.Фильтр критических отклонений - на выходе фильтра вырабатывается событие при скачкообразном изменении входного значения.
Фильтры поддерживают форматы byte,word,long,float.
По входу EN (0->1) выполняется сброс фильтра с заполнением буфера последним значением.
Фильтры могут соединяться последовательно.
Каждый фильтр имеет выход времени работы фильтра(подключаемый). который позволяет получить объективное измерение быстродействия фильтра при разных типов переменных, размера выборки и пр.
В фильтре имеется опция, позволяющая выводить на консоль (монитор порта) протокол работы фильтра с выводом промежуточных значений и буфера.
Указанная опция помогает при отладке и также помогает лучше понять работу фильтра.
Ниже тесты фильтров с выводом результатов на lcd.
Основным выводом проведенных измерений является то, что фильтры можно безболезненно использовать в проектах даже с большими выборками - они работают очень быстро.
------------
По мере необходимости будут добавляться новые фильтры.
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 02:58}
ecoins
Тест совмещенного фильтра критических отклонений и бегущего среднего:
Результаты выводятся на lcd и плоттер Arduino IDE.
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 08:50}
Rovki
А на esp8266 ,будет работать? что то в таблице не увидел
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 09:06}
ecoins
Rovki писал(а): ↑07.09.2022{, 08:50}
А на esp8266 ,будет работать? что то в таблице не увидел
Да, будет. Просто на испытаниях разложил пять стендов, а ESP8266 не использовал.
Отчасти внутренне продвигая мысль о полном отказе от ESP8266. Сейчас третьей волной возвращаюсь к тестированию ESP32-C3 - получил много разных плат м модулей на этой основе.
Можете проверить самостоятельно (тесты выложены) - в силу особенности архитектуры ESP8266 должен показать лучшие результаты по быстродействию, чем ESP32S.
Повторюсь, что результаты исследований меня удивили, если не поразили - фильтры можно и нужно использовать широко, там где это надо, в том числе и с большми выборками - 25, 50, 100,200. Выше заложены ограничения в блоках, но можно и изменить.
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 09:16}
Dryundel
О! Супер! Даже говорить ничего не буду. Критика не уместна.
Только спрошу.
Rovki, как результат? Хорошо фильтрует? Разобрался что к чему? Удалось интегрировать в Ваш проект?
Отдельная благодарность ecoins за создание отдельной профильной темы для группы блоков!
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 09:20}
Rovki
Это вы ранние птички , а мне надо принять кофффе, ваннну..., найти место на столе, снова собрать стенд
. Как сделаю ,доложу
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 10:30}
Dryundel
Rovki писал(а): ↑07.09.2022{, 09:20}
Как сделаю ,доложу
Ок. Ждем с нетерпением.
PS
Речь идет не о тесте тестового примера, а о понимании что к чему и интеграции в Ваш проект.
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 10:59}
Rovki
Dryundel писал(а): ↑07.09.2022{, 10:30}
Rovki писал(а): ↑07.09.2022{, 09:20}
Как сделаю ,доложу
Ок. Ждем с нетерпением.
PS
Речь идет не о тесте тестового примера, а о понимании что к чему и интеграции в Ваш проект.
естественнно
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 11:01}
ecoins
Спасибо Rovki, выявлена ошибка при работе c ESP8266(правили систему ввода-вывода для новой библиотеки 1-Wire и вновь всплыли особенности архитектуры и используемого компилятора. Похоже поддержка ESP8266 от производителя чипов отстает, возможно просто утрачен интерес к разработке, которую они объявили устаревшей).
Новую версию библиотеки нужно скачать заново - там исправлена (скорее применена "затычка", но работает и в т.ч. 1-Wire) для ESP8266.
Заодно не помешает скачать новые блоки - там исправления по сенсору HC-SR04 в части работы со встроенным фильтром медианным.
-----
Проверил ESP8266 на фильтре ringAverage - действительно быстрее. Это имеет больше исследовательский интерес, поскольку все показатели в пределах нескольких микросекунд.
ЭкоСреда ecoins - Фильтры
Добавлено: 07.09.2022{, 12:44}
ecoins
B еще проверил на ESP32-C3(тестирую)
ringAverage(выборка 32) int16_t <3; float <3;
ЭкоСреда ecoins - Фильтры
Добавлено: 08.09.2022{, 17:13}
ecoins
Тест для ESP8266
с "упором" на стандартные блоки (по запросу на тестирование)
Блоки ecoins - фильтры.
Блоки ecoins - вывод на консоль и lcd HD44780 i2c(адрес 39): платы 3,4 не обязательны и могут быть убраны.
ЭкоСреда ecoins - Фильтры
Добавлено: 09.09.2022{, 01:30}
ecoins
Развитие теста для ESP8266
После обсуждения с Rovki пришли к выводу развести функции разрешения работы блока и сброс фильтра(заполнение буфера фильтра) ringAverage() через раздельные входы.
Теперь блок имеет раздельные подключаемые входы EN и reset.
Соответственно доработан блок.
Новый блок можно брать из теста.
Возможны будут новые решения, возможно комбинированный блок из трех тестов.
Для ESP8266: блок из FLProg ограничивает частоту опроса ADC периодом 500мс. Подробности в надписи в тесте.
ЭкоСреда ecoins - Фильтры
Добавлено: 09.09.2022{, 09:43}
Gordon0007
Доброго дня, появился вопрос. Если я правильно понимаю то все это сделано на основе сбора данных?
Если это так и у меня буфер на 50 значений и опрос происходит раз в 10 секунд, то я получу более менее корректные значения спустя 500 секунд? Или я чего то не понимаю?
ЭкоСреда ecoins - Фильтры
Добавлено: 09.09.2022{, 09:47}
Rovki
Провел визуальные испытания фильтров
для цифрового индикатора от двух авторов
ecoins,
Dryundel,
Оба показали себя замечательно . Фильтры проверял при одинаковых частотах тактирования и глубине стека (32). У
ecoins, это фильтр скользящее среднее ,у
Dryundel, экспоненциальный . + медианный фильтр последовательно, в начале
Особое требование к фильтрам- "мгновенный" вывод входного напряжения на выход фильтра при старте обеспечен в обоих фильтрах , Замечательно.
В фильтре от
ecoins, удобно и широко представлены настройки фильтра ,возможность работы с разными типа данных и задание глубины стека в широком диапазоне. Во втором фильтре настроек меньше (задача такая не ставилась) .
Dryundel, как автор сам выложит свои фильтры, если посчитает нужным.
Совместными усилиями созданы новые фильтры с новыми возможностями(свойствами) для своих областей применения. Всем СПАСИБО!
Отправлено спустя 7 минут 51 секунду:
PS Сами фильтрующие свойства фильтров и их сравнение, а так же код не исследовал, на предмет оптимальности.
Отправлено спустя 5 минут 50 секунд:
В принципе, для такого фильтра можно не делать отдельный вход заполнения , а сделать внутри- при старте всегда заполнение буфера значением со входа
тем самым компенсировать задержку фильтра при включении автоматически
ЭкоСреда ecoins - Фильтры
Добавлено: 09.09.2022{, 10:36}
ecoins
Gordon0007 писал(а): ↑09.09.2022{, 09:43}
Доброго дня, появился вопрос. Если я правильно понимаю то все это сделано на основе сбора данных?
Если это так и у меня буфер на 50 значений и опрос происходит раз в 10 секунд, то я получу более менее корректные значения спустя 500 секунд? Или я чего то не понимаю?
Не так.
Медианные фильтры не усредняют, а выбирают средний результат.
Бегущего среднего при первом включении заполняет входным значением, а потом только усредняет. И делает это быстро - в каждом цикле все элементы буфера не складываются. При необходимости по переднему фронту reset (подключаемый вход) можно повторно заполнить буфер входным значением. Можно реализовать любую логику средствами FLprog. Можно и использовать предложенный фильтр критических отклонений.
-----------
Почти всегда полезен медианный фильтр 3-го порядка - быстрый и отбрасывает выбросы.
Затем может быть полезен фильтр медианный N- го порядка - тоже быстрый.
И для окончательного сглаживания (если это надо) - фильтр бегущего среднего с небольшим размером буфера.
Так мне кажется.
ЭкоСреда ecoins - Фильтры
Добавлено: 22.09.2022{, 12:31}
Kot
там какая то библиотека нужна ?
ЭкоСреда ecoins - Фильтры
Добавлено: 22.09.2022{, 12:46}
ecoins
Kot писал(а): ↑22.09.2022{, 12:31}
там какая то библиотека нужна ?
#include "RT_HW_BASE.h"
Ниже скетч из проекта с одним блоком фильтра - компилируется:
ЭкоСреда ecoins - Фильтры
Добавлено: 11.03.2023{, 19:38}
Dryundel
ecoins, блоки фильтров на ESP8266 не компилируются.
На всякий случай.
Это не претензия. Просто надо бы поправить что то.
Отправлено спустя 3 часа 24 минуты 43 секунды:
ecoins, я серьезно.
ЭкоСреда ecoins - Фильтры
Добавлено: 12.03.2023{, 02:05}
ecoins
У меня компилируется:
FLProg 1.8.10, CORE ESP8266 3.1.1, RT_HW_BASE.h от 27.02.23 и выше.
ЭкоСреда ecoins - Фильтры
Добавлено: 12.03.2023{, 10:04}
Dryundel
Все понятно.
Насторожила фраза...
ecoins писал(а): ↑12.03.2023{, 02:05}
RT_HW_BASE.h от 27.02.23 и выше.
Ничего выше этой в шапке нет. Именно с ней и не компилируется.
Считая себя нормальным человеком, решил, что
актуально именно то, что последнее в шапке темы.
Вероятно я ошибаюсь по поводу своей нормальности.
А искать и выбирать что то в чреве темы нет не сил не времени. Слишком уж это энергозатратно.
Вот с этой
1000_EIS_Library_1.10e_04.03.23 скомпилировалось.