Устранение дребезга контактов энкодера - программным способом.

preview_player
Показать описание
В этом видео покажу алгоритм с помощью которого можно избавится от помех вызванных замыканием или размыканием контактов механического энкодера.

Ссылка на проект:

Тайм коды:
00:01 - Вступление
00:27 - Что такое дребезг контактов.
01:10 - Схема подключения энкодера к микроконтроллеру.
01:49 - Подготовка микроконтроллера к работе с энкодером
04:17 - Простой код для работы с энкодером без учета дребезга контактов.
07:05 - Проверка работы кода без учета дребезга контактов.
07:51 - Обзор алгоритма для помехоустойчивого кода.
09:10 - Реализация алгоритма в коде.
14:23 - Тестирование усовершенствованного алгоритма в симуляции.
15:25 - Заключение.
Рекомендации по теме
Комментарии
Автор

Это просто шедеврально! С каждым разом всё более информативнее, с доскональным разъяснением. Отдельная благодарность за аски конвертёр, мне как раз будет нужен.

RomanMalov-velu
Автор

Во, прикольно, Сматрю и наслаждаюсь, вашей смекалкой! Одназначно в капилку моих знаний!

vsosacordeev
Автор

Спас за идею, но надо было для PCINT, для AVR и на ассме. Чуть сложнее, но с четыремя флагами антидребезга реализовал, 53-63 такта.

DrLithium
Автор

судя по схеме int входов нужно 2, а если в наличии только один.

Николай-ьюв
Автор

Денис, возник вопрос не много по теме, но требует вашего участия в обсуждении! Имеется модуль " mp3 tf 16p" с китайским чипом на борту. Вообщем он должен воспроизводить песни, при передачи на него, uart- команд, в HEX- формате. Но вот какая проблема, когда я отправляю команду, через ваш терминал, не важно в шестнадцатиричной форме, или в десятичной, модуль её воспринимает только тогда, когда после команды в конце стоит пробел, или несколько пробелов, если его убрать и отправлять команды в притык, не чего не происходит. Вопрос заключается в том, как через микроконтроллер добавить, эти пробелы в конце команды, отправляю команды через микроконтроллер, там не чего не происходит модуль молчит! При этом, прибавляя ещё какие либо символы "0x20" 0x16 " 0x00" "\0" нечего не дают, кроме как лишних прибавляющихся символов к команде. Вот как отправить этот пробел, какое значения нужно вставить??

RomanMalov-velu
Автор

Сложная задача для контроллера, а может просто опросить раз 100 и сделать среднее значение.

ciklomat
visit shbcf.ru