-
- Типа "корреляционного". По событию (прерывание по изменению
состояния) идет опрос с подсчетом считанных состояний. Если,
скажем, из 15 опросов 5 - 0 и 10 - 1, то считаем, что устойчивое
состояние - 1. - reZident(30.03.2022 19:04)
- Я электрик. saifullin2(141 знак., 31.03.2022 07:45)
- Пробовала - результат плохой, т.к. этот способ не может отличить
настоящий "строб" от дребезга. Отсюда и неясность с тем, сколько
реальных шагов сделал энкодер. В общем, не понравился мне этот
метод - хочу другого (с периодическим опрашиванием). - Kceния(30.03.2022 19:15)
- Есть еще неплохой алгоритм по прерываниям с портов: 113(253 знак., 18.04.2022 13:48)
- Вы видимо просто не умеете "готовить" :-) - reZident(30.03.2022 23:28)
- Можно на триггере RS или Шмидта. Один корпус придется добавить.
Заодно и защита от статики на корпус энкодера. WhiteFace(2 знак., 30.03.2022 21:11, , ссылка, ссылка)
- Мне интересна задача не в плане избавления от дребезга с помощью
насаждения дополнительных электрических элементов, а чисто в
алгоритмическом плане, как задача обнаружения шагов на фоне
дребезга. Тем более что эта задача наверняка имеет алгоритмическое
решение, поскольку я сама без труда могу это делать чисто
зрительно, лишь глядя на график логического анализатора. Более
того, здесь имеет место ситуация, формально аналогичная выделению
полезного сигнала из шума, т.к. в Kceния(182 знак., 30.03.2022 23:22)
- Нужно перейти к цифрам. Если период опроса в два раза выше ширины
импульса дребезга - все просто. Cкpипaч(398 знак., 31.03.2022 09:05)
- Вот именно. Можно фильтровать шум в цифре, но для этого потребуется непозволительно много ресурсов для такой второстепенной задачи. При быстром вращении ручного энкодера импульсы идут с частотой более килогерца, а дребезг в десятки раз выше. RC цепочки + триггеры Шмитта (которые во многих процах встроены на каждом входе), и будет надежно работать самый тупой алгоритм, не отжирающий практически ничего из ресурсов - Yurasvs(31.03.2022 13:29)
- Не. Всё не так. Фильтровать дребезг -- словно уговаривать хулигана.
Нужна задержка на время дребезга. Типа "упс, чё-то дёрнулось, а
ну-ка ну-ка, посмотрим. Ага, дёрнулось". - Бapбoc(30.03.2022 23:31)
- Да, где так. Нужно в течении какого-то времени ждать повторяющихся
значений (по минимуму - 2 раза подряд, а лучше 3 раза подряд).
Такое событие принимать за истинное значение уровня, а дальше ждать
такого же истинного уровня противоположной "полярности". Т.е. без
счета времени (или без строгой периодичности опросов) здесь не
обойтись, т.к. с помощью прерываний по фронтам невозможно
подсчитывать число повторяющихся значений. - Kceния(30.03.2022 23:44)
- Без таймера программно дребезг не давится никак, можно аппаратно, как Yurasvs gпредложил, но тогда нужен самодельный триггер Шмидта с большим гистерезисом. Или опрашивать таймером в несколько раз быстрее, чем минимальное время перехода и мажоритарка. - Andreas(31.03.2022 09:11)
- Это вам, сударыня, не приходилось клавку опрашивать. - Бapбoc(30.03.2022 23:53)
- Бог миловал :) - Kceния(31.03.2022 00:11)
- А если там биения? Сколько смотреть-то? По мне - если энкодер
дребезжит (или то, что его приводит во вращение), то он (или вся
конструкция в целом) выбран не соответственно задаче. Забарывание
дребезга должно срабатывать раз в тысячу импульсов. Или в миллион
импульсов. Но никак на каждом шаге. - POV(30.03.2022 23:35)
- Так энкодеры бывают разные
голубые красные. Оптические не дребезжат. Видел диск энкодера с кодом Грэя на десять бит? Красивая штучка. Изячная. - Бapбoc(30.03.2022 23:51)- А вот у моего энкодера, если питания на (+) не подавать, а A и B
подпирать только подтяжкой от контроллера (PULL_UP), то шум очень
сильный. Если подать на (+) 3.3V, то шум заметно уменьшается, а
если подать на (+) 5V, то становится совсем редким. Впечатление
такое, что шум возникает из-за плохого контакта, тогда как более
высокое напряжение этот промежуток пробивает. Kceния(1 знак., 31.03.2022 00:22, картинка)
- Если есть проблемы с контактом, имеем смысл поднимать ток вплоть до
10мА. Не имею большой статистики, но полагаю, что не обязательно
большое напряжение, важно, чтобы обеспечивался ток. Nikolay_Po(101 знак., 31.03.2022 12:43)
- Угу, когда паяют перед отмывкой такое бывает. - Andreas(31.03.2022 12:53)
- вы когда нибудь интересовались сопротивлением PULL_UP-ов? ну а это
можно в .... отлить - Впечатление такое, что шум возникает из-за плохого контакта,
тогда как более высокое напряжение этот промежуток пробивает. - m16(31.03.2022 00:31)
- Да, у меня это 30 К. А в энкодере стоят 10 К. - Kceния(31.03.2022 01:15)
- Если есть проблемы с контактом, имеем смысл поднимать ток вплоть до
10мА. Не имею большой статистики, но полагаю, что не обязательно
большое напряжение, важно, чтобы обеспечивался ток. Nikolay_Po(101 знак., 31.03.2022 12:43)
- А вот у моего энкодера, если питания на (+) не подавать, а A и B
подпирать только подтяжкой от контроллера (PULL_UP), то шум очень
сильный. Если подать на (+) 3.3V, то шум заметно уменьшается, а
если подать на (+) 5V, то становится совсем редким. Впечатление
такое, что шум возникает из-за плохого контакта, тогда как более
высокое напряжение этот промежуток пробивает. Kceния(1 знак., 31.03.2022 00:22, картинка)
- Так энкодеры бывают разные
- Да, где так. Нужно в течении какого-то времени ждать повторяющихся
значений (по минимуму - 2 раза подряд, а лучше 3 раза подряд).
Такое событие принимать за истинное значение уровня, а дальше ждать
такого же истинного уровня противоположной "полярности". Т.е. без
счета времени (или без строгой периодичности опросов) здесь не
обойтись, т.к. с помощью прерываний по фронтам невозможно
подсчитывать число повторяющихся значений. - Kceния(30.03.2022 23:44)
- Глаза аналоговые. А разрешения (скорости обработки фронтов) МК
хватит? Вон УАРТ считает 16 тактов чтобы принять решение об уровне
сигнала. Значит надо безо всяких прерываний по фронту делать
выборку (и обработку) с порта с частотой в 16 раз выше максимальной
частоты импульсов... впрочем, это КО говорит, не я. - POV(30.03.2022 23:27)
- А почему бы его и не использовать? - ILYAUL(30.03.2022 23:50)
- Нужно перейти к цифрам. Если период опроса в два раза выше ширины
импульса дребезга - все просто. Cкpипaч(398 знак., 31.03.2022 09:05)
- Триггер лейтенанта Шмидта. Крымский вариант триггера Шмитта. :) - Argon(30.03.2022 22:40)
- Мне интересна задача не в плане избавления от дребезга с помощью
насаждения дополнительных электрических элементов, а чисто в
алгоритмическом плане, как задача обнаружения шагов на фоне
дребезга. Тем более что эта задача наверняка имеет алгоритмическое
решение, поскольку я сама без труда могу это делать чисто
зрительно, лишь глядя на график логического анализатора. Более
того, здесь имеет место ситуация, формально аналогичная выделению
полезного сигнала из шума, т.к. в Kceния(182 знак., 30.03.2022 23:22)
- Типа "корреляционного". По событию (прерывание по изменению
состояния) идет опрос с подсчетом считанных состояний. Если,
скажем, из 15 опросов 5 - 0 и 10 - 1, то считаем, что устойчивое
состояние - 1. - reZident(30.03.2022 19:04)