Что такое дребезг контактов и как его устранить
Что такое дребезг контактов и как его устранить?
В этой статье мы рассмотрим такое распространенное и вредное явление как дребезг контактов. Ознакомимся с основными причинами возникновения дребезга. Изучим основные методы аппаратного и программного устранения данного явления.
Что такое дребезг контактов?
В конструкциях всех электромеханических устройств, предназначенных для замыкания-размыкания цепей, существует одна или несколько контактных пар. С их помощью происходит коммутация соответствующих электрических компонентов. Существенным недостатком электромеханических контактов являются произвольные неконтролируемые многократные повторы коммутации, вследствие упругости элементов контактной системы. Это явление получило название – дребезг контактов, а борьбу с ним ведут практически с того момента когда появились первые элементы автоматизированных систем.
Давайте разберёмся, какие физические факторы вызывают дребезжание и почему при этом возникают негативные последствия.
Причины возникновения
При взаимодействии упругих тел возникает деформация. Сила упругости возвращает первоначальную форму деформированного предмета, в результате чего он получает некий импульс движения. Иллюстрацией может служить металлический шарик, падающий на стальную плиту. Сила упругости возвращает его в положение, близкое к изначальному, откуда шарик снова падает на плиту и процесс повторяется. Происходит колебательное движение с затухающей амплитудой.
Аналогичные колебания происходят при соприкосновении твердых контактов, с той лишь разницей, что вместо силы тяжести на них действует упругость пружины или пластины. Амплитуда колебаний подвижных контактов, естественно, очень незначительная, но её вполне достаточно для провоцирования серии процессов кратковременного размыкания цепи. Результатом колебаний являются импульсы, в промежутке после нажатия и следующие сразу за отпусканием кнопки.
Разницу между идеальной и реальной формой импульсов видно на рис. 1.
Рисунок 1. Сравнение идеального импульса с реальным
Как видно из рисунка идеальным является сигнал с одним прямоугольным импульсом. На практике всё выглядит иначе. Дребезг изменяет осциллограмму сигнала. Определённые коррективы вносит искрение. Форма импульсов на рисунке сильно приукрашена. В реальной ситуации осциллограмма выглядит более потрёпанной.
Частота и количество касаний контактов зависит:
- от свойств компонентов коммутирующего узла;
- уровня напряжения на обмотках реле;
- от упругости пружины и некоторых других факторов.
Дребезг наблюдается и во время размыкания контактов. Обычно при механическом размыкании контакты меньше дребезжат.
На рисунке 2 наглядно изображена осциллограмма напряжения в результате коммутации электрического тока вследствие нажатия на кнопку.
Рисунок 2. Осциллограмма коммутационного тока
На осциллограмме видно серии импульсов, характеризующих процесс дребезга.
Вредное влияние дребезга
Чтобы понять негативные последствия от дребезга, рассмотрим процессы, возникающие при коммутации слабых и мощных электрических цепей. Как только расстояние между контактами оказывается достаточным для зажигания электрической дуги, между ними возникает разряд, который разрушает соприкасающиеся поверхности. Искрение, возникающее при механическом контакте, обычно имеет небольшую разрушающую силу. Но электрическая дуга большой мощности вызывает повышенный износ.
Слабое искрение также приводит к явлению износа контактов, хотя оно не такое разрушительное как при зажигании мощной дуги. В ряде случаев таким износом можно пренебречь. Например, для бытовых выключателей освещения проблемой дребезга никто не занимается, так как он почти не влияет на работу осветительных приборов. Во всяком случае, потребители не замечают последствий такого явления.
Однако повышенный износ контактов не единственная (а во многих случаях даже не самая главная) проблема, с которой сталкиваются электротехники. Частые переключения, вызванные эффектом дребезга – враг номер один для цифровых входов. Схемы различных электронных устройств очень чувствительны к кратковременным частым переключениям токов.
Цифровая электроника воспринимает их за чередование сигналов, состоящих из нулей и единиц. Устройствами считываются ложные коды, вызванные дребезгом при нажатиях кнопки, что приводит к сбоям в работе. Поэтому устранения дребезга является важнейшей задачей, которую приходится решать многим конструкторам и схемотехникам.
Способы устранения и подавления дребезга
Без конструктивного изменения контактной системы устранить либо подавить дребезг принципиально невозможно. Примером таких конструктивных изменения можно наблюдать в узлах галетных переключателей или в кнопках типа П2К. В упомянутых конструкциях дребезг практически отсутствует. Нет его и у механического переключателя ползункового типа.
Аппаратный способ
С целью подавления дребезга в системах слаботочных электромеханических ключей прибегают к смачиванию ртутью контактов, которые помещают в изолирующие колбы. Жидкое состояние ртути частично гасит упругие силы, вызывающие дребезг, а также образует токопроводящие перемычки, не позволяющие разрывать электрическую цепь при соприкосновении контактов.
Для снижения уровня коммутационного износа в различных реле и силовых выключателях применяют искрогасящие цепочки:
- шунтирующие RC-цепи;
- варисторы, препятствующие скачкообразному изменению напряжения;
- обратные диоды, подавляющие напряжения самоиндукции;
- стабилитроны;
- комбинированные схемы (варистор +RC-цепь).
Эти цепочки помогают устранить дребезг путём выравнивания скачкообразных характеристик тока. Их подключают параллельно нагрузке либо к контактам реле. Существуют также схемы, в которых искрогасящие цепи подключаются одновременно и к нагрузке и к реле.
Схемы цепей изображены на рис. 3.
Рисунок 3. Схемы искрогасящих цепей
У каждого способа есть свои преимущества и недостатки. В зависимости от того какого результата необходимо достигнуть, применяют ту или иную схему.
Управление приборами чувствительными к дребезгу осуществляется через ФНЧ (например, через RC-цепочку). Обладая электрической емкостью, конденсатор забирает часть энергии в момент касания контактов. После разрыва цепи вследствие дребезга накопленная энергия возвращается. Таким образом, происходит сглаживание амплитуды колебаний.
Установки триггеров
Ещё один способ борьбы с дребезгом состоит в использовании специальных электронных схем, включающих rs-триггеры.
Роль триггеров заключается в преобразовании входного аналогового сигнала в цифровой и инверсии (переворачивания) логических уровней. Наглядно инверсию объясняет схема на рисунке 4.
Рис. 4. Наглядная схема инверсии сигнала
Устройство учитывает только части сигналов, превосходящие заданные пороговые значения, выдавая логические нули и единицы на выходе. Каждый раз восходящий или нисходящий сигнал переключает триггер, когда он проходит верхнее или нижнее пороговое значение. Проще говоря, провалы напряжения компенсируются инвертированными импульсами триггеров.
Простая схема с триггером показана на рисунке 5.
Рис. 5. Наглядная схема подключения rs-триггеров
Промежутки между пороговыми значениями называются гистерезисом. Форма таких импульсов используется для шумоподавления во время переключения логических сигналов. Сигнал от контакта поступает на схему, имеющую передаточную статическую характеристику в виде петли гистерезиса (триггер Шмидта). Только после этого сигнал с выходов триггера подаётся на вход цифрового устройства для тактирования.
Использование герконов
Выше упоминалось, что наличие ртути на контактах подавляет дребезг. Но общеизвестно, что пары этого жидкого металла очень ядовиты. Использовать их в открытых конструкциях, например в тактовых кнопках, небезопасно. Но контакты можно поместить в герметическую колбу, что позволяет применять ртуть. Такие конструкции называются герконами.
Управление контактами герконов осуществляется внешним магнитным полем. Для этого можно использовать постоянные магниты или электромагнитную индукцию. Устройства могут использоваться в маломощных цепях. Они имеют длительный срок службы, так как контакты в них не изнашиваются.
Программный метод
Для устранения дребезгов в различных вычислительных машинах используют программную обработку сигналов. При этом для тактирования берётся сигнал не непосредственно от контакта, а связанная с ним однобитная булевая переменная, сформированная специальной программой:
- путём временной задержки сигнала, на период вероятного дребезга контактов;
- методом многократного считывания состояния контактов, на заданном временном интервале. Программа считает цепь замкнутой, если на этом промежутке времени наступает период устойчивого замыкания контакта;
- используя алгоритм подсчёта, при котором учитывается количество совпадающих значений сигналов замкнутости в определённый промежуток времени (в пределах от 10 до 100 мкс). Если программой будет замечено заданное число совпадений состояния замкнутости, она посчитает контакт устойчиво замкнутым и пропустит сигнал.
Сигнал, полученный программным способом, довольно надёжный и устойчивый. К недостаткам такой схемы подавления дребезга можно отнести разве что небольшую задержку сигнала, которая не превышает 0,1 с. Этот промежуток времени настолько мал, что им можно пренебречь во многих случаях. Обычно палец человека задерживается на клавише до момента отпускания кнопки свыше 0,2 с.
Программированные устройства получают сигналы управления с кнопок и передают идеальные импульсы на устройства-потребители, работающие на цифровых микросхемах. В результате отсечения программой сигналов дребезга, на входы микросхемы поступают только качественные импульсы. Это обеспечивает стабильную работу цифровых устройств, противостоит ложному срабатыванию логических дешифраторов, независимо от уровня сигнала и его качества.
Программируемое устройство для устранения дребезга
Заключение
Подытоживая выше сказанное, приходим к выводу: несмотря на несовершенство современных переключателей, мы можем эффективно подавлять дребезг контактов. В зависимости от решаемых задач, существует достаточно способов устранения дребезга. Самые простые из них – аппаратные, с применением низкочастотных фильтров. Очень распространёнными и практичными оказались схемы подавления дребезга с использованием триггеров.
Для управления высокоточными цифровыми устройствами лучше использовать программный метод. Он более дорогой и сложный, но в ряде случаев – безальтернативный.
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).
В качестве простейших схем для подавления дребезга механических контактов могут использоваться ждущие мультивибраторы.
Что такое дребезг контактов и как его устранить
Определение и суть проблемы в электронике
Дребезг контактов возникает при нажатии на кнопку и переключатель, он возникает из-за реальных вибраций контактной пластины при её перемещении. Любой переключатель устроен так, что у него есть подвижный и неподвижный контакт. Как видно из названия, подвижным называется тот, что соединен с толкателем или рычагом, на который уже нажимает человек или механизм при работе устройства.
Так как кнопки имеют механическое устройство, то от их качества зависит то, как точно они отрабатывают нажатия. При этом в любом случае полностью устранить явление дребезга нельзя. К чему он приводит?
Если клавиша управляет каким-то электронным устройством с цифровым входом, например, микроконтроллера, логического элемента и пр., то его вход распознает столько нажатий, сколько было импульсов послано в результате возникновения дребезга.
Пример осциллограммы дребезга контактов изображен на рисунке ниже:
Устранение эффекта
Чтобы устранить дребезг контактов, возможно использовать аппаратное или программное решение. К аппаратным решениям относится:
- Установка конденсаторов параллельно входу. Тогда может снижаться быстродействие реакции на нажатие при слишком большой ёмкости и неполного устранения дребезга при слишком маленькой.
- Введение триггеров Шмидта во входную цепь устройства. Более сложное решение, которое затруднительно для реализации в ходе доработки уже готового изделия, но и более технологичное и совершенное.
Если рассмотреть это явление на примере сдвигового регистра, то в этом видео наглядно показано его воздействие. После каждого нажатия кнопки должен загораться следующий светодиод.
Схема включения регистра и светодиодов на рисунке ниже:
Кнопка подключена так, как показано на схеме:
Пример осциллограммы сигнала с выраженным дребезгом:
Установив конденсатор на 1 мкФ параллельно кнопке для его подавления, получаем стабильное и точное срабатывание:
А фронт сигнала переключения, как вы можете убедиться, действительно завален, зато без лишних всплесков.
Альтернативой такому решению защиты от этого эффекта, без заваливания фронта и с большим быстродействием является использование триггера Шмидта. Типовая его схема изображена ниже:
На следующем рисунке изображены другие варианты схем на логических элементах для борьбы с дребезгом контактов:
Кроме аппаратного устранения, как было сказано, есть и программный способ решения данной проблемы. Он заключается в написании кода, смысл которого в считывании изменения сигнала, выдержки определенного времени и повторного его считывания.
Пример программного подавления дребезга контактов в Arduino IDE вы можете скачать, перейдя по ссылке: код для подавления дребезга.
Дребезжание реле
Кроме дребезга кнопок в цифровых электронных схемах также доставляет проблемы дребезг контактов в схемах управления реле. К таким схемам можно отнести сумеречное реле или различные датчики протока, а также регуляторы температуры. Когда датчик выдаёт сигнал на пороге срабатывания устройства, получается неопределенное состояние и логика схемы то включает, то отключает его. И при срабатывании реле не всегда наблюдается устойчивое удержание контактов, оно начинает как бы вибрировать, включаясь и отключаясь. На эпюре ниже наглядно изображена эта проблема на примере регулятора температуры:
Решением этой проблемы также является установка порогового элемента петлей гистерезиса в его передаточных статических характеристиках, то есть триггера Шмидта или Компаратора на операционном усилителе. На схеме ниже изображен исходный вариант с рассмотренной на графике проблемой:
А так выглядит схема с дополнением в виде задержки включения на логических элементах 2И-НЕ отечественной микросхемы К561ЛА7:
Иногда с этой же проблемой справляются с помощью установки стабилитрона в сигнальные цепи.
Аналогично дребезгу кнопок при включении реле, его контакты могут повторно несколько раз перекоммутироваться. Явление опасно тем, что в этот момент происходит зажигание и гашение дуги, что значительно снижает срок службы аппарата. Особенно часто это происходит при срабатывании реле на переменном токе.
Всё это связано с механической структурой герконов, реле и других коммутаторов. Их контакты замыкаются не моментально, а в течении долей, единиц или десятков миллисекунд. Чтобы продлить срок службы реле, ознакомьтесь со способами, которые мы описывали в статье о том, почему искрят контакты.
Также рекомендуем посмотреть хорошее видео на эту тему:
Теперь вы знаете, что такое дребезг контактов реле и какие способы борьбы с ним наиболее эффективны. Если возникли вопросы, задавайте и в комментариях под статьей!
Дребезг контактов, и как с ним бороться
В данной статье мы рассмотрим, что такое дребезг контактов и способы борьбы с ним. Сначала я рассмотрю теорию, а позже покажу вам некоторые способы обработки дребезга и аппаратно, и программно.
Теория
Что такое дребезг контактов? Когда вы нажимаете на кнопку или на микропереключатель или изменяете положение тумблера, два металлических контакта замыкаются. Для пользователя может показаться, что контакт наступил мгновенно. Это не совсем правильно. Внутри коммутатора есть движущиеся части. Когда вы нажимаете на коммутатор, он вначале создает контакт между металлическими частями, но только в кратком разрезе микросекунды. Затем он делает контакт немного дольше, а затем еще немного дольше. В конце коммутатор полностью замыкается. Коммутатор скачет (дребезжит) между состояниями наличия и отсутствия контакта. «Когда коммутатор замыкается, два контакта фактически разъединяются и снова соединяются обычно от 10 до 100 раз за время, примерно равное 1 мс» («Искусство схемотехники», Хоровиц и Хилл, второе издание). Обычно оборудование работает быстрее, чем дребезг, что приводит к тому, что оборудование думает, что вы нажали на кнопку несколько раз. Оборудование часто является интегральной микросхемой. Следующие скриншоты иллюстрируют типовой дребезг контактов без какой-либо обработки:
Осциллограмма дребезга контактов
Каждый коммутатор обладает своими собственными характеристиками относительно дребезга. Если вы сравните два одинаковых коммутатора, есть большая вероятность того, что они будут «дребезжать» по-разному.
Я покажу вам дребезг четырех разных коммутаторов. Я меня есть две микрокнопки, 1 кнопка и 1 тумблер:
Исследуемые коммутаторы
Настройка оборудования
Все коммутаторы будут подключены одинаково (это важно, если мы собираемся сравнивать результаты). Сначала мы увидим, как коммутаторы ведут себя без обработки. Основой нашей схемы будет HCF4017BE. Это десятичный счетчик/делитель, производимый STMicroelectronics. Они больше не производят эту микросхему, так как этот тип устарел. Тем не менее, есть много других производителей, которые всё еще выпускают эту маленькую микросхему, и они часто совместимы по контактам.
Микросхема получает тактовый импульс на вывод 14, после чего загорается светодиод, подключенный к Q1. Когда принимается следующий тактовый импульс, микросхема отключает Q1 и зажигает Q2, и так далее. Когда счетчик достигает Q8 (вывод 9), он подает импульс на вывод 15, который является выводом сброса. Это означает запуск отсчета, начиная с Q0.
Наша основная схема:
Схема тестового макета (описание выше)
Сначала мы попробуем не обрабатывать дребезг совсем. Схемы подачи тактового сигнала показаны ниже:
На видео мы используем схему справа. Тактовый вывод удерживается на уровне логической единицы, импульс соответствует уровню логического нуля.
Теперь давайте посмотрим некоторые скриншоты осциллографа. Здесь мы использовали левый вариант схемы подачи импульсов: тактовый вывод удерживается на уровне логического нуля, импульс соответствует уровню логической единицы.
Для коммутатора A:
Дребезг контактов коммутатора A
Для коммутатора B:
Дребезг контактов коммутатора B
Для коммутатора C:
Дребезг контактов коммутатора C
Для коммутатора D:
Дребезг контактов коммутатора D
И один скриншот я снял для коммутатора C при использовании правой схемы подачи импульсов: тактовый вывод удерживается на уровне логической единицы, импульс соответствует уровню логического нуля.
Дребезг контактов коммутатора C (импульс соответствует логическому нулю)
Как вы можете видеть, микросхеме кажется, что было несколько нажатий на коммутатор. Хотя это и не так, поскольку на коммутатор было выполнено только одно нажатие.
Добавим керамический конденсатор:
При добавлении конденсатора мы создаем RC-цепь. RC-цепи здесь не обсуждаются.
Новые скриншоты осциллографа сильно отличаются от полученных ранее. Это показывает, что RC-цепь отфильтровывает дребезг.
Данное видео показывает, как работает схема с керамическим конденсатором 0,1 мкФ:
Для коммутатора A:
Сигнал с коммутатора A после добавления конденсатора
Для коммутатора B:
Сигнал с коммутатора B после добавления конденсатора
Для коммутатора C:
Сигнал с коммутатора C после добавления конденсатора
Для коммутатора D:
Сигнал с коммутатора D после добавления конденсатора
Для коммутатора C (импульс соответствует логическому нулю):
Сигнал с коммутатора C после добавления конденсатора (импульс соответствует логическому нулю)
Эти скриншоты говорят нам о том, что дребезг устранен, и что микросхема «видит» только одно нажатие или переключение. Это то, чего мы и хотели.
Программное подавление дребезга
При работе с микроконтроллерами мы можем справиться с дребезгом контактов по-другому, что позволит сэкономить и место под детали, и деньги. Некоторые программисты не задумываются о дребезжащих коммутаторах и просто добавляют 50 мс задержки после первого «отскока». Это заставляет микроконтроллер ждать остановку дребезга 50 мс, а затем продолжить работу программы. На самом деле это не очень хорошая практика, так как она удерживает микроконтроллер в ожидании окончания задержки.
Другой способ – использовать прерывание для обработки дребезга контактов. Имейте в виду, что прерывание может быть запущено и при нарастающем, и при спадающем фронте, а некоторые микроконтроллеры могут добавлять одно прерывание в стек. Существуют разные мнения о том, как это использовать, но прерывание, вызванное подавлением дребезга, здесь не обсуждается.
Ниже показано простое программное подавление дребезга контактов для Arduino.
Код выше был написан в Arduino IDE.
Следующая программа мигает двумя светодиодами, подключенными к PIC микроконтроллеру. Код может быть похожим на этот:
Этот пример написан MPLAB X с компилятором XC8. Микроконтроллер – это PIC 16F628A, и я использовал внутренний генератор на 4 МГц. Вам необходимо поэкспериментировать с Bouncevalue . У меня лучше всего программа работала со значением 500.
Микроконтроллер без какого-либо подавления дребезга контактов:
Это пример того, как коммутатор может «запутать» микроконтроллер. Нормального переключения светодиодов не получилось. Похоже, что при нажатии кнопки они живут своей жизнью.
Микроконтроллер с управлением подавлением дребезга контактов:
Как видите, светодиоды хорошо включаются и выключаются по нажатию кнопки.
Заключение
В данной статье мы рассмотрели, что такое дребезг контактов, как он влияет на вашу систему, и различные способы борьбы с ним. Используемые примеры очень просты, но они должны дать вам представление о том, что происходит, когда вы нажимаете на кнопку. При разработке системы вы всегда должны учитывать дребезг контактов переключателя.
На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.
А если применить RS-ТРИГГЕР на 155 серии для подавления дребезга, всегда ли получится?
Спасибо. При переводе статьи пропустил эту ошибку.
Теперь тип переменных, задействованных в подавлении дребезга, – unsigned int.
Тип «char» — однобайтный, значение 500 в него не поместится.
Программирование ПЛИС. Изучение явления «дребезг контактов» и метод избавления от него
Мы продолжаем изучение ПЛИС и языка 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 ;
NET «clk» LOC = «C9» ;
NET «led » LOC = «F12» ;
NET «led » LOC = «E12» ;
NET «led » LOC = «E11» ;
NET «led » LOC = «F11» ;
NET «led » LOC = «C11» ;
NET «led » LOC = «D11» ;
NET «led » LOC = «E9» ;
NET «led » LOC = «F9» ;
NET «btn» LOC = «K17» ;
NET «btn» PULLUP ;
Ножка K17 соответствует нижней кнопке из имеющихся:
Слово PULLUP подключает кнопку по следующей схеме (прямо внутри ПЛИС):
Часть 3. Программирование.
signal count_led : std_logic_vector ( 7 downto 0 ) ;
architecture Behavioral of drebezg_habr is
signal count_led : std_logic_vector ( 7 downto 0 ) ;
signal old_btn : std_logic ;
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 ;
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 ;
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 ;
Значение btn_wait было выбрано 0.25 секунды для того, чтобы значение count_led не прибавлялось слишком часто, пока кнопка находится в зажатом состоянии.
Еще один вариант антидребезга (даже более надежный) — прибавление count на 1 когда btn является логической единицей, и вычитание из count 1 когда btn является нулем. При этом если значение count опускается до 0 значит кнопка не нажата, либо был дребезг. Ну а если count досчитал до заветного btn_wait значит произошло нажатие =)
В качестве домашнего задания могу посоветовать дописать проект: сделайте прибавление count_led после того, как кнопка была нажата и отпущена.
Итак, мы ознакомились на практике с явлением «дребезг контактов» и научились избавляться от него. Это явление можно наблюдать не только в кнопках, тумблерах и прочих подобных вещах, но даже иногда и в различных протоколах, например RS-232.
Исходники проекта здесь. Желаю всем успехов в освоении ПЛИС!
Схемы подавления дребезга контактов
Аппаратные подавители дребезга механических контактов коммутирующих
элементов: кнопок, выключателей, герконов, энкодеров и т. п.
С таким неприятным эффектом, как «дребезг» контактов переключателя сталкивается практически любой разработчик цифровых или микропроцессорных устройств. Явление это представляет собой процесс многократного неконтролируемого замыкания и размыкания контактов в моменты переключения любого механического коммутирующего устройства. Продолжительность дребезга контактов зависит от качества переключателя и может находиться в диапазоне – от десятка до сотни миллисекунд (Рис.1).
Рис.1 Реальная форма сигнала при замыкании–отпускании переключателя
Во многих случаях корректная работа логических устройств требует подавления эффекта дребезга контактов, так как без этого возникают предпосылки для многократных ложных срабатываний элементов, например – при подаче таких сигналов на тактовые входы счётчиков.
Использование пассивных подавителей дребезга, к примеру, изображённых на Рис.2 а) и б) и им подобным, как правило, к ожидаемому результату не приводит. И хотя они и вносят некоторый вклад в дело борьбы с паразитными импульсами, но до полной победы им, как ни крути, довольно далеко.
Рис.2 а) и б) – пассивные подавители, в) – схема подавления дребезга на триггере Шмитта
Другое дело, если к пассивной цепи, изображённой на Рис.2 б), присовокупить логический элемент, представляющий собой триггер Шмитта (Рис. 2 в)).
Предпочтительно, чтобы данный элемент был выполнен по КМОП технологии (к примеру, 561ТЛ2, 74HC14N, CD40106 или что-нибудь в этом духе) и имел высокое входное сопротивление.
Поскольку, по сравнению с простыми логическими вентилями, триггер Шмитта имеет дополнительную зону нечувствительности, равную разнице между напряжениями его срабатывания и отпускания, то и эффективность подавления паразитных импульсов, сглаженных интегрирующей цепочкой R2, C1 у него окажется значительно выше. К тому же имеющаяся в нём внутренняя положительная обратная связь обуславливает крутой фронт выходного сигнала, что является важным обстоятельством для нормальной работы большинства счётчиков.
Постоянная времени τ = R2*С1 интегрирующей цепи выбирается исходя из продолжительности дребезга контактов и составляет на приведённой схеме 10 миллисекунд.
Длительность выходного импульса соответствует времени замыкания контактов, а фронт и спад импульса несколько задержаны относительно моментов замыкания и размыкания контактов.
Рис.3 Подавление дребезга на триггере Шмитта
Если факт незначительной задержки выходного импульса является нежелательным, то на помощь приходят схемы подавления дребезга на RS-триггерах (Рис.4).
Данные триггеры могут быть реализованы: как на расхожих элементах 2И-НЕ либо 2ИЛИ-НЕ, так и на готовых RS-триггерах типа К561ТР2, CD4043 и т. д.
Рис.4 Схемы подавления дребезга на RS-триггерах
Подавители дребезга, выполненные на RS-триггерах, имеют длительность, а также фронт и спад выходного импульса полностью совпадающие с сигналом, идущим с контакта коммутирующего элемента. Помимо этого, они не содержат частотозависимых элементов, что позволяет им работать с любыми переключателями независимо от продолжительности дребезга. Однако при всех своих достоинствах, имеют и серьёзное конструктивное ограничение – в виде необходимости применения кнопки или выключателя с двумя группами контактов (on-off).
Одноконтактные схемы подавления дребезга, выполненные на ждущих мультивибраторах и прочих устройствах задержки, сужения или расширения импульсов, никакой практической ценности, на мой взгляд, не имеют. По сравнению со схемой на триггере Шмитта, они содержат большее количество элементов, часто довольно капризны и, в большинстве случаев, не имеют никаких функциональных преимуществ. Поэтому и рассматривать подобные устройства в рамках этой статьи мы не будем.
Однако было бы неправильно обойти вниманием такой класс приборов, как специализированные ИМС для удаления дребезга контактов, к примеру, микросхему MC14490 (Рис.5).
Рис.5 Схема включения ИМС 6-канального подавителя дребезга MC14490
Раньше эта микросхема выпускалась фирмой «ON Semiconductor» и стоила не вполне адекватных денег, теперь же – нашими китайскими друзьями, которые с удовольствием вам её отдадут по 100 с небольшим рублей, причём сразу аж за 5 шт.
Эта микросхема содержит в одном корпусе 6 подавителей дребезга, работающих по принципу цифрового интегратора.
Согласно документации MC14490 имеет следующие характеристики:
– Защитные диоды на всех входах;
– Подтягивающие к плюсу резисторы на всех цифровых входах;
– Возможность использования внутреннего генератора или внешнего тактового сигнала;
– ТТЛ совместимые уровни входов и выходов;
– Подавление дребезга на обоих фронтах сигнала;
– Напряжение питания 3. 18В;
– Собственное потребление тока 0,1. 0,65мА (в зависимости от напряжения питания).
В документации на микросхему есть формула для расчёта ёмкости конденсатора С1, определяющей частоту внутреннего генератора, но её можно подобрать и опытным путем. Обычно номинал этого конденсатора составляет: от 50. 200 пФ для энкодеров и до 1. 10 нФ для обычных кнопок.
Если же хочется построить нечто подобное, но на микросхемах стандартной логики, то это с лёгкостью можно исполнить по схеме, приведённой на Рис.6.
Данный подавитель дребезга предполагает наличие внешнего генератора, который также легко можно реализовать на стандартных КМОП вентилях.
Причём одного внешнего генератора окажется вполне достаточным для работы практически с неограниченным количеством таких подавителей.
Рис.6 Схема подавителя дребезга на D-триггере
Кстати, по принципу действия это устройство весьма напоминает продукты программной реализации подавителей дребезга на микроконтроллере.
Источник: