ЭкоСреда ecoins - Фильтры
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
======Фильтры=====
Доработаны и созданы блоки фильтров:
1.Ускоренный фильтр медианный 3-го порядка.
2.Медианный фильтр N-го порядка.
3.Фильтр бегущего среднего.
Работа фильтров обсуждалась на форуме.
Перечисленные фильтры хорошо описаны https://alexgyver.ru/lessons/filters/
4.Фильтр критических отклонений - на выходе фильтра вырабатывается событие при скачкообразном изменении входного значения.
Фильтры поддерживают форматы byte,word,long,float.
По входу EN (0->1) выполняется сброс фильтра с заполнением буфера последним значением.
Фильтры могут соединяться последовательно.
Каждый фильтр имеет выход времени работы фильтра(подключаемый). который позволяет получить объективное измерение быстродействия фильтра при разных типов переменных, размера выборки и пр.
В фильтре имеется опция, позволяющая выводить на консоль (монитор порта) протокол работы фильтра с выводом промежуточных значений и буфера.
Указанная опция помогает при отладке и также помогает лучше понять работу фильтра.
Ниже тесты фильтров с выводом результатов на lcd. Основным выводом проведенных измерений является то, что фильтры можно безболезненно использовать в проектах даже с большими выборками - они работают очень быстро.
------------
По мере необходимости будут добавляться новые фильтры.
Доработаны и созданы блоки фильтров:
1.Ускоренный фильтр медианный 3-го порядка.
2.Медианный фильтр N-го порядка.
3.Фильтр бегущего среднего.
Работа фильтров обсуждалась на форуме.
Перечисленные фильтры хорошо описаны https://alexgyver.ru/lessons/filters/
4.Фильтр критических отклонений - на выходе фильтра вырабатывается событие при скачкообразном изменении входного значения.
Фильтры поддерживают форматы byte,word,long,float.
По входу EN (0->1) выполняется сброс фильтра с заполнением буфера последним значением.
Фильтры могут соединяться последовательно.
Каждый фильтр имеет выход времени работы фильтра(подключаемый). который позволяет получить объективное измерение быстродействия фильтра при разных типов переменных, размера выборки и пр.
В фильтре имеется опция, позволяющая выводить на консоль (монитор порта) протокол работы фильтра с выводом промежуточных значений и буфера.
Указанная опция помогает при отладке и также помогает лучше понять работу фильтра.
Ниже тесты фильтров с выводом результатов на lcd. Основным выводом проведенных измерений является то, что фильтры можно безболезненно использовать в проектах даже с большими выборками - они работают очень быстро.
------------
По мере необходимости будут добавляться новые фильтры.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
Тест совмещенного фильтра критических отклонений и бегущего среднего:
Результаты выводятся на lcd и плоттер Arduino IDE.
[spoiler]
[/spoiler]Результаты выводятся на lcd и плоттер Arduino IDE.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
ЭкоСреда ecoins - Фильтры
А на esp8266 ,будет работать? что то в таблице не увидел
Электронщик до мозга костей и не только
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
Да, будет. Просто на испытаниях разложил пять стендов, а ESP8266 не использовал.
Отчасти внутренне продвигая мысль о полном отказе от ESP8266. Сейчас третьей волной возвращаюсь к тестированию ESP32-C3 - получил много разных плат м модулей на этой основе.
Можете проверить самостоятельно (тесты выложены) - в силу особенности архитектуры ESP8266 должен показать лучшие результаты по быстродействию, чем ESP32S.
Повторюсь, что результаты исследований меня удивили, если не поразили - фильтры можно и нужно использовать широко, там где это надо, в том числе и с большми выборками - 25, 50, 100,200. Выше заложены ограничения в блоках, но можно и изменить.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
ЭкоСреда ecoins - Фильтры
О! Супер! Даже говорить ничего не буду. Критика не уместна.
Только спрошу.
[ref=#ff8000]Rovki[/ref], как результат? Хорошо фильтрует? Разобрался что к чему? Удалось интегрировать в Ваш проект?
Отдельная благодарность [ref]ecoins[/ref] за создание отдельной профильной темы для группы блоков!
Только спрошу.
[ref=#ff8000]Rovki[/ref], как результат? Хорошо фильтрует? Разобрался что к чему? Удалось интегрировать в Ваш проект?
Отдельная благодарность [ref]ecoins[/ref] за создание отдельной профильной темы для группы блоков!
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
ЭкоСреда ecoins - Фильтры
Это вы ранние птички , а мне надо принять кофффе, ваннну..., найти место на столе, снова собрать стенд
. Как сделаю ,доложу

Электронщик до мозга костей и не только
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
ЭкоСреда ecoins - Фильтры
Ок. Ждем с нетерпением.
PS
Речь идет не о тесте тестового примера, а о понимании что к чему и интеграции в Ваш проект.
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
Спасибо Rovki, выявлена ошибка при работе c ESP8266(правили систему ввода-вывода для новой библиотеки 1-Wire и вновь всплыли особенности архитектуры и используемого компилятора. Похоже поддержка ESP8266 от производителя чипов отстает, возможно просто утрачен интерес к разработке, которую они объявили устаревшей).
Новую версию библиотеки нужно скачать заново - там исправлена (скорее применена "затычка", но работает и в т.ч. 1-Wire) для ESP8266.
Заодно не помешает скачать новые блоки - там исправления по сенсору HC-SR04 в части работы со встроенным фильтром медианным.
-----
Проверил ESP8266 на фильтре ringAverage - действительно быстрее. Это имеет больше исследовательский интерес, поскольку все показатели в пределах нескольких микросекунд.
Новую версию библиотеки нужно скачать заново - там исправлена (скорее применена "затычка", но работает и в т.ч. 1-Wire) для ESP8266.
Заодно не помешает скачать новые блоки - там исправления по сенсору HC-SR04 в части работы со встроенным фильтром медианным.
-----
Проверил ESP8266 на фильтре ringAverage - действительно быстрее. Это имеет больше исследовательский интерес, поскольку все показатели в пределах нескольких микросекунд.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
B еще проверил на ESP32-C3(тестирую)
ringAverage(выборка 32) int16_t <3; float <3;
ringAverage(выборка 32) int16_t <3; float <3;
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
Тест для ESP8266
с "упором" на стандартные блоки (по запросу на тестирование)
Блоки ecoins - фильтры.
Блоки ecoins - вывод на консоль и lcd HD44780 i2c(адрес 39): платы 3,4 не обязательны и могут быть убраны.
с "упором" на стандартные блоки (по запросу на тестирование)
Блоки ecoins - фильтры.
Блоки ecoins - вывод на консоль и lcd HD44780 i2c(адрес 39): платы 3,4 не обязательны и могут быть убраны.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
Развитие теста для ESP8266
После обсуждения с Rovki пришли к выводу развести функции разрешения работы блока и сброс фильтра(заполнение буфера фильтра) ringAverage() через раздельные входы.
Теперь блок имеет раздельные подключаемые входы EN и reset.
Соответственно доработан блок. Новый блок можно брать из теста.
Возможны будут новые решения, возможно комбинированный блок из трех тестов.
Для ESP8266: блок из FLProg ограничивает частоту опроса ADC периодом 500мс. Подробности в надписи в тесте.
После обсуждения с Rovki пришли к выводу развести функции разрешения работы блока и сброс фильтра(заполнение буфера фильтра) ringAverage() через раздельные входы.
Теперь блок имеет раздельные подключаемые входы EN и reset.
Соответственно доработан блок. Новый блок можно брать из теста.
Возможны будут новые решения, возможно комбинированный блок из трех тестов.
Для ESP8266: блок из FLProg ограничивает частоту опроса ADC периодом 500мс. Подробности в надписи в тесте.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сержант
- Сообщения: 138
- Зарегистрирован: 19 апр 2018, 13:37
- Имя: Павел
ЭкоСреда ecoins - Фильтры
Доброго дня, появился вопрос. Если я правильно понимаю то все это сделано на основе сбора данных?
Если это так и у меня буфер на 50 значений и опрос происходит раз в 10 секунд, то я получу более менее корректные значения спустя 500 секунд? Или я чего то не понимаю?
Если это так и у меня буфер на 50 значений и опрос происходит раз в 10 секунд, то я получу более менее корректные значения спустя 500 секунд? Или я чего то не понимаю?
- Rovki
- Полковник
- Сообщения: 5710
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 67 раз
- Поблагодарили: 212 раз
- Контактная информация:
ЭкоСреда ecoins - Фильтры
Провел визуальные испытания фильтров для цифрового индикатора от двух авторов [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 Сами фильтрующие свойства фильтров и их сравнение, а так же код не исследовал, на предмет оптимальности.
Отправлено спустя 5 минут 50 секунд:
В принципе, для такого фильтра можно не делать отдельный вход заполнения , а сделать внутри- при старте всегда заполнение буфера значением со входа
тем самым компенсировать задержку фильтра при включении автоматически
Оба показали себя замечательно . Фильтры проверял при одинаковых частотах тактирования и глубине стека (32). У [ref]ecoins[/ref], это фильтр скользящее среднее ,у [ref=#ff8000]Dryundel[/ref], экспоненциальный . + медианный фильтр последовательно, в начале
Особое требование к фильтрам- "мгновенный" вывод входного напряжения на выход фильтра при старте обеспечен в обоих фильтрах , Замечательно.
В фильтре от [ref]ecoins[/ref], удобно и широко представлены настройки фильтра ,возможность работы с разными типа данных и задание глубины стека в широком диапазоне. Во втором фильтре настроек меньше (задача такая не ставилась) . [ref=#ff8000]Dryundel[/ref], как автор сам выложит свои фильтры, если посчитает нужным.
Совместными усилиями созданы новые фильтры с новыми возможностями(свойствами) для своих областей применения. Всем СПАСИБО!
Отправлено спустя 7 минут 51 секунду:
PS Сами фильтрующие свойства фильтров и их сравнение, а так же код не исследовал, на предмет оптимальности.

Отправлено спустя 5 минут 50 секунд:
В принципе, для такого фильтра можно не делать отдельный вход заполнения , а сделать внутри- при старте всегда заполнение буфера значением со входа

Электронщик до мозга костей и не только
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
Не так.Gordon0007 писал(а): 09 сен 2022, 09:43 Доброго дня, появился вопрос. Если я правильно понимаю то все это сделано на основе сбора данных?
Если это так и у меня буфер на 50 значений и опрос происходит раз в 10 секунд, то я получу более менее корректные значения спустя 500 секунд? Или я чего то не понимаю?
Медианные фильтры не усредняют, а выбирают средний результат.
Бегущего среднего при первом включении заполняет входным значением, а потом только усредняет. И делает это быстро - в каждом цикле все элементы буфера не складываются. При необходимости по переднему фронту reset (подключаемый вход) можно повторно заполнить буфер входным значением. Можно реализовать любую логику средствами FLprog. Можно и использовать предложенный фильтр критических отклонений.
-----------
Почти всегда полезен медианный фильтр 3-го порядка - быстрый и отбрасывает выбросы.
Затем может быть полезен фильтр медианный N- го порядка - тоже быстрый.
И для окончательного сглаживания (если это надо) - фильтр бегущего среднего с небольшим размером буфера.
Так мне кажется.
ЭкоСреда ecoins - Фильтры
там какая то библиотека нужна ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
#include "RT_HW_BASE.h"
Ниже скетч из проекта с одним блоком фильтра - компилируется:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
ЭкоСреда ecoins - Фильтры
[ref]ecoins[/ref], блоки фильтров на ESP8266 не компилируются.
На всякий случай.
Это не претензия. Просто надо бы поправить что то.
Отправлено спустя 3 часа 24 минуты 43 секунды:
[ref]ecoins[/ref], я серьезно.
[spoiler=expected '}' at end of input] [/spoiler]
На всякий случай.
Это не претензия. Просто надо бы поправить что то.
Отправлено спустя 3 часа 24 минуты 43 секунды:
[ref]ecoins[/ref], я серьезно.
[spoiler=expected '}' at end of input] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
ЭкоСреда ecoins - Фильтры
У меня компилируется:
FLProg 1.8.10, CORE ESP8266 3.1.1, RT_HW_BASE.h от 27.02.23 и выше.
FLProg 1.8.10, CORE ESP8266 3.1.1, RT_HW_BASE.h от 27.02.23 и выше.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
ЭкоСреда ecoins - Фильтры
Все понятно.
Насторожила фраза...
Считая себя нормальным человеком, решил, что актуально именно то, что последнее в шапке темы.
Вероятно я ошибаюсь по поводу своей нормальности.
А искать и выбирать что то в чреве темы нет не сил не времени. Слишком уж это энергозатратно.
Вот с этой 1000_EIS_Library_1.10e_04.03.23 скомпилировалось.
Насторожила фраза...
Ничего выше этой в шапке нет. Именно с ней и не компилируется.
Считая себя нормальным человеком, решил, что актуально именно то, что последнее в шапке темы.
Вероятно я ошибаюсь по поводу своей нормальности.

А искать и выбирать что то в чреве темы нет не сил не времени. Слишком уж это энергозатратно.
Вот с этой 1000_EIS_Library_1.10e_04.03.23 скомпилировалось.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя