ЭкоСреда ecoins - Фильтры

Ответить
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

======Фильтры=====
Доработаны и созданы блоки фильтров:
1.Ускоренный фильтр медианный 3-го порядка.
2.Медианный фильтр N-го порядка.
3.Фильтр бегущего среднего.
Работа фильтров обсуждалась на форуме.
Перечисленные фильтры хорошо описаны https://alexgyver.ru/lessons/filters/
4.Фильтр критических отклонений - на выходе фильтра вырабатывается событие при скачкообразном изменении входного значения.
Фильтры поддерживают форматы byte,word,long,float.
По входу EN (0->1) выполняется сброс фильтра с заполнением буфера последним значением.
Фильтры могут соединяться последовательно.
Каждый фильтр имеет выход времени работы фильтра(подключаемый). который позволяет получить объективное измерение быстродействия фильтра при разных типов переменных, размера выборки и пр.
В фильтре имеется опция, позволяющая выводить на консоль (монитор порта) протокол работы фильтра с выводом промежуточных значений и буфера.
Указанная опция помогает при отладке и также помогает лучше понять работу фильтра.
Ниже тесты фильтров с выводом результатов на lcd.
Test_ADC_filter_median3.zip
Test_ADC_filter_medianN.zip
Test_ADC_filter_ringAverage.zip
Test_ADC_filter_critical_ringAverage.zip
Быстродействие-фильтров.jpg
Основным выводом проведенных измерений является то, что фильтры можно безболезненно использовать в проектах даже с большими выборками - они работают очень быстро.
------------
По мере необходимости будут добавляться новые фильтры.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

Тест совмещенного фильтра критических отклонений и бегущего среднего:
Test_ADC_filter_critical_ringAverage_simple.zip
[spoiler]
Проект critical_ringAverage.jpg
[/spoiler]
Результаты выводятся на lcd и плоттер Arduino IDE.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Rovki
Полковник
Сообщения: 5710
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 67 раз
Поблагодарили: 212 раз
Контактная информация:

ЭкоСреда ecoins - Фильтры

Сообщение Rovki »

А на esp8266 ,будет работать? что то в таблице не увидел
Электронщик до мозга костей и не только
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

Rovki писал(а): 07 сен 2022, 08:50 А на esp8266 ,будет работать? что то в таблице не увидел
Да, будет. Просто на испытаниях разложил пять стендов, а ESP8266 не использовал.
Отчасти внутренне продвигая мысль о полном отказе от ESP8266. Сейчас третьей волной возвращаюсь к тестированию ESP32-C3 - получил много разных плат м модулей на этой основе.
Можете проверить самостоятельно (тесты выложены) - в силу особенности архитектуры ESP8266 должен показать лучшие результаты по быстродействию, чем ESP32S.
Повторюсь, что результаты исследований меня удивили, если не поразили - фильтры можно и нужно использовать широко, там где это надо, в том числе и с большми выборками - 25, 50, 100,200. Выше заложены ограничения в блоках, но можно и изменить.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

ЭкоСреда ecoins - Фильтры

Сообщение Dryundel »

О! Супер! Даже говорить ничего не буду. Критика не уместна.
Только спрошу.
[ref=#ff8000]Rovki[/ref], как результат? Хорошо фильтрует? Разобрался что к чему? Удалось интегрировать в Ваш проект?

Отдельная благодарность [ref]ecoins[/ref] за создание отдельной профильной темы для группы блоков!
Аватара пользователя
Rovki
Полковник
Сообщения: 5710
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 67 раз
Поблагодарили: 212 раз
Контактная информация:

ЭкоСреда ecoins - Фильтры

Сообщение Rovki »

Это вы ранние птички , а мне надо принять кофффе, ваннну..., найти место на столе, снова собрать стенд :D . Как сделаю ,доложу
Электронщик до мозга костей и не только
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

ЭкоСреда ecoins - Фильтры

Сообщение Dryundel »

Rovki писал(а): 07 сен 2022, 09:20 Как сделаю ,доложу
Ок. Ждем с нетерпением.
PS
Речь идет не о тесте тестового примера, а о понимании что к чему и интеграции в Ваш проект.
Аватара пользователя
Rovki
Полковник
Сообщения: 5710
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 67 раз
Поблагодарили: 212 раз
Контактная информация:

ЭкоСреда ecoins - Фильтры

Сообщение Rovki »

Dryundel писал(а): 07 сен 2022, 10:30
Rovki писал(а): 07 сен 2022, 09:20 Как сделаю ,доложу
Ок. Ждем с нетерпением.
PS
Речь идет не о тесте тестового примера, а о понимании что к чему и интеграции в Ваш проект.
естественнно :smile225:
Электронщик до мозга костей и не только
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

Спасибо Rovki, выявлена ошибка при работе c ESP8266(правили систему ввода-вывода для новой библиотеки 1-Wire и вновь всплыли особенности архитектуры и используемого компилятора. Похоже поддержка ESP8266 от производителя чипов отстает, возможно просто утрачен интерес к разработке, которую они объявили устаревшей).
Новую версию библиотеки нужно скачать заново - там исправлена (скорее применена "затычка", но работает и в т.ч. 1-Wire) для ESP8266.
Заодно не помешает скачать новые блоки - там исправления по сенсору HC-SR04 в части работы со встроенным фильтром медианным.
-----
Проверил ESP8266 на фильтре ringAverage - действительно быстрее. Это имеет больше исследовательский интерес, поскольку все показатели в пределах нескольких микросекунд.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

B еще проверил на ESP32-C3(тестирую)
ringAverage(выборка 32) int16_t <3; float <3;
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

Тест для ESP8266
с "упором" на стандартные блоки (по запросу на тестирование)
Блоки ecoins - фильтры.
Блоки ecoins - вывод на консоль и lcd HD44780 i2c(адрес 39): платы 3,4 не обязательны и могут быть убраны.
Test_ADC_filter_ringAverage.zip
Проект_Test_ESP8266_filter_cric_ring_v01.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

Развитие теста для ESP8266
После обсуждения с Rovki пришли к выводу развести функции разрешения работы блока и сброс фильтра(заполнение буфера фильтра) ringAverage() через раздельные входы.
Теперь блок имеет раздельные подключаемые входы EN и reset.
Соответственно доработан блок.
Test_ESP8266_filter_cric_ring_v02.zip
Проект critical_ringAverage_v02.png
Новый блок можно брать из теста.
Возможны будут новые решения, возможно комбинированный блок из трех тестов.
Для ESP8266: блок из FLProg ограничивает частоту опроса ADC периодом 500мс. Подробности в надписи в тесте.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Gordon0007
Сержант
Сообщения: 138
Зарегистрирован: 19 апр 2018, 13:37
Имя: Павел

ЭкоСреда ecoins - Фильтры

Сообщение Gordon0007 »

Доброго дня, появился вопрос. Если я правильно понимаю то все это сделано на основе сбора данных?
Если это так и у меня буфер на 50 значений и опрос происходит раз в 10 секунд, то я получу более менее корректные значения спустя 500 секунд? Или я чего то не понимаю?
Аватара пользователя
Rovki
Полковник
Сообщения: 5710
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 67 раз
Поблагодарили: 212 раз
Контактная информация:

ЭкоСреда ecoins - Фильтры

Сообщение Rovki »

Провел визуальные испытания фильтров для цифрового индикатора от двух авторов [ref]ecoins[/ref], [ref=#ff8000]Dryundel[/ref],
Оба показали себя замечательно . Фильтры проверял при одинаковых частотах тактирования и глубине стека (32). У [ref]ecoins[/ref], это фильтр скользящее среднее ,у [ref=#ff8000]Dryundel[/ref], экспоненциальный . + медианный фильтр последовательно, в начале
Особое требование к фильтрам- "мгновенный" вывод входного напряжения на выход фильтра при старте обеспечен в обоих фильтрах , Замечательно.
В фильтре от [ref]ecoins[/ref], удобно и широко представлены настройки фильтра ,возможность работы с разными типа данных и задание глубины стека в широком диапазоне. Во втором фильтре настроек меньше (задача такая не ставилась) . [ref=#ff8000]Dryundel[/ref], как автор сам выложит свои фильтры, если посчитает нужным.
Совместными усилиями созданы новые фильтры с новыми возможностями(свойствами) для своих областей применения. Всем СПАСИБО!

Отправлено спустя 7 минут 51 секунду:
PS Сами фильтрующие свойства фильтров и их сравнение, а так же код не исследовал, на предмет оптимальности. :smile427:

Отправлено спустя 5 минут 50 секунд:
В принципе, для такого фильтра можно не делать отдельный вход заполнения , а сделать внутри- при старте всегда заполнение буфера значением со входа :smile37: тем самым компенсировать задержку фильтра при включении автоматически
Электронщик до мозга костей и не только
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

Gordon0007 писал(а): 09 сен 2022, 09:43 Доброго дня, появился вопрос. Если я правильно понимаю то все это сделано на основе сбора данных?
Если это так и у меня буфер на 50 значений и опрос происходит раз в 10 секунд, то я получу более менее корректные значения спустя 500 секунд? Или я чего то не понимаю?
Не так.
Медианные фильтры не усредняют, а выбирают средний результат.
Бегущего среднего при первом включении заполняет входным значением, а потом только усредняет. И делает это быстро - в каждом цикле все элементы буфера не складываются. При необходимости по переднему фронту reset (подключаемый вход) можно повторно заполнить буфер входным значением. Можно реализовать любую логику средствами FLprog. Можно и использовать предложенный фильтр критических отклонений.
-----------
Почти всегда полезен медианный фильтр 3-го порядка - быстрый и отбрасывает выбросы.
Затем может быть полезен фильтр медианный N- го порядка - тоже быстрый.
И для окончательного сглаживания (если это надо) - фильтр бегущего среднего с небольшим размером буфера.
Так мне кажется.
Kot
Сержант
Сообщения: 125
Зарегистрирован: 09 окт 2021, 11:54
Имя: Дима
Поблагодарили: 1 раз

ЭкоСреда ecoins - Фильтры

Сообщение Kot »

там какая то библиотека нужна ?
2022-09-22_162943.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

Kot писал(а): 22 сен 2022, 12:31 там какая то библиотека нужна ?
#include "RT_HW_BASE.h"
Ниже скетч из проекта с одним блоком фильтра - компилируется:
Scketch_Median3.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

ЭкоСреда ecoins - Фильтры

Сообщение Dryundel »

[ref]ecoins[/ref], блоки фильтров на ESP8266 не компилируются.
На всякий случай.
Это не претензия. Просто надо бы поправить что то.

Отправлено спустя 3 часа 24 минуты 43 секунды:
[ref]ecoins[/ref], я серьезно.
[spoiler=expected '}' at end of input]
100.flp
100.jpg
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

ЭкоСреда ecoins - Фильтры

Сообщение ecoins »

У меня компилируется:
FLProg 1.8.10, CORE ESP8266 3.1.1, RT_HW_BASE.h от 27.02.23 и выше.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

ЭкоСреда ecoins - Фильтры

Сообщение Dryundel »

Все понятно.
Насторожила фраза...
ecoins писал(а): 12 мар 2023, 02:05 RT_HW_BASE.h от 27.02.23 и выше.
Ничего выше этой в шапке нет. Именно с ней и не компилируется.
Считая себя нормальным человеком, решил, что актуально именно то, что последнее в шапке темы.
Вероятно я ошибаюсь по поводу своей нормальности. :)
А искать и выбирать что то в чреве темы нет не сил не времени. Слишком уж это энергозатратно.
Вот с этой 1000_EIS_Library_1.10e_04.03.23 скомпилировалось.
Ответить

Вернуться в «Команда ecoins»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя