Расчет значений компонентов схемы RC-фильтра для устранения дребезга кнопок и времени заряда-разряда

一、Принцип работы RC-фильтрации дребезга контактов и правила выбора параметров

Суть аппаратного устранения дребезга кнопок заключается в использовании инерционности заряда и разряда RC-цепи, сглаживая скачки напряжения при замыкании и размыкании кнопки, фильтруя механический дребезг. Обычно применяется схема с подтягивающим резистором R и параллельным конденсатором C, подключёнными к контактам кнопки. Ключевой параметр — это постоянная времени RC:

\boldsymbol{\tau = R \times C}
  • \tau: постоянная времени RC, измеряется в секундах (с), обозначает время, за которое напряжение на конденсаторе достигает 63,2% от установившегося значения;
  • С инженерной точки зрения, цепь считается стабильной (достигшей более чем 99% установившегося значения и полностью подавившей дребезг), когда проходит время \boldsymbol{5\tau};
  • Механический дребезг обычных кнопок длится 5–20 мс. Чтобы гарантированно устранить дребезг, необходимо выполнение условия \boldsymbol{5\tau \ge 20 мс}, то есть \boldsymbol{\tau \ge 4 мс}.

二、Рекомендуемое значение ёмкости конденсатора при подтягивающем резисторе 10 кОм

Известно, что подтягивающий резистор R = 10\,\mathrm{кОм} = 10 \times 10^3\,\Omega, а требуемое значение постоянной времени \tau \ge 4\,\mathrm{мс} = 4 \times 10^{-3}\,\mathrm{с}. Рассчитаем минимальную ёмкость:

C_{\text{min}} = \frac{\tau}{R} = \frac{4 \times 10^{-3}}{10 \times 10^3} = \boldsymbol{400\,\mathrm{нФ}}

С учётом стандартных номиналов электронных компонентов, рекомендуемые значения ёмкости при подтягивающем резисторе 10 кОм приведены в таблице:

Номинал конденсатора Постоянная времени RC \tau Время полной фильтрации 5\tau Применимость
220 нФ 2,2 мс 11 мс Слабая фильтрация, подходит только для высококачественных кнопок с минимальным дребезгом
470 нФ 4,7 мс 23,5 мс Подходит для подавления дребезга большинства кнопок, наиболее распространённое решение на практике
1 мкФ 10 мс 50 мс Надёжная фильтрация, но увеличивает задержку реакции кнопки; подходит для случаев, где скорость отклика не критична

Вывод: при использовании подтягивающего резистора 10 кОм предпочтительно выбирать конденсатор ёмкостью 470 нФ, так как он обеспечивает оптимальный баланс между эффективностью фильтрации и быстродействием кнопки.

三、Расчёт времени заряда и разряда для комбинации 10 кОм + 470 нФ

Выполним точный расчёт по формуле:

  1. Постоянная времени RC
\tau = R \times C = 10 \times 10^3\,\Omega \times 470 \times 10^{-9}\,\mathrm{F} = \boldsymbol{0{,}0047\,\mathrm{с} = 4{,}7\,\mathrm{мс}}
  1. Время полного заряда/разряда, обеспечивающее надёжное подавление дребезга

Для достижения более чем 99% установившегося значения требуется время 5\tau:

5\tau = 5 \times 4{,}7\,\mathrm{мс} = \boldsymbol{23{,}5\,\mathrm{мс}}

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

四、Дополнительные рекомендации по практическому применению

  1. Предпочтительно использовать керамические или плёночные конденсаторы — они обладают хорошей стабильностью и низкой стоимостью. Не рекомендуется применять электролитические конденсаторы (они полярные и плохо работают на высоких частотах);
  2. Если микроконтроллер имеет встроенный подтягивающий резистор на выводе GPIO, внешний резистор 10 кОм можно исключить, подключив только конденсатор параллельно кнопке;
  3. Аппаратный RC-фильтр представляет собой пассивный фильтр, который не может полностью устранить экстремальный дребезг. В системах, где требуется высокая надёжность, рекомендуется дополнительно применять программную фильтрацию (например, после чтения состояния вывода делать задержку 10–20 мс и повторно проверять уровень сигнала), реализуя таким образом двойную фильтрацию.

Также можно использовать программное обеспечение для устранения дребезга, кнопочный конечный автомат может реализовать функции устранения дребезга, короткого нажатия, длительного нажатия, двойного щелчка и другие.