Linux как устранить дребезг клавиатуры

Обновлено: 03.07.2024

Что такое дребезг контактов? Когда вы нажимаете на кнопку или на микропереключатель или изменяете положение тумблера, два металлических контакта замыкаются. Для пользователя может показаться, что контакт наступил мгновенно. Это не совсем правильно. Внутри коммутатора есть движущиеся части. Когда вы нажимаете на коммутатор, он вначале создает контакт между металлическими частями, но только в кратком разрезе микросекунды. Затем он делает контакт немного дольше, а затем еще немного дольше. В конце коммутатор полностью замыкается. Коммутатор скачет (дребезжит) между состояниями наличия и отсутствия контакта. «Когда коммутатор замыкается, два контакта фактически разъединяются и снова соединяются обычно от 10 до 100 раз за время, примерно равное 1 мс» («Искусство схемотехники», Хоровиц и Хилл, второе издание). Обычно оборудование работает быстрее, чем дребезг, что приводит к тому, что оборудование думает, что вы нажали на кнопку несколько раз. Оборудование часто является интегральной микросхемой. Следующие скриншоты иллюстрируют типовой дребезг контактов без какой-либо обработки:

Осциллограмма дребезга контактов

Осциллограмма дребезга контактов

Каждый коммутатор обладает своими собственными характеристиками относительно дребезга. Если вы сравните два одинаковых коммутатора, есть большая вероятность того, что они будут «дребезжать» по-разному.

Я покажу вам дребезг четырех разных коммутаторов. Я меня есть две микрокнопки, 1 кнопка и 1 тумблер:

Исследуемые коммутаторы

Исследуемые коммутаторы

Настройка оборудования

Все коммутаторы будут подключены одинаково (это важно, если мы собираемся сравнивать результаты). Сначала мы увидим, как коммутаторы ведут себя без обработки. Основой нашей схемы будет HCF4017BE. Это десятичный счетчик/делитель, производимый STMicroelectronics. Они больше не производят эту микросхему, так как этот тип устарел. Тем не менее, есть много других производителей, которые всё еще выпускают эту маленькую микросхему, и они часто совместимы по контактам.

Микросхема получает тактовый импульс на вывод 14, после чего загорается светодиод, подключенный к Q1. Когда принимается следующий тактовый импульс, микросхема отключает Q1 и зажигает Q2, и так далее. Когда счетчик достигает Q8 (вывод 9), он подает импульс на вывод 15, который является выводом сброса. Это означает запуск отсчета, начиная с Q0.

Наша основная схема:

Схема тестового макета (описание выше)

Схема тестового макета (описание выше)

Сначала мы попробуем не обрабатывать дребезг совсем. Схемы подачи тактового сигнала показаны ниже:

Тактовый вывод удерживается на уровне лог. 0, импульс лог. 1

Тактовый вывод удерживается на уровне лог. 0,
импульс – лог. 1

Тактовый вывод удерживается на уровне лог. 1, импульс – лог. 0

Тактовый вывод удерживается на уровне лог. 1,
импульс – лог. 0

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

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

Для коммутатора A:

Дребезг контактов коммутатора A

Дребезг контактов коммутатора A

Для коммутатора B:

Дребезг контактов коммутатора B

Дребезг контактов коммутатора B

Для коммутатора C:

Дребезг контактов коммутатора C

Дребезг контактов коммутатора C

Для коммутатора D:

Дребезг контактов коммутатора D

Дребезг контактов коммутатора D

И один скриншот я снял для коммутатора C при использовании правой схемы подачи импульсов: тактовый вывод удерживается на уровне логической единицы, импульс соответствует уровню логического нуля.

Дребезг контактов коммутатора C (импульс соответствует логическому нулю)

Дребезг контактов коммутатора C (импульс соответствует логическому нулю)

Как вы можете видеть, микросхеме кажется, что было несколько нажатий на коммутатор. Хотя это и не так, поскольку на коммутатор было выполнено только одно нажатие.

Добавим керамический конденсатор:

Тактовый вывод удерживается на уровне лог. 0, импульс лог. 1

Тактовый вывод удерживается на уровне лог. 0,
импульс – лог. 1

Тактовый вывод удерживается на уровне лог. 1, импульс – лог. 0

Тактовый вывод удерживается на уровне лог. 1,
импульс – лог. 0

При добавлении конденсатора мы создаем RC-цепь. RC-цепи здесь не обсуждаются.

Новые скриншоты осциллографа сильно отличаются от полученных ранее. Это показывает, что RC-цепь отфильтровывает дребезг.

Данное видео показывает, как работает схема с керамическим конденсатором 0,1 мкФ:

Для коммутатора A:

Сигнал с коммутатора A после добавления конденсатора

Сигнал с коммутатора A после добавления конденсатора

Для коммутатора B:

Сигнал с коммутатора B после добавления конденсатора

Сигнал с коммутатора B после добавления конденсатора

Для коммутатора C:

Сигнал с коммутатора C после добавления конденсатора

Сигнал с коммутатора C после добавления конденсатора

Для коммутатора D:

Сигнал с коммутатора D после добавления конденсатора

Сигнал с коммутатора D после добавления конденсатора

Для коммутатора C (импульс соответствует логическому нулю):

Сигнал с коммутатора C после добавления конденсатора (импульс соответствует логическому нулю)

Сигнал с коммутатора C после добавления конденсатора (импульс соответствует логическому нулю)

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

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

Другой способ – использовать прерывание для обработки дребезга контактов. Имейте в виду, что прерывание может быть запущено и при нарастающем, и при спадающем фронте, а некоторые микроконтроллеры могут добавлять одно прерывание в стек. Существуют разные мнения о том, как это использовать, но прерывание, вызванное подавлением дребезга, здесь не обсуждается.

Ниже показано простое программное подавление дребезга контактов для Arduino.

Код выше был написан в Arduino IDE.

Следующая программа мигает двумя светодиодами, подключенными к PIC микроконтроллеру. Код может быть похожим на этот:

Этот пример написан MPLAB X с компилятором XC8. Микроконтроллер – это PIC 16F628A, и я использовал внутренний генератор на 4 МГц. Вам необходимо поэкспериментировать с Bouncevalue . У меня лучше всего программа работала со значением 500.

Микроконтроллер без какого-либо подавления дребезга контактов:

Это пример того, как коммутатор может «запутать» микроконтроллер. Нормального переключения светодиодов не получилось. Похоже, что при нажатии кнопки они живут своей жизнью.

Микроконтроллер с управлением подавлением дребезга контактов:

Как видите, светодиоды хорошо включаются и выключаются по нажатию кнопки.

Заключение

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

А если применить RS-ТРИГГЕР на 155 серии для подавления дребезга, всегда ли получится?

Спасибо. При переводе статьи пропустил эту ошибку.
Теперь тип переменных, задействованных в подавлении дребезга, – unsigned int.

Жила-была мышь, и звали её Defender MM-525. Стойко тянула она свою мышиную лямку — на ссылки кликала, страницы прокручивала, курсор перемещала. Но однажды случилась беда — вместо одного клика она стала делать два, а то и больше. Бывало, захочешь приостановить видео на ютубе — а оно вместо этого на весь экран открывается. Или выделяешь текст — а в последний момент выделение сбрасывается. Понятно, что дальше так продолжаться не могло.




Что же делать? Интернет предлагает такие варианты:

  • Использовать программные средства фильтрации лишних кликов. Но это не решение проблемы, а лишь борьба с симптомами, к тому же только под Windows, так что этот вариант я отмёл.
  • Подогнутьпружинумикровыключателя.
  • Кое-кто даже грешит на клавиатуру. Я даже ради приличия проверил — результат ожидаемо отрицательный.
  • Большинство же советует просто заменить микровыключатель. Что я и сделал, поставив кнопку от старой мышки.

Но радость моя была недолгой — через несколько дней двойной клик вернулся. Пораскинув мозгами, я решил, что дело в механических вибрациях, и наклеил под кнопку толстый скотч. И снова это помогло лишь на несколько дней. Стало ясно, что надо искать радикальное решение. А для этого надо сначала понять, что происходит.

Как обычно делаются кнопки у цифровой электроники? Приблизительно так:

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

Но если вход у процессора идеальный, то выключатель таковым при всём уважении считать не получится. Когда выключатель замыкается — это означает, что один кусок металла соприкасается с другим куском металла. Но между состояниями «выключено» и «включено» есть тот неловкий момент, когда эти два куска соприкасаются едва-едва. И если сейчас контакт есть, то через микросекунду он может пропасть, а затем снова восстановиться. А порой и вовсе один контакт ударяется об другой и по законам Ньютона отскакивает от него, а то и несколько раз. Что подумает мама процессор? Правильно — он подумает, что выключатель включили, выключили, включили, выключили, включили, выключили и т. п. Хотя «на самом деле» его включили всего один раз. Это явление даже имеет своё название — дребезг контактов.

Постойте, ничего не напоминает? Ах да, аналогичный случай как раз произошёл с нашей мышкой! Значит, наша рабочая гипотеза будет в том, что разработчики мышки либо вовсе не вспоминали про возможность дребезга, либо их старания по борьбе с ним были тщетны. И нам придётся побороться с этим врагом за них.

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


Именно этим мы и займёмся.

Вот она — наша кнопка:


А это она же, но без крышки:


Подпишем номера контактов для удобства:


Принцип работы налицо — в состоянии покоя замкнуты контакты 1 и 3, при нажатии кнопки на некоторое время все контакты размыкаются, а затем замыкаются контакты 1 и 2. При отжатии происходит всё то же в обратном порядке.

Вскрыли мы кнопку не для того, чтобы что-то подгибать, а для того, чтобы воочию увидеть, как она работает, а если повезёт, то и посмотреть на дребезг. А поможет нам в этом фотоаппарат Samsung WB2000 и объектив И96У. Упомянутый аппарат умеет снимать видео с частотой 1000 кадров в секунду. Правда, не ахти как, но, как говорится, чем богаты.

Сложнейшая установка для высокоскоростной съёмки:


И, собственно, кино:

Как видим, контакт успевает пролететь всё положенное расстояние за пять кадров (сиречь 5 миллисекунд), и никакого видимого дребезга не наблюдается. Возможно, дребезг можно было бы увидеть на осциллограмме, но, к сожалению, я вспомнил о том, что у меня есть осциллограф, только тогда, когда мышь была уже собрана. Но так или иначе понятно, что характерное время дребезга явно меньше, чем минимальное время клика, и что граница между ними проходит приблизительно на пяти миллисекундах.

Лирическое отступление. Как бы я сделал мышь, если бы у меня был выключатель вышеприведённой конструкции? А вот так:


Но доблестные разработчики мыши, как мы сейчас увидим, не ищут лёгких путей.

Измерим наш выключатель мультиметром. Во-первых, находим, что ни один из контактов не закорочен на питание. Ну да ладно. В состоянии покоя на втором контакте 2,5 вольта питания, на остальных — ноль. В нажатом состоянии на всех контактах ноль. Это говорит о том, что разработчики не пошли по моему пути, и входом процессора, видимо, служит второй контакт, а третий контакт вовсе не используется. Но самое смешное — после отжатия кнопки ноль на втором контакте сохраняется ещё пять секунд! К сожалению, механизм работы и преимущества такого решения и мотивация разработчиков остаются для меня тайной. Надеюсь, кто-то из сведущих людей меня просветит.

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

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

Конденсатор в 0,1 мкФ даёт время клика 600 мс. То есть как бы быстро мы ни жали, кнопка «отлипнет» не ранее чем через 0,6 секунды. Это многовато. Методом линейной экстраполяции предполагаем, что 3,3 нФ дадут время в 20 мс. Паяем — и видим время около 100 мс. Но это время включает в себя и время собственно движения пальцем, и без конденсатора оно ненамного меньше. Перепробовав ещё несколько номиналов, я решил остановиться на 3,3 нФ.

Поскольку SMD-конденсаторов не было, пришлось паять ногастый:


На этом, собственно, всё. Мышь была успешно собрана и продолжает свою нехитрую, но ответственную службу. Надеюсь, вышеприведённый рецепт будет полезен не только моей мышке.

УПД: Совсем забыл. Есть ещё один бич мышиных кнопок, так и не всплывший в обсуждении, пока я не вспомнил. Ощущается это так — на кнопку приходится давить с большей силой, клик уже не такой чёткий, как раньше, и порой кнопка подаёт сигнал об отжатии, пока она нажата. А разгадка одна — та пластмасска, которая давит на выключатель, может со временем стираться, тогда в ней образуется такое красивое углубление, которое и не даёт кнопке нажиматься до конца. Лечится это просто — надо эту пластмасску либо доработать напильником, чтобы она вновь стала плоской и параллельной кнопке, либо приклеить к ней тонкую плоскую пластмасску в тех же целях.

Также может показаться, что я против методов, «альтернативных» описанному в статье, однако это не так. Но каждый метод имеет свою сферу применения. Коли мышь сделана так, что малейший дребезг воспринимается как нажатие — вы так и будете каждую неделю чистить контакты и/или менять выключатель.

УПД2: Оказалось, что не всё так просто. Читайте продолжение истории!


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

Итак, начнем. Клавиатурный модуль(на фото ниже) уже был рассмотрен в одной из предыдущих статей, в этой статье мы вернули его в наш "Серый ящичек", в котором он был размещен ранее, кстати, это устройство мы тоже обозревали в одной из статей, называлась она "Проект Grey Box[Серая коробка] - Начало"


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


Скетч загружен в плату Arduino , и тест показывает что в мониторе порта при нажатии кнопок творится настоящий бардак(что и будет показано в видеоролике ниже). Пришло время Domestos с хлором решить эту проблему, небольшое изменение в главной функции loop() дадут нам искомый результат - подавление дребезга и фильтрация сигнала от устройства ввода, дают возможность остальной части кода корректно обрабатывать и суммировать значение приращения от нажатий кнопок. Приведём только измененный кусок кода в функции loop() , весь остальной код остаётся без изменений:

Ну и в дополнение еще одна небольшая фича - подзвучка нажатий кнопок. Вместо обычных сухих щелкающих нажатий, событие будет озвучиваться тоновым писком от пъезопищалки . Добавляем в начало скетча строку:

Далее, tone(pin, frequency, duration) - функция подачи тонового сигнала, имеет три параметра pin - пин подключения пъезопищалки, frequency - частота звучания ноты, duration - длительность звучания. Встраиваем её вызов в функцию обработчик наращивания текущего значения при нажатии кнопки:

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


В этой статье мы рассмотрим такое распространенное и вредное явление как дребезг контактов. Ознакомимся с основными причинами возникновения дребезга. Изучим основные методы аппаратного и программного устранения данного явления.

Что такое дребезг контактов?

В конструкциях всех электромеханических устройств, предназначенных для замыкания-размыкания цепей, существует одна или несколько контактных пар. С их помощью происходит коммутация соответствующих электрических компонентов. Существенным недостатком электромеханических контактов являются произвольные неконтролируемые многократные повторы коммутации, вследствие упругости элементов контактной системы. Это явление получило название – дребезг контактов, а борьбу с ним ведут практически с того момента когда появились первые элементы автоматизированных систем.

Давайте разберёмся, какие физические факторы вызывают дребезжание и почему при этом возникают негативные последствия.

Причины возникновения

При взаимодействии упругих тел возникает деформация. Сила упругости возвращает первоначальную форму деформированного предмета, в результате чего он получает некий импульс движения. Иллюстрацией может служить металлический шарик, падающий на стальную плиту. Сила упругости возвращает его в положение, близкое к изначальному, откуда шарик снова падает на плиту и процесс повторяется. Происходит колебательное движение с затухающей амплитудой.

Аналогичные колебания происходят при соприкосновении твердых контактов, с той лишь разницей, что вместо силы тяжести на них действует упругость пружины или пластины. Амплитуда колебаний подвижных контактов, естественно, очень незначительная, но её вполне достаточно для провоцирования серии процессов кратковременного размыкания цепи. Результатом колебаний являются импульсы, в промежутке после нажатия и следующие сразу за отпусканием кнопки.

Разницу между идеальной и реальной формой импульсов видно на рис. 1.

 Сравнение идеального импульса с реальным

Рисунок 1. Сравнение идеального импульса с реальным

Как видно из рисунка идеальным является сигнал с одним прямоугольным импульсом. На практике всё выглядит иначе. Дребезг изменяет осциллограмму сигнала. Определённые коррективы вносит искрение. Форма импульсов на рисунке сильно приукрашена. В реальной ситуации осциллограмма выглядит более потрёпанной.

Частота и количество касаний контактов зависит:

  • от свойств компонентов коммутирующего узла;
  • уровня напряжения на обмотках реле;
  • от упругости пружины и некоторых других факторов.

Дребезг наблюдается и во время размыкания контактов. Обычно при механическом размыкании контакты меньше дребезжат.

На рисунке 2 наглядно изображена осциллограмма напряжения в результате коммутации электрического тока вследствие нажатия на кнопку.

Осциллограмма коммутационного тока

Рисунок 2. Осциллограмма коммутационного тока

На осциллограмме видно серии импульсов, характеризующих процесс дребезга.

Вредное влияние дребезга

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

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

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

Цифровая электроника воспринимает их за чередование сигналов, состоящих из нулей и единиц. Устройствами считываются ложные коды, вызванные дребезгом при нажатиях кнопки, что приводит к сбоям в работе. Поэтому устранения дребезга является важнейшей задачей, которую приходится решать многим конструкторам и схемотехникам.

Способы устранения и подавления дребезга

Без конструктивного изменения контактной системы устранить либо подавить дребезг принципиально невозможно. Примером таких конструктивных изменения можно наблюдать в узлах галетных переключателей или в кнопках типа П2К. В упомянутых конструкциях дребезг практически отсутствует. Нет его и у механического переключателя ползункового типа.

Аппаратный способ

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

Для снижения уровня коммутационного износа в различных реле и силовых выключателях применяют искрогасящие цепочки:

  • шунтирующие RC-цепи;
  • варисторы, препятствующие скачкообразному изменению напряжения;
  • обратные диоды, подавляющие напряжения самоиндукции;
  • стабилитроны;
  • комбинированные схемы (варистор +RC-цепь).

Эти цепочки помогают устранить дребезг путём выравнивания скачкообразных характеристик тока. Их подключают параллельно нагрузке либо к контактам реле. Существуют также схемы, в которых искрогасящие цепи подключаются одновременно и к нагрузке и к реле.

Схемы цепей изображены на рис. 3.

Схемы искрогасящих цепей

Рисунок 3. Схемы искрогасящих цепей

У каждого способа есть свои преимущества и недостатки. В зависимости от того какого результата необходимо достигнуть, применяют ту или иную схему.

Управление приборами чувствительными к дребезгу осуществляется через ФНЧ (например, через RC-цепочку). Обладая электрической емкостью, конденсатор забирает часть энергии в момент касания контактов. После разрыва цепи вследствие дребезга накопленная энергия возвращается. Таким образом, происходит сглаживание амплитуды колебаний.

Установки триггеров

Ещё один способ борьбы с дребезгом состоит в использовании специальных электронных схем, включающих rs-триггеры.

Роль триггеров заключается в преобразовании входного аналогового сигнала в цифровой и инверсии (переворачивания) логических уровней. Наглядно инверсию объясняет схема на рисунке 4.

Наглядная схема инверсии сигнала

Рис. 4. Наглядная схема инверсии сигнала

Устройство учитывает только части сигналов, превосходящие заданные пороговые значения, выдавая логические нули и единицы на выходе. Каждый раз восходящий или нисходящий сигнал переключает триггер, когда он проходит верхнее или нижнее пороговое значение. Проще говоря, провалы напряжения компенсируются инвертированными импульсами триггеров.

Простая схема с триггером показана на рисунке 5.

Наглядная схема подключения rs-триггеров

Рис. 5. Наглядная схема подключения rs-триггеров

Промежутки между пороговыми значениями называются гистерезисом. Форма таких импульсов используется для шумоподавления во время переключения логических сигналов. Сигнал от контакта поступает на схему, имеющую передаточную статическую характеристику в виде петли гистерезиса (триггер Шмидта). Только после этого сигнал с выходов триггера подаётся на вход цифрового устройства для тактирования.

Использование герконов

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

Управление контактами герконов осуществляется внешним магнитным полем. Для этого можно использовать постоянные магниты или электромагнитную индукцию. Устройства могут использоваться в маломощных цепях. Они имеют длительный срок службы, так как контакты в них не изнашиваются.

Программный метод

Для устранения дребезгов в различных вычислительных машинах используют программную обработку сигналов. При этом для тактирования берётся сигнал не непосредственно от контакта, а связанная с ним однобитная булевая переменная, сформированная специальной программой:

  • путём временной задержки сигнала, на период вероятного дребезга контактов;
  • методом многократного считывания состояния контактов, на заданном временном интервале. Программа считает цепь замкнутой, если на этом промежутке времени наступает период устойчивого замыкания контакта;
  • используя алгоритм подсчёта, при котором учитывается количество совпадающих значений сигналов замкнутости в определённый промежуток времени (в пределах от 10 до 100 мкс). Если программой будет замечено заданное число совпадений состояния замкнутости, она посчитает контакт устойчиво замкнутым и пропустит сигнал.

Сигнал, полученный программным способом, довольно надёжный и устойчивый. К недостаткам такой схемы подавления дребезга можно отнести разве что небольшую задержку сигнала, которая не превышает 0,1 с. Этот промежуток времени настолько мал, что им можно пренебречь во многих случаях. Обычно палец человека задерживается на клавише до момента отпускания кнопки свыше 0,2 с.

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

Программируемое устройство для устранения дребезга

Программируемое устройство для устранения дребезга

Заключение

Подытоживая выше сказанное, приходим к выводу: несмотря на несовершенство современных переключателей, мы можем эффективно подавлять дребезг контактов. В зависимости от решаемых задач, существует достаточно способов устранения дребезга. Самые простые из них – аппаратные, с применением низкочастотных фильтров. Очень распространёнными и практичными оказались схемы подавления дребезга с использованием триггеров.

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

Читайте также: