Дребезг контактов, и как с ним бороться
Что такое дребезг контактов? Когда вы нажимаете на кнопку или на микропереключатель или изменяете положение тумблера, два металлических контакта замыкаются. Для пользователя может показаться, что контакт наступил мгновенно. Это не совсем правильно. Внутри коммутатора есть движущиеся части. Когда вы нажимаете на коммутатор, он вначале создает контакт между металлическими частями, но только в кратком разрезе микросекунды. Затем он делает контакт немного дольше, а затем еще немного дольше. В конце коммутатор полностью замыкается. Коммутатор скачет (дребезжит) между состояниями наличия и отсутствия контакта. «Когда коммутатор замыкается, два контакта фактически разъединяются и снова соединяются обычно от 10 до 100 раз за время, примерно равное 1 мс» («Искусство схемотехники», Хоровиц и Хилл, второе издание). Обычно оборудование работает быстрее, чем дребезг, что приводит к тому, что оборудование думает, что вы нажали на кнопку несколько раз. Оборудование часто является интегральной микросхемой. Следующие скриншоты иллюстрируют типовой дребезг контактов без какой-либо обработки:
Каждый коммутатор обладает своими собственными характеристиками относительно дребезга. Если вы сравните два одинаковых коммутатора, есть большая вероятность того, что они будут «дребезжать» по-разному.
Я покажу вам дребезг четырех разных коммутаторов. Я меня есть две микрокнопки, 1 кнопка и 1 тумблер:
Настройка оборудования
Все коммутаторы будут подключены одинаково (это важно, если мы собираемся сравнивать результаты). Сначала мы увидим, как коммутаторы ведут себя без обработки. Основой нашей схемы будет HCF4017BE. Это десятичный счетчик/делитель, производимый STMicroelectronics. Они больше не производят эту микросхему, так как этот тип устарел. Тем не менее, есть много других производителей, которые всё еще выпускают эту маленькую микросхему, и они часто совместимы по контактам.
Микросхема получает тактовый импульс на вывод 14, после чего загорается светодиод, подключенный к Q1. Когда принимается следующий тактовый импульс, микросхема отключает Q1 и зажигает Q2, и так далее. Когда счетчик достигает Q8 (вывод 9), он подает импульс на вывод 15, который является выводом сброса. Это означает запуск отсчета, начиная с Q0.
Наша основная схема:
Сначала мы попробуем не обрабатывать дребезг совсем. Схемы подачи тактового сигнала показаны ниже:
На видео мы используем схему справа. Тактовый вывод удерживается на уровне логической единицы, импульс соответствует уровню логического нуля.
Теперь давайте посмотрим некоторые скриншоты осциллографа. Здесь мы использовали левый вариант схемы подачи импульсов: тактовый вывод удерживается на уровне логического нуля, импульс соответствует уровню логической единицы.
Для коммутатора A:
Для коммутатора B:
Для коммутатора C:
Для коммутатора D:
И один скриншот я снял для коммутатора C при использовании правой схемы подачи импульсов: тактовый вывод удерживается на уровне логической единицы, импульс соответствует уровню логического нуля.
Как вы можете видеть, микросхеме кажется, что было несколько нажатий на коммутатор. Хотя это и не так, поскольку на коммутатор было выполнено только одно нажатие.
Добавим керамический конденсатор:
При добавлении конденсатора мы создаем RC-цепь. RC-цепи здесь не обсуждаются.
Новые скриншоты осциллографа сильно отличаются от полученных ранее. Это показывает, что RC-цепь отфильтровывает дребезг.
Данное видео показывает, как работает схема с керамическим конденсатором 0,1 мкФ:
Для коммутатора A:
Для коммутатора B:
Для коммутатора C:
Для коммутатора D:
Для коммутатора 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 #include #include // конфигурация #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; unsigned int BTN_press = 0; unsigned int BTN_release = 0; unsigned int 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.
Микроконтроллер без какого-либо подавления дребезга контактов:
Это пример того, как коммутатор может «запутать» микроконтроллер. Нормального переключения светодиодов не получилось. Похоже, что при нажатии кнопки они живут своей жизнью.
Микроконтроллер с управлением подавлением дребезга контактов:
Как видите, светодиоды хорошо включаются и выключаются по нажатию кнопки.
Заключение
В данной статье мы рассмотрели, что такое дребезг контактов, как он влияет на вашу систему, и различные способы борьбы с ним. Используемые примеры очень просты, но они должны дать вам представление о том, что происходит, когда вы нажимаете на кнопку. При разработке системы вы всегда должны учитывать дребезг контактов переключателя.
Схемы для устранения дребезга контактов механических переключателей.
Несмотря на широчайшее распространение полупроводниковых коммутаторов, механические переключатели по-прежнему используются в ряде приложений. Как бы ни совершенствовалась их технология, от дребезга контактов избавиться не удается. В статье рассматриваются способы свести эти проблемы к минимуму с помощью внешних компонентов.
Компания Würth Elektronik предлагает широкий ассортимент механических переключателей (см. рис. 1). Эти изделия применяются во многих приложениях для размыкания и замыкания электронных цепей.
Рис. 1. Часть ассортимента механических переключателей компании WE
Функция переключения, в основном, механическая, но многие переключатели работают как аналого-цифровой интерфейс в современных электронных схемах с четко определенными уровнями напряжения для логического нуля и логической единицы. Любой разработчик приложения, где используются тактовые или детекторные кнопки с быстро реагирующей электронной схемой, может задаться вопросом, почему она функционирует некорректно. Причина может заключаться в т. н. дребезге (вибрации) контактов. В статье рассматривается схема, позволяющая решить эту распространенную проблему.
Дребезг контактов
Механизм переключения
Как правило, считается, что контакт в переключателе является надежным и срабатывает мгновенно (см. рис. 2).
Рис. 2. Идеализированный график коммутируемого сигнала
Однако на практике все несколько иначе (см. рис. 3). В каждом положении переключателя контакт между токопроводящими участками устанавливается или прерывается с помощью подвижных механических элементов (см. рис. 4).
Рис. 3. Идеализированный график «реального» коммутируемого сигнала
Рис. 4. Конструкция тактового переключателя
Как правило, пружинные компоненты применяются в качестве средства для перевода контакта из одного состояния в другое в виде либо металлической пластины, либо винтовой пружины, у которой имеется некоторая масса и, следовательно, момент инерции. В тот момент, когда эти небольшие компоненты приводятся в движение, они с ускорением перемещаются в требуемое положение. После срабатывания некоторое время происходят многократные неконтролируемые замыкания и размыкания контактов за счет упругости пружины и деталей контактной системы; при этом электрическая цепь размыкается и замыкается, пока движение полностью не прекратится.
Таблица. Компоненты для переключения и защиты от дребезга
Компоненты | Время дребезга | |
Тактовый переключатель | ![]() |
10 мс |
Кнопочный переключатель | ![]() |
|
Детектор | ![]() |
|
Механический энкодер | ![]() |
Поскольку коэффициент затухания велик, а момент инерции мал, продолжительность этого эффекта обычно составляет всего несколько микросекунд. Силовые цепи от него не страдают, чего нельзя сказать о цифровом входе. при изменении состояния электронный сигнал имеет нестабильный или, точнее, неопределенный статус, тогда как логической иС требуется четкий сигнал определенного уровня. микроконтроллер может пропустить изменившееся состояние порта, если считает данные в неподходящий момент. таким образом, требуется обеспечить генерацию четкого выходного сигнала переключателя. мы рассмотрим схему, позволяющую устранить его дребезг, чтобы решить эту проблему.
Используемые компоненты
Время защиты от дребезга указано в паспорте изделия. Компания Würth Elektronik определяет этот параметр как время между механическим переключением компонента и полным электрическим переключением. в таблице перечислены компоненты, используемые для переключения и защиты от дребезга.
Схема устранения дребезга
Мы добавим некоторые компоненты для создания фильтра нижних частот (ФНЧ), чтобы оценить его влияние на выходной сигнал.
Добавление фильтра
Схема базового переключателя без компенсации дребезга показана на рисунке 5. Типовые значения резистора R,: Г 10 кОм; VCC = 5 В.
Рис. 5. Схема переключателя без защиты от дребезга
После нажатия переключателя возникает сигнал, который позволяет отследить эффект дребезга контактов (см. рис. 6).
Рис. 6. Выходной сигнал в отсутствие схемы защиты от дребезга при переходе с высокого на низкий уровень
Чтобы устранить дребезг в выходном сигнале, предлагается одна из самых дешевых и простых в реализации электронных схем, в которой используется RC-фильтр (см. рис. 7). Когда переключатель разомкнут, конденсатор заряжается через цепочку R1 + R2, что замедляет рост напряжения. Когда переключатель замкнут, конденсатор разряжается через R2 с контролируемой скоростью.
Рис. 7. Переключатель с базовой схемой защиты от дребезга
Если компоненты были выбраны корректно, дребезг переключателя поглощается в процессе зарядки или разрядки, благодаря чему обеспечивается плавный переход из одного состояния в другое. Для расчета номинала конденсатора и резисторов применяется формула (1), позволяющая определить постоянную времени схемы:
где Т — постоянная времени, с; R — величина сопротивления, Ом; C — величина емкости, Ф.
Постоянная времени выбирается как некое компромиссное значение, позволяющее устранить дребезг переключателя и обеспечить требуемое время отклика схемы. За одну постоянную времени напряжение повысится до 63% от своего конечного значения или упадет до 37% от этого значения. В обоих случаях оно повышается или спадает на 99% после пяти постоянных времени.
Пример расчета
— время дребезга в спецификациях: 10 мс;
— типовое значение сопротивления R1 для ограничения тока: 1 кОм;
— R2: выбираются два стандартных значения для устранения дребезга: 10 и 47 ком;
— напряжение питания: 5 в DC.
таким образом, расчет дает два значения емкости:
Предлагаются два ряда значений для этой схемы:
— решение 1: R1 = 1 кОм; R2 = 10 кОм; С1 = 1 мкФ;
— решение 2: R1 = 1 кОм; R2 = 47 кОм; С1 = 220 нФ.
Заметим, что значения сопротивления и емкости могут отличаться в зависимости от конструкции схемы заказчика.
Для обеих схем получаем характеристику, показанную на рисунке 8.
Рис. 8. Выходной сигнал при использовании схемы устранения дребезга и переходе с низкого на высокий уровень
Значение UOUT в зависимости от времени определяется следующей формулой:
Из нее следует, что при t = т величина выходного напряжения UOUT составляет около 63% входного UIN. В нашем примере величина UOUT = 63% (3,15 В) от своего конечного значения (5,0 В) через 10 мс.
Добавление диода
Чтобы контролировать время заряда и время разряда по отдельности, в приведенную выше схему добавляется диод (см. рис. 9). В результате сокращается время переключения для зарядки конденсатора с помощью R1 и D1, и становится другим время разряда, когда используется только R2, поскольку в этом случае диод блокируется.
Рис. 9. Добавление диода в схему
Добавление буфера
Как известно, нуль в цифровой логике определяется по уровню ниже некоторого напряжения(например, 0,8 В), а единица — выше (например, 2,5 В). Значения между ними не определены. Если приложение не в состоянии поддержать неопределенные значения, может потребоваться буфер с триггером Шмидта с гистерезисом. Схема с разным временем включения и выключения и дополнительным гистерезисом показана на рисунке 10. Время отклика схемы, возможно, придется согласовать с временем выборки микроконтроллера.
Рис. 10. Триггер Шмидта обеспечивает стабильные и определенные значения напряжения
Защита от переходных процессов
Если переключатель расположен далеко или на конце длинного провода, вероятно, потребуется защита от перенапряжения, электростатического разряда или других переходных процессов. В качестве защитных компонентов применяется ферритовая бусина и TVS-диод, установленные перед входной цепью (см. рис. 11).
Рис. 11. Добавление ферритовой бусины и TVS-диода для защиты от перенапряжения
При использовании механических переключателей сигналов появляется эффект дребезга, характеризующийся короткими периодами нестабильного сигнала в электронной схеме. Время дребезга переключателей Würth Elektronik достигает 10 мс, что следует учитывать при проектировании. Предложенный RC-фильтр позволяет уменьшить это явление. Фильтр можно усовершенствовать, установив дополнительные компоненты для более точного формирования сигнала и защиты от перенапряжения.
Опубликовано в журнале «Электронные Компоненты» №12, 2021 г.
Дребезг контактов: причины возникновения и способы борьбы с ним
Дребезг контактов – это паразитное явление, которое вносит проблемы преимущественно в электронных схемах. Его суть заключается в повторном многократном и ложном прерывании и подаче сигнала на вход. В результате система, которая его принимает, неверно реагирует. Давайте более подробнее рассмотрим причины дребезга контактов и способы борьбы с ним.
Определение и суть проблемы в электронике
Дребезг контактов возникает при нажатии на кнопку и переключатель, он возникает из-за реальных вибраций контактной пластины при её перемещении. Любой переключатель устроен так, что у него есть подвижный и неподвижный контакт. Как видно из названия, подвижным называется тот, что соединен с толкателем или рычагом, на который уже нажимает человек или механизм при работе устройства. Так как кнопки имеют механическое устройство, то от их качества зависит то, как точно они отрабатывают нажатия. При этом в любом случае полностью устранить явление дребезга нельзя. К чему он приводит? ‘); var s = document.createElement(‘script’); s.type = ‘text/javascript’; s.async = true; s.src = ‘ var x = document.getElementsByTagName(‘script’)[0]; x.parentNode.insertBefore(s, x); >)(); Если клавиша управляет каким-то электронным устройством с цифровым входом, например, микроконтроллера, логического элемента и пр., то его вход распознает столько нажатий, сколько было импульсов послано в результате возникновения дребезга. Пример осциллограммы дребезга контактов изображен на рисунке ниже:
Устранение эффекта
- Установка конденсаторов параллельно входу. Тогда может снижаться быстродействие реакции на нажатие при слишком большой ёмкости и неполного устранения дребезга при слишком маленькой.
- Введение триггеров Шмидта во входную цепь устройства. Более сложное решение, которое затруднительно для реализации в ходе доработки уже готового изделия, но и более технологичное и совершенное.
Если рассмотреть это явление на примере сдвигового регистра, то в этом видео наглядно показано его воздействие. После каждого нажатия кнопки должен загораться следующий светодиод.
Схема включения регистра и светодиодов на рисунке ниже:
Кнопка подключена так, как показано на схеме:
Пример осциллограммы сигнала с выраженным дребезгом:
Установив конденсатор на 1 мкФ параллельно кнопке для его подавления, получаем стабильное и точное срабатывание:
А фронт сигнала переключения, как вы можете убедиться, действительно завален, зато без лишних всплесков.
Альтернативой такому решению защиты от этого эффекта, без заваливания фронта и с большим быстродействием является использование триггера Шмидта. Типовая его схема изображена ниже:
На следующем рисунке изображены другие варианты схем на логических элементах для борьбы с дребезгом контактов:
Кроме аппаратного устранения, как было сказано, есть и программный способ решения данной проблемы. Он заключается в написании кода, смысл которого в считывании изменения сигнала, выдержки определенного времени и повторного его считывания.
Пример программного подавления дребезга контактов в Arduino IDE вы можете скачать, перейдя по ссылке: код для подавления дребезга.
Дребезжание реле
Кроме дребезга кнопок в цифровых электронных схемах также доставляет проблемы дребезг контактов в схемах управления реле. К таким схемам можно отнести сумеречное реле или различные датчики протока, а также регуляторы температуры. Когда датчик выдаёт сигнал на пороге срабатывания устройства, получается неопределенное состояние и логика схемы то включает, то отключает его. И при срабатывании реле не всегда наблюдается устойчивое удержание контактов, оно начинает как бы вибрировать, включаясь и отключаясь. На эпюре ниже наглядно изображена эта проблема на примере регулятора температуры:
Решением этой проблемы также является установка порогового элемента петлей гистерезиса в его передаточных статических характеристиках, то есть триггера Шмидта или Компаратора на операционном усилителе. На схеме ниже изображен исходный вариант с рассмотренной на графике проблемой:
А так выглядит схема с дополнением в виде задержки включения на логических элементах 2И-НЕ отечественной микросхемы К561ЛА7:
Иногда с этой же проблемой справляются с помощью установки стабилитрона в сигнальные цепи.
Аналогично дребезгу кнопок при включении реле, его контакты могут повторно несколько раз перекоммутироваться. Явление опасно тем, что в этот момент происходит зажигание и гашение дуги, что значительно снижает срок службы аппарата. Особенно часто это происходит при срабатывании реле на переменном токе.
Всё это связано с механической структурой герконов, реле и других коммутаторов. Их контакты замыкаются не моментально, а в течении долей, единиц или десятков миллисекунд. Чтобы продлить срок службы реле, ознакомьтесь со способами, которые мы описывали в статье о том, почему искрят контакты.
Также рекомендуем посмотреть хорошее видео на эту тему:
Теперь вы знаете, что такое дребезг контактов реле и какие способы борьбы с ним наиболее эффективны.
Логические микросхемы. Часть 10. Как избавиться от дребезга контактов
Использование триггера в качестве переключателя
В предыдущих частях статьи было рассказано о триггерах типа D и JK. Здесь уместно будет вспомнить о том, что эти триггеры могут работать в счетном режиме. Это означает, что с приходом на тактирующий вход (для обоих триггеров это вход С) очередного импульса состояние триггера меняется на противоположное.
Такая логика работы весьма напоминает обычную электрическую кнопку, как в настольной лампе: нажал – включено, нажал еще раз – выключено. В устройствах на цифровых микросхемах роль такой кнопки чаще всего выполняют триггеры, работающие в счетном режиме. На счетный вход подаются импульсы высокого уровня, а выходные сигналы триггера используются для управления исполнительными цепями.
Казалось бы все очень просто. Если к входу С подключить просто кнопку, соединяющую при нажатии этот вход с общим проводом, то с каждым нажатием состояние триггера будет изменяться, как и ожидается, на противоположное. Чтобы убедиться, что это не так, достаточно эту схему собрать и понажимать кнопку: в нужное положение триггер будет устанавливаться не каждый раз, а чаще после нескольких нажатий кнопки.
Состояние триггера лучше всего контролировать с помощью светодиодного индикатора, неоднократно описанного в предыдущих частях статьи, либо просто с помощью вольтметра. Почему такое происходит, почему, так нестабильно работает триггер, в чем тут причина?
Что такое дребезг контактов
Оказывается, во всем виноват дребезг контактов. Что же это такое? Любые контакты, даже самые лучшие, даже герконовые, оказывается, замыкаются не сразу. Их надежному соединению препятствует целая серия соударений, которая длится около 1 миллисекунды и даже более. То есть, если мы нажали кнопку и удерживаем ее нажатой в течение половины секунды, это вовсе не значит, что сформировался всего один импульс такой длительности. Его появлению предшествует несколько десятков, а может даже сотен импульсов.
Поступая на счетный вход триггера, каждый такой импульс переключает его в новое состояние, что полностью соответствует логике работы триггера в счетном режиме: будут посчитаны все импульсы, а результат будет соответствовать их количеству. А задача состоит в том, чтобы одно нажатие кнопки изменяло состояние триггера всего один раз.
Подобная проблема еще более заметна в том случае, когда механический контакт является датчиком числа оборотов, например в приспособлении для намотки трансформаторов, или в расходомере жидкости: каждое срабатывание контакта увеличивает состояние электронного счетчика не на единицу, как ожидалось, а вовсе на случайное число. О счетчиках рассказ будет несколько позднее, но пока просто поверьте, что это именно так, а не иначе.
Как избавиться от дребезга контактов
Выход из положения показан на рисунке 1.
Рисунок 1. Формирователь импульсов на 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 – триггер.
Подобный формирователь является типовой схемой и работает четко и безотказно. Единственным его недостатком можно считать применение кнопки с перекидным контактом. Ниже будут показаны подобные формирователи, работающие от кнопки с одним контактом.
Меры по устранению ложных срабатываний, защита от помех
На схеме можно увидеть новую деталь — конденсатор C1, установленный в цепи питания триггеров. Каково его назначение? Основная его задача это защита от помех, к которым чувствительны не только триггеры, но и все остальные микросхемы.
Если коснуться элементов монтажа металлическим предметом, то в них создадутся импульсные помехи, которые могут состояние триггеров изменить как угодно. Такие же помехи в схеме создаются при работе даже одного триггера, тем более нескольких. Эти помехи передаются по шинам питания от одних микросхем к другим и также могут вызвать ложные переключения триггеров.
Чтобы этого не произошло на шинах питания и устанавливают блокировочные конденсаторы. Практически такие конденсаторы емкостью 0,033…0,068 мкФ устанавливаются из расчета один конденсатор на каждые две-три микросхемы. Монтаж этих конденсаторов производится как можно ближе к выводам питания микросхем.
Еще одним источником ложных срабатываний микросхем могут стать неиспользуемые входные выводы. Паразитные импульсы помех будут наводиться в первую очередь именно на таких выводах. Для борьбы с ложными срабатываниями неиспользуемые входные выводы следует подключать через резисторы сопротивлением 1…10 КОм к плюсовой шине источника питания. Кроме того, если в схеме есть неиспользуемые логические элементы И – НЕ, то их входы следует соединить с общим проводом, отчего на выходе таких элементов появится логическая единица, а уже к ним подключать неиспользуемые входы триггеров.
Если в качестве источника сигнала для микросхемы используется тумблер или кнопка, то совершенно недопустима ситуация когда контакт разомкнут, а достаточно длинный провод остается «висеть в воздухе». Уж такая антенна будет принимать помехи весьма успешно. Поэтому такие проводники следует обязательно подключать к плюсовой шине питания через резистор сопротивлением 1…10 КОм.
Подавление дребезга кнопки с одной парой контактов
Использование кнопок с одной парой контактов намного проще, поэтому они применяются чаще, нежели кнопки с перекидными контактами. Несколько схем, предназначенных для подавления дребезга контактов таких кнопок, показаны на рисунке 2.
Работа этих схем основана на временных задержках, создаваемых при помощи RC – цепочек. На рисунке 2а показана схема, работа которой осуществляет задержку включения и выключения, рисунок 2в содержит схему с задержкой только включения, а на рисунке 2д показана схема с задержкой выключения. Эти схемы представляют собой одновибраторы, о которых уже было написано в одной из частей данной статьи. На рисунках 2б, 2г, 2е показаны их временные диаграммы.
Нетрудно видеть, что эти формирователи выполнены на микросхемах серии К561, которая относится к КМОП микросхемам, поэтому номиналы резисторов и конденсаторов указаны именно для таких микросхем. Эти формирователи должны использоваться в схемах, построенных на микросхемах серий К561, К564, К176 и подобных.
- Логические микросхемы. Часть 9. JK триггер
- Логические микросхемы. Часть 8. D — триггер
- Простой источник аварийного освещения
Надеюсь, что эта статья была для вас полезной. Смотрите также другие статьи в категории Электрическая энергия в быту и на производстве » Практическая электроника
Подписывайтесь на канал в Telegram про электронику для профессионалов и любителей: Практическая электроника на каждый день
Поделитесь этой статьей с друзьями: