Debounce Analog (Аналоговый антидребезг)

Защита от дребезга и помех на аналоговом входе

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Debounce Analog (Аналоговый антидребезг)

#1

Сообщение Dryundel » 28.03.2019{, 10:17}

.
DАналоговый Антидребезг v.3.0
Аналоговый Антидребезг.jpg
Аналоговый Антидребезг.jpg (2.92 КБ) 760 просмотров
Аналоговый_Антидребезг_V.3.0_(Code_-_Professional)
.

Аналоговый Антидребезг это по сути фильтр входного сигнала.
Исправляет дребезг потенциометров и фильтрует помехи аналогового сигнала.
Может работать с Integer, Long integer и Float

Актуально при использовании клавиатур на аналоговом входе, дребезжащем потенциометре, упрощенной фильтрации помех сигнала.
Имеет легкий алгоритм и прост в настройках.

В новой версии сильно сокращен и оптимизирован алгоритм.
Добавлена возможность работы с данными Float


------------------------------------

Загрузите простые тестовые проекты с потенциометром и сравните результат.

Тест 1Тест 2


Debounce Analog v.2.0
1.jpg
1.jpg (2.49 КБ) 2423 просмотра
Debounce_Analog_v.2.0_(CODE).ubi
(17.05 КБ) 279 скачиваний
dB(A) - служит для защиты от ложных импульсов и помех при переключении контактов. Предназначение схоже с встроенным блоком Bounce, только для аналогового входа, когда например к одному аналоговуму входу подключено несколько кнопок.
Принцип действия основан на задержке передачи значения со входа на выход, пропуская время "дребезга" контактов, а так же фильтрации помех возникающих при работе оборудования. Блок не просто дает задержку, а ждет окончания дребезга и если в течении таймаута (параметр TimeLoyal) не произошло изменений подает входное значение на выход.


Принцип работы:
Корридор лояльности АЦП (параметр Loyal) удерживает неизменным выходное значение пока входные экстремумы не превышают пороговых значений +-Loyal в течении таймаута TimeLoyal.
Испытания показали, что Debounce Analog v.2.0 стабильно держит уровни АЦП отличающиеся на 30 шагов что соответствует перепаду 0,15 V при напряжении на делителе 5 V удерживая от ложных срабатываний в условиях жестких помех. Что теоретически дает возможность подключать на один аналоговый вход до 30 кнопок.

Параметры пользователя:
Loyal - Корридор лояльности АЦП
TimeLoyal - Таймаут срабатывания (Лояльная задержка) ( ms )

Увеличение Loyal (Корридора лояльности АЦП) повышает помехоустойчивость но снижает количество шагов делителя (количество кнопок)
Увеличение TimeLoyal (Таймаута срабатывания) так же повышает помехоустойчивость но приводит к задержке срабатывания.

Испытания:
Испытания проводились в условиях достаточно жестких помех. На провода кнопок, вплотную, была положена ручная электрическая дрель, которая постоянно включалась и выключалась внося ощутимые помехи в сигнал на входе АЦП.
На графике видно как происходит четкое переключение с одного уровня на другой и стабильное значение на выходе.
Так же видно игнорирование вносимых помех.
3.jpg
Отправлено спустя 1 час 32 минуты 14 секунд:
При работе с потенциометром сигнал на выходе имеет дискретность но за то прекрасно фильтруются внешние помехи. Уменьшить дискретность можно уменьшив параметры Loyal иTimeLoyal. Но следует помнить, что при уменьшении этих параметров снижается и помехо-защищенность.

Пример работы потенциометра 10k.

Loyal = 5 TimeLoyal = 40
СпойлерПоказать
4.jpg
Loyal = 3 TimeLoyal = 25
СпойлерПоказать
5.jpg
Последний раз редактировалось Dryundel 16.04.2023{, 13:21}, всего редактировалось 3 раза.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Debounce Analog

#2

Сообщение Sancho » 28.03.2019{, 12:46}

Dryundel, Очень интересны последние графики, и не важна дискретность(она, на мой взгляд не соответствует подписям) - при изменении вверх, потом вниз - значения разные :) было 520, стало 519, потом 521.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Debounce Analog

#3

Сообщение Dryundel » 28.03.2019{, 12:56}

Sancho писал(а):
28.03.2019{, 12:46}
Dryundel, Очень интересны последние графики, и не важна дискретность(она, на мой взгляд не соответствует подписям) - при изменении вверх, потом вниз - значения разные :) было 520, стало 519, потом 521.
Не совсем понял в чем проблема. Крутилась ручка потенциометра с произвольного значения и конечное значение тоже произвольное.
Что и каким подписям не соответствует? Поясните пожалуйста.

Отправлено спустя 8 минут :
Аааа... Кажись понял. Вы имеете ввиду что дискретность не постоянна. Так это же потенциометр, а не энкодер. Задача не ставилась сделать четкую дискретность в данном случае. Имелось ввиду что изменения на выходе меняются дискетно, а не плавно. А попасть потенциометром в одно и то же значение на практике невозможно. Помехи и шумы не дадут этого сделать. Блок дает возможность зафиксировать значение в определенных пределах, что бы оно не скакало вместе с шумами и помехами.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Debounce Analog

#4

Сообщение Sancho » 28.03.2019{, 14:04}

Dryundel писал(а):
28.03.2019{, 13:04}
Задача не ставилась сделать четкую дискретность в данном случае.
Ответ ясен.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Arslan
Рядовой
Сообщения: 3
Зарегистрирован: 07.04.2020{, 10:45}
Репутация: 0
Имя: Арслан

Debounce Analog (Аналоговый антидребезг)

#5

Сообщение Arslan » 07.04.2020{, 14:26}

db(a) - служит для защиты от ложных импульсов и помех при переключении контактов.

Здравствуйте. ПОдскажите может есть блок от шума для аналогового входа только с маленьким значением шумоподавления? у меня термистр на 4 градуса скачет при каждом шорохе?) Заранее спасибо)

WildCat
Лейтенант
Сообщения: 425
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

Debounce Analog (Аналоговый антидребезг)

#6

Сообщение WildCat » 19.11.2022{, 06:13}

Что-то не заработал у меня этот блок (
Esp32.
На выходе 0 при любых настройках полосы лояльности и тайм-аута.
Может хитрость есть какая?

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Debounce Analog (Аналоговый антидребезг)

#7

Сообщение Dryundel » 16.04.2023{, 13:24}

Версия блока обновлена

В новой версии сильно сокращен и оптимизирован алгоритм.
Добавлена возможность работы с данными Float
Аналоговый Антидребезг.jpg
Аналоговый Антидребезг.jpg (2.92 КБ) 753 просмотра
Аналоговый_Антидребезг_V.3.0_(Code_-_Professional)
.

Ответить

Вернуться в «Дисплеи, индикаторы и клавиатуры»