Дребезг контактов — Википедия
Осциллограмма напряжения в цепи при замыкании механического контакта. Нижний уровень напряжения на осциллограмме соответствует разомкнутому состоянию контактной пары. Высокий уровень — замкнутому. Затянутые фронты при размыканиях обусловлены паразитной входной электрической ёмкостью осциллографа и его кабеля.Дре́безг конта́ктов — явление, происходящее в электромеханических коммутационных устройствах и аппаратах (кнопках, реле, герконах, переключателях, контакторах, магнитных пускателях и др.), длящееся некоторое время после замыкания электрических контактов. После замыкания происходят многократные неконтролируемые замыкания и размыкания контактов за счет упругости материалов и деталей контактной системы — некоторое время контакты отскакивают друг от друга при соударениях, размыкая и замыкая электрическую цепь.
В зависимости от размеров, массы, материала и конструкции контактной системы время дребезга (время от первого соприкосновения контактов до затухания механических колебаний и установления стабильного контактирования) составляет 0,5—2 мс у миниатюрных герконов и до сотен миллисекунд у мощных контакторов.
Дребезг наблюдается и при размыкании электромеханических контактов.
Практически все механические кнопки, контакторы и переключатели в той или иной степени подвержены дребезгу.
Дребезг контактов — почти всегда[1] нежелателен в технических устройствах. Так, например, при коммутации мощных электрических цепей происходит многократное зажигание и гашение электрической дуги или искрение между контактами, что вызывает повышенный износ контактов.
Некоторые электронные компоненты, например электролитические конденсаторы, имеют ограниченный ресурс по количеству циклов перезаряда большими импульсными токами. Коммутация таких конденсаторов электромеханическими контактами может снижать срок их службы.
При использовании электромеханических контактов (например, кнопок) для управления электронными цифровыми устройствами необходимо учитывать вредное влияние дребезга. Дребезг не вызывает побочное нежелательное влияние на асинхронные входы цифровых устройств (например, входы установки триггеров, счетчиков, регистров сдвига в одно из начальных состояний), но совершенно неприемлемо непосредственное управление от механических контактов синхронных входов цифровых устройств (счетные входы триггеров, счётные входы счетчиков и др.), что неизбежно приведёт к сбоям кодов при работе таких устройств — случайное многократное изменение состояния счетчиков, регистров сдвига.
Способы устранения нежелательного влияния дребезга[править | править код]
Одна из практических схем для устранения дребезга контактов в цифровых устройствах с помощью RS-триггера. Электромеханический контакт присоединён к асинхронным входам установки и сброса триггера[2]. При нажатии или отпускании кнопки первое касание контакта переключает триггер, и последующий дребезг не влияет на его состояние. В качестве сигнала для управления цифровым устройством используются выходы триггера.Дребезг принципиально невозможно устранить или снизить, не изменяя механическую конструкцию контактной системы. Некоторые типы контактных систем, например, ползункового типа (применяются в галетных переключателях, некоторых типах кнопок, к примеру, в переключателях типа П2К) практически не имеют дребезга.
Другой конструктивный способ исключения дребезга в слаботочных электромеханических ключах — применение смоченных ртутью контактных пар. В этих ключах электрическая цепь не разрывается во время «подпрыгивания» контактов при дребезге, так как при механическом размыкании твёрдых контактов между ними образуются перемычки из жидкой ртути.
В силовых выключателях, реле, для снижения коммутационного износа контактов часто применяют искрогасящие цепочки.
При управлении критичными к дребезгу входами цифровых устройств используют специальные электронные схемы (пример с триггером на рисунке) или другого типа: сигнал от контакта подаётся через ФНЧ (в простейшем случае — RC-цепочку) на электронную схему с передаточной статической характеристикой, имеющей петлю гистерезиса (например, триггер Шмитта), и уже выход этого устройства используют для тактирования цифрового устройства.
В вычислительных, например, микропроцессорных системах подавление дребезга контактов обычно производят программным способом. При этом в качестве тактирующего сигнала используется не сам сигнал от контакта с дребезгом, а некоторая связанная с ним специально сформированная однобитная булевая переменная.
При программном формировании очищенного от дребезга контакта сигнала наибольшее распространение получили три из них:
- Путём установки временной задержки — программа, обнаружив замкнутое состояния контакта, игнорирует его состояние на время, заведомо большее длительности дребезга, и спустя это время снова проверяет состояние контакта. Если после этого времени состояние контакта замкнутое, то соответствующая переменная меняет значение.
- Методом подсчёта числа совпадающих значений сигнала замкнутости — программа многократно считывает состояние контакта, и, если последовало определённое количество подтверждений замкнутости в течение заданного промежутка времени (определяется экспериментально и выбирается в пределах от 10 до 100), контакт считается устойчиво замкнутым.
- Методом подсчёта времени устойчивого состояния — программа в течение заданного времени многократно считывает состояние контакта. Если в течение заданного времени не обнаружено ни одного изменения состояния на противоположное, то контакт считается устойчиво замкнутым. В противном случае, если было обнаружено изменение состояния в течение заданного времени, то подсчёт времени прерывается (или продолжается, но с установкой флага или подсчётом количества изменений состояния для оценки физического состояния механических контактов) и контакт считается разомкнутым или с неустойчивым состоянием (если такая информация используется в программе).
что это за явление, способы его устранения и подавления
В этой статье мы рассмотрим такое распространенное и вредное явление как дребезг контактов. Ознакомимся с основными причинами возникновения дребезга. Изучим основные методы аппаратного и программного устранения данного явления.
Что такое дребезг контактов?
В конструкциях всех электромеханических устройств, предназначенных для замыкания-размыкания цепей, существует одна или несколько контактных пар. С их помощью происходит коммутация соответствующих электрических компонентов. Существенным недостатком электромеханических контактов являются произвольные неконтролируемые многократные повторы коммутации, вследствие упругости элементов контактной системы. Это явление получило название – дребезг контактов, а борьбу с ним ведут практически с того момента когда появились первые элементы автоматизированных систем.
Давайте разберёмся, какие физические факторы вызывают дребезжание и почему при этом возникают негативные последствия.
Причины возникновения
При взаимодействии упругих тел возникает деформация. Сила упругости возвращает первоначальную форму деформированного предмета, в результате чего он получает некий импульс движения. Иллюстрацией может служить металлический шарик, падающий на стальную плиту. Сила упругости возвращает его в положение, близкое к изначальному, откуда шарик снова падает на плиту и процесс повторяется. Происходит колебательное движение с затухающей амплитудой.
Аналогичные колебания происходят при соприкосновении твердых контактов, с той лишь разницей, что вместо силы тяжести на них действует упругость пружины или пластины. Амплитуда колебаний подвижных контактов, естественно, очень незначительная, но её вполне достаточно для провоцирования серии процессов кратковременного размыкания цепи. Результатом колебаний являются импульсы, в промежутке после нажатия и следующие сразу за отпусканием кнопки.
Разницу между идеальной и реальной формой импульсов видно на рис. 1.

Как видно из рисунка идеальным является сигнал с одним прямоугольным импульсом. На практике всё выглядит иначе. Дребезг изменяет осциллограмму сигнала. Определённые коррективы вносит искрение. Форма импульсов на рисунке сильно приукрашена. В реальной ситуации осциллограмма выглядит более потрёпанной.
Частота и количество касаний контактов зависит:
- от свойств компонентов коммутирующего узла;
- уровня напряжения на обмотках реле;
- от упругости пружины и некоторых других факторов.
Дребезг наблюдается и во время размыкания контактов. Обычно при механическом размыкании контакты меньше дребезжат.
На рисунке 2 наглядно изображена осциллограмма напряжения в результате коммутации электрического тока вследствие нажатия на кнопку.

На осциллограмме видно серии импульсов, характеризующих процесс дребезга.
Вредное влияние дребезга
Чтобы понять негативные последствия от дребезга, рассмотрим процессы, возникающие при коммутации слабых и мощных электрических цепей. Как только расстояние между контактами оказывается достаточным для зажигания электрической дуги, между ними возникает разряд, который разрушает соприкасающиеся поверхности. Искрение, возникающее при механическом контакте, обычно имеет небольшую разрушающую силу. Но электрическая дуга большой мощности вызывает повышенный износ.
Слабое искрение также приводит к явлению износа контактов, хотя оно не такое разрушительное как при зажигании мощной дуги. В ряде случаев таким износом можно пренебречь. Например, для бытовых выключателей освещения проблемой дребезга никто не занимается, так как он почти не влияет на работу осветительных приборов. Во всяком случае, потребители не замечают последствий такого явления.
Однако повышенный износ контактов не единственная (а во многих случаях даже не самая главная) проблема, с которой сталкиваются электротехники. Частые переключения, вызванные эффектом дребезга – враг номер один для цифровых входов. Схемы различных электронных устройств очень чувствительны к кратковременным частым переключениям токов.
Цифровая электроника воспринимает их за чередование сигналов, состоящих из нулей и единиц. Устройствами считываются ложные коды, вызванные дребезгом при нажатиях кнопки, что приводит к сбоям в работе. Поэтому устранения дребезга является важнейшей задачей, которую приходится решать многим конструкторам и схемотехникам.
Способы устранения и подавления дребезга
Без конструктивного изменения контактной системы устранить либо подавить дребезг принципиально невозможно. Примером таких конструктивных изменения можно наблюдать в узлах галетных переключателей или в кнопках типа П2К. В упомянутых конструкциях дребезг практически отсутствует. Нет его и у механического переключателя ползункового типа.
Аппаратный способ
С целью подавления дребезга в системах слаботочных электромеханических ключей прибегают к смачиванию ртутью контактов, которые помещают в изолирующие колбы. Жидкое состояние ртути частично гасит упругие силы, вызывающие дребезг, а также образует токопроводящие перемычки, не позволяющие разрывать электрическую цепь при соприкосновении контактов.
Для снижения уровня коммутационного износа в различных реле и силовых выключателях применяют искрогасящие цепочки:
- шунтирующие RC-цепи;
- варисторы, препятствующие скачкообразному изменению напряжения;
- обратные диоды, подавляющие напряжения самоиндукции;
- стабилитроны;
- комбинированные схемы (варистор +RC-цепь).
Эти цепочки помогают устранить дребезг путём выравнивания скачкообразных характеристик тока. Их подключают параллельно нагрузке либо к контактам реле. Существуют также схемы, в которых искрогасящие цепи подключаются одновременно и к нагрузке и к реле.
Схемы цепей изображены на рис. 3.

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

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

Промежутки между пороговыми значениями называются гистерезисом. Форма таких импульсов используется для шумоподавления во время переключения логических сигналов. Сигнал от контакта поступает на схему, имеющую передаточную статическую характеристику в виде петли гистерезиса (триггер Шмидта). Только после этого сигнал с выходов триггера подаётся на вход цифрового устройства для тактирования.
Использование герконов
Выше упоминалось, что наличие ртути на контактах подавляет дребезг. Но общеизвестно, что пары этого жидкого металла очень ядовиты. Использовать их в открытых конструкциях, например в тактовых кнопках, небезопасно. Но контакты можно поместить в герметическую колбу, что позволяет применять ртуть. Такие конструкции называются герконами.
Управление контактами герконов осуществляется внешним магнитным полем. Для этого можно использовать постоянные магниты или электромагнитную индукцию. Устройства могут использоваться в маломощных цепях. Они имеют длительный срок службы, так как контакты в них не изнашиваются.
Программный метод
Для устранения дребезгов в различных вычислительных машинах используют программную обработку сигналов. При этом для тактирования берётся сигнал не непосредственно от контакта, а связанная с ним однобитная булевая переменная, сформированная специальной программой:
- путём временной задержки сигнала, на период вероятного дребезга контактов;
- методом многократного считывания состояния контактов, на заданном временном интервале. Программа считает цепь замкнутой, если на этом промежутке времени наступает период устойчивого замыкания контакта;
- используя алгоритм подсчёта, при котором учитывается количество совпадающих значений сигналов замкнутости в определённый промежуток времени (в пределах от 10 до 100 мкс). Если программой будет замечено заданное число совпадений состояния замкнутости, она посчитает контакт устойчиво замкнутым и пропустит сигнал.
Сигнал, полученный программным способом, довольно надёжный и устойчивый. К недостаткам такой схемы подавления дребезга можно отнести разве что небольшую задержку сигнала, которая не превышает 0,1 с. Этот промежуток времени настолько мал, что им можно пренебречь во многих случаях. Обычно палец человека задерживается на клавише до момента отпускания кнопки свыше 0,2 с.
Программированные устройства получают сигналы управления с кнопок и передают идеальные импульсы на устройства-потребители, работающие на цифровых микросхемах. В результате отсечения программой сигналов дребезга, на входы микросхемы поступают только качественные импульсы. Это обеспечивает стабильную работу цифровых устройств, противостоит ложному срабатыванию логических дешифраторов, независимо от уровня сигнала и его качества.

Заключение
Подытоживая выше сказанное, приходим к выводу: несмотря на несовершенство современных переключателей, мы можем эффективно подавлять дребезг контактов. В зависимости от решаемых задач, существует достаточно способов устранения дребезга. Самые простые из них – аппаратные, с применением низкочастотных фильтров. Очень распространёнными и практичными оказались схемы подавления дребезга с использованием триггеров.
Для управления высокоточными цифровыми устройствами лучше использовать программный метод. Он более дорогой и сложный, но в ряде случаев – безальтернативный.
Видео в развитие темы
причины возникновения и способы борьбы с ним
Дребезг контактов – это паразитное явление, которое вносит проблемы преимущественно в электронных схемах. Его суть заключается в повторном многократном и ложном прерывании и подаче сигнала на вход. В результате система, которая его принимает, неверно реагирует. Давайте более подробнее рассмотрим причины дребезга контактов и способы борьбы с ним.
Определение и суть проблемы в электронике
Дребезг контактов возникает при нажатии на кнопку и переключатель, он возникает из-за реальных вибраций контактной пластины при её перемещении. Любой переключатель устроен так, что у него есть подвижный и неподвижный контакт. Как видно из названия, подвижным называется тот, что соединен с толкателем или рычагом, на который уже нажимает человек или механизм при работе устройства.
Так как кнопки имеют механическое устройство, то от их качества зависит то, как точно они отрабатывают нажатия. При этом в любом случае полностью устранить явление дребезга нельзя. К чему он приводит?
Если клавиша управляет каким-то электронным устройством с цифровым входом, например, микроконтроллера, логического элемента и пр., то его вход распознает столько нажатий, сколько было импульсов послано в результате возникновения дребезга.
Пример осциллограммы дребезга контактов изображен на рисунке ниже:
Устранение эффекта
Чтобы устранить дребезг контактов, возможно использовать аппаратное или программное решение. К аппаратным решениям относится:
- Установка конденсаторов параллельно входу. Тогда может снижаться быстродействие реакции на нажатие при слишком большой ёмкости и неполного устранения дребезга при слишком маленькой.
- Введение триггеров Шмидта во входную цепь устройства. Более сложное решение, которое затруднительно для реализации в ходе доработки уже готового изделия, но и более технологичное и совершенное.
Если рассмотреть это явление на примере сдвигового регистра, то в этом видео наглядно показано его воздействие. После каждого нажатия кнопки должен загораться следующий светодиод.
Схема включения регистра и светодиодов на рисунке ниже:
Кнопка подключена так, как показано на схеме:
Пример осциллограммы сигнала с выраженным дребезгом:
Установив конденсатор на 1 мкФ параллельно кнопке для его подавления, получаем стабильное и точное срабатывание:
Схема подавления:
А фронт сигнала переключения, как вы можете убедиться, действительно завален, зато без лишних всплесков.
Альтернативой такому решению защиты от этого эффекта, без заваливания фронта и с большим быстродействием является использование триггера Шмидта. Типовая его схема изображена ниже:
На следующем рисунке изображены другие варианты схем на логических элементах для борьбы с дребезгом контактов:
Кроме аппаратного устранения, как было сказано, есть и программный способ решения данной проблемы. Он заключается в написании кода, смысл которого в считывании изменения сигнала, выдержки определенного времени и повторного его считывания.
Пример программного подавления дребезга контактов в Arduino IDE вы можете скачать, перейдя по ссылке: код для подавления дребезга.
Дребезжание реле
Кроме дребезга кнопок в цифровых электронных схемах также доставляет проблемы дребезг контактов в схемах управления реле. К таким схемам можно отнести сумеречное реле или различные датчики протока, а также регуляторы температуры. Когда датчик выдаёт сигнал на пороге срабатывания устройства, получается неопределенное состояние и логика схемы то включает, то отключает его. И при срабатывании реле не всегда наблюдается устойчивое удержание контактов, оно начинает как бы вибрировать, включаясь и отключаясь. На эпюре ниже наглядно изображена эта проблема на примере регулятора температуры:
Решением этой проблемы также является установка порогового элемента петлей гистерезиса в его передаточных статических характеристиках, то есть триггера Шмидта или Компаратора на операционном усилителе. На схеме ниже изображен исходный вариант с рассмотренной на графике проблемой:
А так выглядит схема с дополнением в виде задержки включения на логических элементах 2И-НЕ отечественной микросхемы К561ЛА7:
Иногда с этой же проблемой справляются с помощью установки стабилитрона в сигнальные цепи.
Аналогично дребезгу кнопок при включении реле, его контакты могут повторно несколько раз перекоммутироваться. Явление опасно тем, что в этот момент происходит зажигание и гашение дуги, что значительно снижает срок службы аппарата. Особенно часто это происходит при срабатывании реле на переменном токе.
Всё это связано с механической структурой герконов, реле и других коммутаторов. Их контакты замыкаются не моментально, а в течении долей, единиц или десятков миллисекунд. Чтобы продлить срок службы реле, ознакомьтесь со способами, которые мы описывали в статье о том, почему искрят контакты.
Также рекомендуем посмотреть хорошее видео на эту тему:
Теперь вы знаете, что такое дребезг контактов реле и какие способы борьбы с ним наиболее эффективны. Если возникли вопросы, задавайте и в комментариях под статьей!
Материалы по теме:
2. Подавление дребезга механических контактов
Подавление дребезга механических контактов
Непосредственная подача сигналов на входы микросхем от кнопок и переключателей не всегда допустима из-за так называемого «дребезга» — многократного неконтролируемого замыкания и размыкания контактов в момент переключения (происходит из-за механического резонанса в течение времени до 40…100 мс).
Нечувствительными к дребезгу являются входы начальной установки триггеров, счетчиков и регистров (обнуление по входам R). В этом случае могут использоваться схемы рис. 1.1.
Подача логических уровней сигнала на счетные входы микросхем требует подавления дребезга — без этого возможно случайное многократное срабатывание счетчиков.
На рис. 1.2 приведены схемы подавления дребезга с помощью RS-триггера, собранного на отдельных ЛЭ. Варианты приведенные на рис. 1.2в и 1.2г,
Рис. 1.1. Импульсы с дребезгом на контактах
Рис. 1.2. Подавление дребезга при помощи:
а), б) RS-триггера на элементах 2И-НЕ; в), г) RS-триггера на элементах 2ИЛИ-НЕ
Рис. 1.3. Использование одной микросхемы с четырьмя триггерами для
подавления дребезга
менее помехоустойчивы. Аналогичную схему можно выполнить на RS-триггере микросхемы 561 ТМ2, соединив неиспользуемые входы D и С с 0. Если требуется подавать много сигналов, то лучше воспользоваться мик-
росхемами с четырьмя триггерами в одном корпусе (рис. 1.3). На выходах триггеров 561 ТР2 сигнал лог. «1» появляется на время переключения S1…S4. При этом переключатели независимы друг от друга. Варианты формирователей сигналов на микросхемах 561 ТМЗ, 561 ИР9 и 561ИЕ11 обеспечивают фиксацию coстояния на выходе лог. «1» после нажатия соответствующей кнопки (остальные выходы обнуляются). Схемы (рис. 1.3б…1.3г) позволяют нажимать поочередна только одну кнопку, а при нажатии двух одновременно запоминается состояние
первой по времени сработавшей кнопки. Цепь из C1-R6 служит для начальной нулевой установки выходов при включении питания. Применение регистра ИР9 позволяет при необходимости иметь на выходах инверсные сигналы, подав на его управляющий вход 2 лог. «0».
Рис. 1.4. Подавление дребезга на триггере с управлением по выходу
Рис. 1.5. Формирование длинного импульса с помощью:
а) триггера Шмитта; б) триггера Шмитта собраннго на ЛЭ
Чаще удобнее использовать кнопки с одной группой контактов. Высокое входное сопротивление КМОП микросхем и относительно высокое выходное (100…1000 Ом) позволяют упростить узел подавления дребезга (рис. 1.4), но такое включение недопустимо для микросхем с повышенной нагрузочное способностью, например 561ЛН1, 561ЛН2, 176ПУ1,176ПУ2 и т. д., так как их выходные токи при закорачивании выхода на общий провод кратковременно могут достигать десятков миллиампер, что снизит надежность устройства, а также создаст импульсные помехи.
Подавление дребезга на контактах возможно с помощью RC-цепи и триггера Шмитта (рис. 1.5). На выходе ЛЭ формируется импульс с крутым фронтом.
Рис. 1.6. Подавление дребезга с задержкой включения и выключения
Для подавления дребезга от кнопки с одной группой контактов могут применяться схемы, приведенные на рис. 1.6. Они аналогичны по принципу работы.
При замыкании кнопки SB1 емкость С1 начинает заряжаться. Постоянная времени цепи заряда (tз=0,7R2С1) выбирается такой, чтобы переключение элемен та D1.1 происходило после прекращения дребезга. При размыкании SB1 процесс перезаряда конденсатора аналогичен, что видно из диаграммы. Схемы на рис. 1.7, кроме подавления дребезга, позволяют получить задержку включения или выключения, если это необходимо, см. диаграммы.
На рис. 1.8 показана схема переключателя на три положения с взаимным выключением на основе трехстабильного триггера. При включении питания лог. «0» с разряженного конденсатора С1 через диод VD1 подается на входы элемен-
тов D1.1, D1.2 и на выходах появится лог. «1». Этот сигнал через резисторы R1 и R2 поступает на входы элемента D1.3 (на выходе появится лог. «0»). Таким образом, в исходном состоянии на выходах 1 и 2 будет лог. «1», а на выходе 3 —
лог. «0». При нажатии на кнопку SB1 на выходе 1 появится лог. «0», а на 2 и 3 — лог. «1». Аналогично происходит при нажатии других кнопок, что исключает дребезг сигнала на выходе, однако при одновременном нажатии сразу двух или трех кнопок переключение выходного уровня происходит без подавления дребезга.
При проектировании цифровых устройств с подачей управляющих сигналов от многокнопочной клавиатуры для уменьшения числа деталей используют
Рис. 1.7. Подавление дребезга с задержкой:
а) выключения; 6) включения
Рис. 1.8. Переключатель с взаимовыключением на основе трехстабильного
триггера
матричные шифраторы, на выходе которых в зависимости от номера нажатой кнопки формируется соответствующий двоичный код (например Л5, стр. 279; ЛЗ стр. 226).
В качестве простейших схем для подавления дребезга механических контактов могут использоваться ждущие мультивибраторы.
Программирование ПЛИС. Изучение явления «дребезг контактов» и метод избавления от него
Мы продолжаем изучение ПЛИС и языка VHDL. В данной статье, ориентированной на новичков, мы изучим явление «дребезг контактов» и рассмотрим способ избавления от него.Итак, цель работы: Изучить явление «дребезг контактов», создать проект в Xilinx ISE Project Navigator: При нажатии на кнопку значение регистра увеличивается на 1.
Часть 1. Что такое «дребезг контактов»?
«Дре́безг — явление, возникающее в электрических и электронных переключателях, при котором они вместо некоторого стабильного сигнала выдают на выходе случайные высокочастотные колебания» (с) Википедия.
Говоря проще, при нажатии и отпускании кнопки она переходит в нужное состояние не сразу. Какое-то время контакты кнопки «дребезжат» между собой, что будет воспринято микроконтроллером как многократные импульсы. Количество этих импульсов может превышать тысячи. Наглядно дребезг можно увидеть на осциллограмме, на которой показан момент отпускания кнопки:
Часть 2. Создание проекта.
В моей предыдущей статье было подробно описано создание нового проекта для Spartan-3E Starter Kit в Xilinx ISE Project Navigator v12.3. Создадим проект еще раз, назовем его, например, drebezg_habr и внесем в него некоторые изменения:
1. Нам потребуется одна кнопка и восемь светодиодов. Добавим входной сигнал btn и 8 выходных сигналов led в порты:
entity drebezg_habr is
Port ( clk : in STD_LOGIC;
btn : in STD_LOGIC;
led : out STD_LOGIC_VECTOR(7 downto 0));
end drebezg_habr;
2. В файле pin.ucf напишем имена ножек, соответствующие кнопке и каждому светодиоду:
NET «clk» LOC = «C9»;
NET «led<0>» LOC = «F12»;
NET «led<1>» LOC = «E12»;
NET «led<2>» LOC = «E11»;
NET «led<3>» LOC = «F11»;
NET «led<4>» LOC = «C11»;
NET «led<5>» LOC = «D11»;
NET «led<6>» LOC = «E9»;
NET «led<7>» LOC = «F9»;
NET «btn» LOC = «K17»;
NET «btn» PULLUP;
Ножка K17 соответствует нижней кнопке из имеющихся:
Слово PULLUP подключает кнопку по следующей схеме (прямо внутри ПЛИС):
Часть 3. Программирование.
Переходим в файл drebezg_habr.vhd. Создадим 8-битный регистр-счетчик, который мы будем пытаться прибавлять на единицу при однократном нажатии кнопки: между architecture и begin пишем
signal count_led: std_logic_vector(7 downto 0);
И сразу же, после слова begin, направляем этот счетчик на наши светодиоды:
led <= count_led;
Теперь наша задача прибавить единицу к счетчику count_led при нажатии кнопки. Сразу же напрашивается решение сделать переменную, которая бы хранила предыдущее состояние кнопки и сравнивалась с ее текущим состоянием. Давайте так и сделаем:
architecture Behavioral of drebezg_habr is
signal count_led: std_logic_vector(7 downto 0);
signal old_btn: std_logic;
begin
process(clk)
begin
if rising_edge(clk) then
old_btn <= btn;
if old_btn = ‘0’ and btn = ‘1’ then
count_led <= count_led + 1;
end if;
end if;
end process;
led <= count_led;
end Behavioral;
Транслируем, зашиваем, тестируем. Уверен, что результат вас совершенно не устроит, ибо диоды будут просто совершенно неупорядоченно мигать. Это связано с тем, что событий if old_btn = ‘0’ and btn = ‘1’ then во время нажатия и отпускания кнопки очень много как раз из-за дребезга контактов. Чтобы избавиться от этого явления нам необходимо дождаться четко установившегося значения логической единицы. Для этого мы заведем счетчик, который увеличивается на 1, пока кнопка имеет значение логической единицы. Счетчик обнуляется, если кнопка приняла значение логического нуля. Таким образом, сколько бы не было импульсов во время нажатия кнопки из-за дребезга, настанет момент, когда значение btn четко установится в логическую единицу, счетчик достигнет определенного значения, и мы сможем судить о том, что действительно было совершено нажатие кнопки. Теперь нам не потребуется переменная old_btn.
architecture Behavioral of drebezg_habr is
signal count_led: std_logic_vector(7 downto 0);
constant clk_freq : integer := 50_000_000; — частота кварца
constant btn_wait : integer := clk_freq/4; — будем ждать 0.25 секунды установления единицы
signal count : integer range 0 to btn_wait := 0;
begin
process(clk)
begin
if rising_edge(clk) then
if btn = ‘1’ then
count <= count + 1;
if count = btn_wait then
count_led <= count_led + 1;
count <= 0;
end if;
else
count <= 0;
end if;
end if;
end process;
led <= count_led;
end Behavioral;
Значение btn_wait было выбрано 0.25 секунды для того, чтобы значение count_led не прибавлялось слишком часто, пока кнопка находится в зажатом состоянии.
Еще один вариант антидребезга (даже более надежный) — прибавление count на 1 когда btn является логической единицей, и вычитание из count 1 когда btn является нулем. При этом если значение count опускается до 0 значит кнопка не нажата, либо был дребезг. Ну а если count досчитал до заветного btn_wait значит произошло нажатие =)
В качестве домашнего задания могу посоветовать дописать проект: сделайте прибавление count_led после того, как кнопка была нажата и отпущена.
Итак, мы ознакомились на практике с явлением «дребезг контактов» и научились избавляться от него. Это явление можно наблюдать не только в кнопках, тумблерах и прочих подобных вещах, но даже иногда и в различных протоколах, например RS-232.
Исходники проекта здесь. Желаю всем успехов в освоении ПЛИС!
мир электроники — Дребезг контактов. Что это такое и как с ним бороться
В обработке прерывания мы запрещаем внешнее прерывание и запускаем таймер. По прерыванию таймера мы вновь разрешим внешние прерывания.
Время необходимой задержки зависит от длительности процесса дребезга контактов. В среднем процесс дребезга может длиться 0,01 — 0,3 секунд. Можно выполнить задержку интервалом в 0,5 секунд, чего хватит с головой. В критичных по времени случаях необходимо подгонять это время на этапе отладки.
Устранение дребезга контактов при помощи дополнительных элементов
Здесь так-же используется принцип временной задержки. Решить вопрос временной задержки для устранения дребезга контактов можно двумя способами:
1. на простой логике
Работа этих схем основана на временных задержках, создаваемых при помощи RC – цепочек. На рисунке 2а показана схема, работа которой осуществляет задержку включения и выключения, рисунок 2в содержит схему с задержкой только включения, а на рисунке 2д показана схема с задержкой выключения. Эти схемы представляют собой одновибраторы, о которых уже было написано в одной из частей данной статьи. На рисунках 2б, 2г, 2е показаны их временные диаграммы.
Нетрудно видеть, что эти формирователи выполнены на микросхемах серии К561, которая относится к КМОП микросхемам, поэтому номиналы резисторов и конденсаторов указаны именно для таких микросхем. Эти формирователи должны использоваться в схемах, построенных на микросхемах серий К561, К564, К176 и подобных.
2. Применение RS триггера
Проще всего устранить дребезг контактов при помощи уже хорошо нам знакомого RS – триггера, который собран на логической микросхеме К155ЛА3, точнее на ее элементах DD1.1 и DD1.2. Условимся, что прямой выход RS – триггера это вывод 3, соответственно инверсный выход это вывод 6.
Когда RS – триггер собирается из элементов логических микросхем, приходится делать такое соглашение. Если же триггером является готовая микросхема, например К155ТВ1, положение прямого и инверсного выходов оговорено ее справочными данными. Но, даже и в этом случае, если не используются JK и C входы, а микросхема используется просто как RS – триггер, вышеупомянутое соглашение может быть вполне уместно. Например, для удобства монтажа микросхемы на плате. Конечно, при этом RS – входы также меняются местами.
В положении переключателя, показанном на схеме, на прямом выходе RS – триггера уровень логической единицы, а на инверсном, естественно, логический нуль. Состояние счетного триггера DD2.1 пока остается таким, в каком он оказался при включении питания.
Если в этом есть необходимость, то его можно сбросить при помощи кнопки SB2. Чтобы сбросить триггер в момент включения питания между R – входом и общим проводом подключают конденсатор небольшой емкости, в пределах 0,05…0,1 мкФ, а между плюсом питания и R – входом резистор сопротивлением 1…10 КОм. Пока конденсатор не зарядится на R – входе кратковременно присутствует напряжение логического нуля. Этого короткого нулевого импульса вполне достаточно для сброса триггера. Если по условиям работы устройства необходимо триггер при включении питания установить в единичное состояние, то такую RC – цепочку подключают к S – входу. Абзац об RC – цепочке будем считать лирическим отступлением, а теперь продолжим про борьбу с дребезгом контактов.
Нажатие кнопки SB1 приведет к замыканию ее правого по рисунку контакта с общим проводом. При этом на выводе 5 микросхемы DD1.2 появится целая серия импульсов дребезга. Но быстродействие микросхем даже самых медленных серий намного выше, чем быстродействие механических контактов. И поэтому первым же импульсом RS – триггер сбросится в нулевое состояние, чему соответствует высокий уровень на инверсном выходе.
В этот момент на нем формируется положительный перепад напряжения, который по C – входу переключает триггер DD2.1 в противоположное состояние, что можно наблюдать при помощи светодиода HL2. Последующие импульсы дребезга влияние на состояние RS – триггера не оказывают, поэтому состояние триггера DD2.1 остается неизменным.
При отпускании кнопки SB1 триггер на элементах DD1.1 DD1.2 переходит снова в единичное состояние. В этот момент на инверсном выходе (вывод 6 DD1.2) формируется отрицательный перепад напряжения, который не изменяет состояние триггера DD2.1. Для того чтобы вернуть счетный триггер исходное состояние кнопку SB1 придется нажать еще раз. С таким же успехом в подобном устройстве будет работать и JK – триггер.
Подобный формирователь является типовой схемой и работает четко и безотказно. Единственным его недостатком можно считать применение кнопки с перекидным контактом.
Примечание: при подготовке статьи были использованы материалы с сайтов:
http://electrik.info/
http://easymcu.ru/
Дребезг контактов Википедия
Осциллограмма напряжения в цепи при замыкании механического контакта. Нижний уровень напряжения на осциллограмме соответствует разомкнутому состоянию контактной пары. Высокий уровень — замкнутому. Затянутые фронты при размыканиях обусловлены паразитной входной электрической ёмкостью осциллографа и его кабеля.Дре́безг конта́ктов — явление, происходящее в электромеханических коммутационных устройствах и аппаратах (кнопках, реле, герконах, переключателях, контакторах, магнитных пускателях и др.), длящееся некоторое время после замыкания электрических контактов. После замыкания происходят многократные неконтролируемые замыкания и размыкания контактов за счет упругости материалов и деталей контактной системы — некоторое время контакты отскакивают друг от друга при соударениях, размыкая и замыкая электрическую цепь.
В зависимости от размеров, массы, материала и конструкции контактной системы время дребезга (время от первого соприкосновения контактов до затухания механических колебаний и установления стабильного контактирования) составляет 0,5—2 мс у миниатюрных герконов и до сотен миллисекунд у мощных контакторов.
Дребезг наблюдается и при размыкании электромеханических контактов.
Вредное влияние дребезга[ | ]
Практически все механические кнопки, контакторы и переключатели в той или иной степени подвержены дребезгу.
Дребезг контактов — почти всегда[1] нежелателен в технических устройствах. Так, например, при коммутации мощных электрических цепей происходит многократное зажигание и гашение электрической дуги или искрение между контактами, что вызывает повышенный износ контактов.
Некоторые электронные компоненты, например электролитические конденсаторы, имеют ограниченный ресурс по количеству циклов перезаряда большими импульсными токами. Коммутация таких конденсаторов электромеханическими контактами может снижать срок их службы.
При использовании электромеханических контактов (например, кнопок) для управления электронными цифровыми устройствами необходимо учитывать вредное влияние дребезга. Дребезг не вызывает побочное нежелательное влияние на асинхронные входы цифровых устройств (например, входы установки триггеров, счетчиков, регистров сдвига в одно из начальных состояний), но совершенно неприемлемо непосредственное управление от механических контактов синхронных входов цифровых устройств (счетные входы триггеров, счётные входы счетчиков и др.), что неизбежно приведёт к сбоям ов при работе таких устройств — случайное многократное изменение состояния счетчиков, регистров сдвига.