1 заметка с тегом

дребезжание

Устранение дребезжания энкодера

19 июня 2013, 5:03

Перепробовал кучу готовых методов. Страница playground подавляет месивом информации. Какие-то методы работают лучше, какие-то хуже, но ни одного идеального — пришлось придумывать свой.

Мои требования были лаконичными:

  • Никаких ложных срабатываний, полная предсказуемость поведения
  • Обновлять состояние по внешним прерываниям, не использовать для этого таймеры
  • Не использовать никакие временные задержки и усреднения (за исключением схемотехнических)

Внимательно изучив спецификацию по энкодеру, принцип его работы — я придумал способ, которого пока не встетил: считывание паттерна. Вкратце, для того чтобы защитать вращение энкодера в ту или иную сторону — необходимо получить строго определенную последовательность сигналов. Причем алгоритм, получая одну из комбинаций, сразу определяет направление и предполагает появление последующих элементов паттерна. И это работает железобетонно: пользователь может натренировав руку попадать в нужное ему значение отточенным движением руки. Profit!