Опубликовано

Дребезг контактов и способы борьбы с ними

Что такое триггер Шмитта

Триггер Шмитта — это электронный двухпозиционный переключающий элемент, статическая характеристика которого имеет зону неоднозначности (петлю гистерезиса). Это означает, что у данного элемента 2 порога переключения: при возрастании сигнала на входе от 0 до напряжения питания порог срабатывания будет одним (Uср), а при уменьшении от напряжения питания до 0 — другим (Uотп — отпускания). Причем Uср > Uотп. Таким образом для триггера Шмитта принципиально направление изменения сигнала. Изображение ниже иллюстрирует зависимость сигнала на выходе инвертирующего триггера Шмитта от уровня сигнала на входе.

Передаточная характеристика триггера Шмитта. Петля гистерезиса

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

Сравнение сигналов на выходе обычного инвертора и инвертирующего триггера Шмитта (нижние два графика соответственно) при подаче на вход искаженного сигнала

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

Фильтр дребезга из триггера Шмитта

Итак, наша задача — очистить сигналы энкодера от помех, вызванных дребезгом контактов. Дребезг — это многократные неконтролируемые замыкания и размыкания контактов в электромеханических коммутационных устройствах за счет упругости материалов и деталей контактной системы — некоторое время контакты «подпрыгивают» при соударениях, размыкая и замыкая электрическую цепь. В зависимости от размеров, массы, материала и конструкции контактной системы время дребезга (время от первого соприкосновения контактов до затухания механических колебаний и установления стабильного контактирования) составляет от сотен микросекунд у миниатюрных герконов до сотен миллисекунд у мощных контакторов. В нашем же случае дребезг может наблюдаться на протяжении всего времени контактирования при движении скользящего контакта в энкодере. Однако длительность возникающих ложных импульсов будет чрезмерно мала, а значит для их подавления можно использовать фильтр нижних частот. Очистив сигнал от высокачастотных помех, останется выпрямить его пологие фронты, здесь-то и пригодится триггера Шмитта.
Таким образом простой фильтр дребезга может быть собран из триггера Шмитта, и RC-цепочки. Причем резистор подходящего номинала уже присутствует в модуле энкодера (подтягивающий резистор на 10 кОм). Остается добавить конденсатор между выводом энкодера и землей. Емкость конденсатора определяется временем дребезга контактов: чем дольше дребезг, тем больше должна быть емкость. Я подобрал подходящую емкость опытным путем: конденсатор 104 позволил устранить большую часть шумов, но временами небольшие всплески все же проскакивали. После добавления второго конденсатора скачки на вход триггера Шмитта уже не проходили, т.е. мне хватило емкости 0.2 мкФ. Можно было бы использовать конденсатор с кодом 224 на 0.22 мкФ, у меня таких не нашлось. Касаемо используемого триггера: в стандартные серии цифровых микросхем входят триггеры Шмитта, представляющие собой инверторы (ТЛ2 — 6 инверторов), элементы 2И-НЕ (ТЛ3 — 4 элемента) и элементы 4И-НЕ (ТЛ1 — 2 элемента). Поэтому в схеме используется инвертирующий триггер Шмитта (я использую микросхему SN74HC14N, аналог отечественной К561ТЛ2).
В приведенной схеме фильтра сигнал на входе триггера будет нарастать постепенно, пока заряжается конденсатор. Но при замыкании контакта конденсатор будет быстро разряжаться через него. Если требуется обеспечить плавность затухания сигнала, то в схему добавляется второй резистор между кнопкой и конденсатором. В моем случае это не требуется.
Для проверки работы фильтра я подготовил стенд из мотора с редуктором и энкодера, т.к. планирую сравнить разные способы устранения дребезга. Стенд поможет сравнить их при одинаковых условиях. Итак, ниже представлен результат использования RC-цепочки с триггером Шмитта для подавления дребезга энкодера. Напоминаю, что энкодер имеет 2 сигнальных вывода, поэтому на осциллограммах показаны 2 сигнала, для каждого используется свой фильтр дребезга.

Искаженный дребезгом сигнал на выводах энкодера

Сигнал, сглаженный RC-цепочкой

Сигнал, восстановленный триггером Шмитта

Последний скриншот подтверждает, что фильтр справляется со своей задачей на отлично. При увеличении скорости вращения ручки энкодера сбоев также не наблюдалось. Теперь такой сигнал можно подавать на вход Ардуино и использовать для генерации прерываний, о чем речь пойдет в следующей статье.
Рекомендую также почитать следующие публикации про подавление дребезга:
Устранение дребезга контактов. Часть 2 — микросхема MC14490
Устранение дребезга контактов. Часть 3 — микросхемы MAX6816/MAX6817/MAX6818

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Включение-отключение нагрузки одной кнопкой
Дата: 27.01.2012
Раздел: Электроника

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

Рис.1. Схема переключателя на D-триггере.
На Рис.1. использован один из 2-х триггеров, находящихся в корпусе микросхемы CD4013 (отечественный аналог К561ТМ2).
Выход триггера управляет на первом рисунке полевым, а на втором — биполярным транзистором, который включает или отключает нагрузку. Цепочка из параллельных резистора и конденсатора служит для подавления дребезга контактов кнопки переключения. Вторая схема, фактически отличается только антидребезговой цепочкой. Верхние выводы резисторов во второй схеме подключены к плюсу питания.
Схема 2.
использует схему генератора на таймере NE555 в качестве переключателя.

Рис.2. Схема переключателя на таймере.
Как видно, обычную схему генератора, состоящую из таймера и RC-цепочки R4,C1, пущенной с его выхода на вход, дополнили двумя резисторами R2,R3 и кнопкой S1. Без этих дополнительных резисторов при замыкании кнопки S1 таймер бы постоянно генерировал меандр на своем выходе, включая и выключая нагрузку с высокой частотой. Резистивный же делитель, являясь значительно более низкоомным, чем R4, просто «задавливает» колебания, не позволяя проходить сигналу с выхода таймера на вход.
Однако, т.к. кнопка S1 в нормальном состоянии разомкнута, то напряжение с выхода таймера зарядит конденсатор С1 до напряжения питания или земли. При подключении же ко входу таймера через кнопку S1, конденсатор не может мгновенно разрядиться через низкоомные R2 или R3, и на входе таймера какое-то время присутствует напряжение, достаточное для его переключения в противоположное текущему состояние.
Таймер управляет в данной схеме не полевым, а биполярным транзистором, который включает или отключает обычное механическое реле. Естественно, биполярный транзистор может быть заменен на полевой.
Вообще говоря, вместо таймера можно использовать любой инвертор с гистерезисом на входе. Например, тот же триггер Шмитта 74HC14.
Схема 3.
Следующая схема построена полностью на дискретных элементах. (источник в Интернете уже найти не могу)

Рис.3. Схема на дискретных элементах.
Схема работает следующим образом. При подаче питания ёмкость затвора транзистора VT2 разряжена и, следовательно, транзистор закрыт, поэтому напряжение на его выходе равно нулю. Транзистор VT3 при этом также закрыт. В результате, ключ VT2 поддерживается в закрытом состоянии, т.к. его затвор соединен с истоком через R1.
При кратковременном нажатии на кнопку ON/OFF, затвор ключа VT2 подключается к земле через конденсатор С1, который разряжен, т.е. напряжение на нём равно нулю. Ключ при этом открывается, т.е. на его стоке (Out2) появляется напряжение равное питанию Upit. Это напряжение открывает транзистор VT3, который подключает затвор ключа VT2 к земле через резистор R2. Если теперь отпустить кнопку, то это новое состояние будет сохранено, т.к. все транзисторы открыты.
При повторном нажатии на кнопку, напряжение с конденсатора С1, равное Upit, т.к. он заряжен через резистор R3, подается на затвор ключа VT2, закрывая его. При этом тут же закрывается и VT3 и уже не может поддерживать ключ в открытым. Всё, схема зафиксировалась в закрытом состоянии. Конденсатор постепенно разряжается через R3, R4, R5 на землю до нуля.
У данной схемы есть несколько особенностей, которые надо учесть при её повторении.
1. Схема корректно работает только с резистивной нагрузкой по выходу Out2.
Представим, на выходе 2 подключен электролитический конденсатор приличной ёмкости. Мы закрываем кнопкой ключ VT2, при этом должен бы закрыться и VT3, чтобы зафиксировать отключение, но этого не происходит до тех пор, пока электролит не разрядится. Т.е. схема будет отключаться только после его разряда.
Чтобы этого не случилось, параллельно управляющему ключу VT2 подключен основной переключающий полевик VT1 (Out1), который уже и управляет мощной нагрузкой, уже неважно, ёмкостной или резистивной.
2. Второй особенностью, которую надо учесть, та, что сопротивления резисторов в цепочке R3…R5 должны быть подобраны таким образом, чтобы VT3 открывался через R4,R5 и не мог открыться через делитель, где в верхнем плече будет R3+R4, а в нижнем R5. Т.е. сопротивление R3 должно быть достаточно велико (на схеме стоит 33К, но лучше 100К…1М).
Величину ёмкости С1 выбирают, как минимум, раз в десять большей ёмкостей затворов полевых ключей, чтобы они не влияли на работу схемы.
Похожую схему можно собрать на полевых транзисторах. .

Рис.4. Схема на дискретных полевиках.
Особенности её те же, что и на биполярных, т.е. хорошая работа только на активную нагрузку. Для иных нагрузок лучше ставить параллельный мощный ключ для Q1, а затвор Q2 соединять с землёй через резистор, много меньшего сопротивления, чем R3, чтобы заряд ёмкости С1 не влиял на работу схемы после отключения.
———————————-

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

Теория

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

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

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

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

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

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

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

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

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

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

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

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

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

Видео:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Программное подавление дребезга * * При каждом переходе от LOW к HIGH или от HIGH к LOW * выполняется подавление дребезга во входном сигнале * путем выборки по нескольким считываниям в течение * нескольких миллисекунд. Входной сигнал не считается * устоявшимся на уровне LOW или HIGH до тех пор, пока * не будет считан по крайней мере в течение * «debounce_count» (10) миллисекунд в новом состоянии. * * Примечания: * Отрегулируйте значение debounce_count, чтобы * отобразить время, в течение которого входной * сигнал может дребезжать, прежде чем перейдет * в устойчивое состояние. * */ int inPin = 7; // номер входного вывода int outPin = 13; // номер выходного вывода int counter = 0; // сколько раз мы должны получить новое значение int reading; // текущее значение, прочитанное с входного вывода int current_state = LOW; // входное значение, полученное после подавления дребезга // следующая переменная long, потому что время, измеренное в миллисекундах, // быстро станет числом, большим, чем может храниться в int. long time = 0; // время последней выборки входного вывода int debounce_count = 10; // количество миллисекунд/выборок для решения, что сигнал на входе принял устойчивое состояние void setup() { pinMode(inPin, INPUT); pinMode(outPin, OUTPUT); digitalWrite(outPin, current_state); // установить выход светодиода в начальное состояние } void loop() { // Если мы перешли к следующей миллисекунде if(millis() != time) { reading = digitalRead(inPin); if(reading == current_state && counter > 0) { counter—; } if(reading != current_state) { counter++; } // Если вход показывает одно значение достаточно долго, давайте переключим его if(counter >= debounce_count) { counter = 0; current_state = reading; digitalWrite(outPin, current_state); } time = millis(); } }

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

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

// включения #include <stdio.h> #include <stdlib.h> #include <xc.h> // конфигурация #pragma config FOSC = INTOSCIO // Биты выбора генератора (INTOSC генератор: I/O функция на выводе RA6/OSC2/CLKOUT, I/O функция на выводе RA7/OSC1/CLKIN) #pragma config WDTE = OFF // Бит включения сторожевого таймера (WDT выключен) #pragma config PWRTE = OFF // Бит включения таймера включения (PWRT выключен) #pragma config MCLRE = ON // Бит выбора функции вывода RA5/MCLR/VPP (функция вывода RA5/MCLR/VPP — это is MCLR) #pragma config BOREN = ON // Бит включения обнаружения просадки питания (BOD включен) #pragma config LVP = ON // Бит включения низковольтного программирования (функция вывода RB4/PGM — это PGM, низковольтное программирование включено) #pragma config CPD = OFF // Бит защиты данных памяти eeprom (защита данных памяти eeprom выключена) #pragma config CP = OFF // Бит защиты кода Flash памяти программ (защита кода выключена) // Определения #define _XTAL_FREQ 4000000 #define LED1 PORTBbits.RB3 #define LED2 PORTBbits.RB2 #define BTN PORTBbits.RB5 // Переменные char BTN_pressed = 0; char BTN_press = 0; char BTN_release = 0; char Bouncevalue = 500; // Основная программа int main(int argc, char** argv) { // Компараторы выключены CMCON = 0x07; // Направления портов, RB5 вход, остальные — выходы TRISA = 0b00000000; TRISB = 0b00100000; // Состояние портов, на всех лог. 0 PORTA = 0b00000000; PORTB = 0b00000000; // Начинаем с включенным (лог. 1) LED1 и выключенным (лог. 0) LED2 LED1 = 1; LED2 = 0; while (1) { // Если кнопка BTN нажата if (BTN == 1) { // Дребезг началсь, поэтому увеличим BTN_press на 1 при каждом отскоке к высокому логическому уровню BTN_press++; // «сбросить» BTN_release BTN_release = 0; // Если отскоков столько, что BTN_press больше Bouncevalue, // кнопка должно быть нажата if (BTN_press > Bouncevalue) { // Это первоначальное значение BTN_pressed. // Если программа дошла до этого места, кнопка должно быть нажата if (BTN_pressed == 0) { // Поменять состояния светодиодов LED1 ^= 1; LED2 ^= 1; // Устанавливаем BTN_pressed в 1, убеждаясь что мы // не попадем снова в этот блок кода BTN_pressed = 1; } // Светодиоды переключены, установить BTN_press в 0, чтобы мы могли снова войти // в блок переключающего кода BTN_press = 0; } } else { // Увеличить «низкий уровень» на 1 для подавления дребезга BTN_release++; BTN_press = 0; // Если BTN_release больше Bouncevalue, то кнопка у нас не нажата if (BTN_release > Bouncevalue) { BTN_pressed = 0; BTN_release = 0; } } } return (EXIT_SUCCESS); }

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

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

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

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

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

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

Сохранить или поделиться

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).

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

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

Для термина «дребезг» см. также другие значения. Осциллограмма напряжения в цепи при замыкании механического контакта. Нижний уровень напряжения на осциллограмме соответствует разомкнутому состоянию контактной пары. Высокий уровень — замкнутому. Затянутые фронты при размыканиях обусловлены паразитной входной электрической ёмкостью осциллографа и его кабеля.

Дре́безг конта́ктов — явление, происходящее в электромеханических коммутационных устройствах и аппаратах (кнопках, реле, герконах, переключателях, контакторах, магнитных пускателях и др.), длящееся некоторое время после замыкания электрических контактов. После замыкания происходят многократные неконтролируемые замыкания и размыкания контактов за счет упругости материалов и деталей контактной системы — некоторое время контакты отскакивают друг от друга при соударениях, размыкая и замыкая электрическую цепь.

В зависимости от размеров, массы, материала и конструкции контактной системы время дребезга (время от первого соприкосновения контактов до затухания механических колебаний и установления стабильного контактирования) составляет 0,5—2 мс у миниатюрных герконов и до сотен миллисекунд у мощных контакторов.

При размыкании электромеханических контактов дребезг не наблюдается.

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

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

Дребезг контактов — почти всегда нежелателен в технических устройствах. Так, например, при коммутации мощных электрических цепей происходит многократное зажигание и гашение электрической дуги или искрение между контактами, что вызывает повышенный износ контактов.

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

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

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

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

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

Другой конструктивный способ исключения дребезга в слаботочных электромеханических ключах — применение смоченных ртутью контактных пар. В этих ключах электрическая цепь не разрывается во время «подпрыгивания» контактов при дребезге, так как при механическом размыкании твёрдых контактов между ними образуются перемычки из жидкой ртути.

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

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

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

При программном формировании очищенного от дребезга контакта сигнала наибольшее распространение получили три из них:

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

> См. также

  • Геркон
  • Гистерезис
  • Реле
  • Байпас
Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *