Подавление дребезга кнопки

Автор: | 08.03.2018

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

Иллюстрация процесса :

Происходит это из-за дрожания контактов, причин этого явления несколько (инерция, не идеальность поверхности контактов).

Решение проблемы:

  1. Программное (путем задержки перед считыванием состояния)
  2. Аппаратное (электрическая цепь)

*Примечательно у контроллеров STM для обработки инкрементального энкодера (механического) есть встроенное решение.

Я в основном использую решение с применением электрической цепи (RC), весьма эффективно но не практично (лишние компоненты в схеме).

Схема:

В исходном состоянии (контакты разомкнуты) конденсатор заряжен, при замыкании контактов конденсатор начинает разряжаться через резистор R33. Время разряда конденсатора T = 5R33C за это время напряжение на конденсаторе изменяется на 99,2%. Время заряда получается больше потому как к R33 добавляется R34. Принцип работы такой: емкость конденсатора подавляет всплески напряжения, чем больше емкость и скорость изменения напряжения тем сильнее подавляется всплеск.

 

 

На этом все дорогие друзья, дерзайте и используйте во благо.

ПОДДЕРЖАТЬ ПРОЕКТ

Добавить комментарий