Программный метод
Для устранения дребезгов в различных вычислительных машинах используют программную обработку сигналов. При этом для тактирования берётся сигнал не непосредственно от контакта, а связанная с ним однобитная булевая переменная, сформированная специальной программой:
- путём временной задержки сигнала, на период вероятного дребезга контактов;
- методом многократного считывания состояния контактов, на заданном временном интервале. Программа считает цепь замкнутой, если на этом промежутке времени наступает период устойчивого замыкания контакта;
- используя алгоритм подсчёта, при котором учитывается количество совпадающих значений сигналов замкнутости в определённый промежуток времени (в пределах от 10 до 100 мкс). Если программой будет замечено заданное число совпадений состояния замкнутости, она посчитает контакт устойчиво замкнутым и пропустит сигнал.
Сигнал, полученный программным способом, довольно надёжный и устойчивый. К недостаткам такой схемы подавления дребезга можно отнести разве что небольшую задержку сигнала, которая не превышает 0,1 с. Этот промежуток времени настолько мал, что им можно пренебречь во многих случаях. Обычно палец человека задерживается на клавише до момента отпускания кнопки свыше 0,2 с.
Программированные устройства получают сигналы управления с кнопок и передают идеальные импульсы на устройства-потребители, работающие на цифровых микросхемах. В результате отсечения программой сигналов дребезга, на входы микросхемы поступают только качественные импульсы. Это обеспечивает стабильную работу цифровых устройств, противостоит ложному срабатыванию логических дешифраторов, независимо от уровня сигнала и его качества.
Программируемое устройство для устранения дребезга
Схема водосчетчика на ESP8266 (Wemos D1 mini)
Схема и пример печатной платы в проекте EasyEDA. Оставил I2C входы незанятыми для подключения индикатора.
Схема водосчетчика на Wemos D1 mini (ESP8266) с аппаратным устранением дребезга контактов на триггере Шмитта
Схему сделал на Wemos breadboard.
Монтажная плата shield водосчетчика на Wemos D1 mini (ESP8266) с аппаратным устранением дребезга контактов на триггере Шмитта
Пример печатной платы сформированный автотрассировкой в EasyEDA.
Печатная плата shield водосчетчика на Wemos D1 mini (ESP8266) с аппаратным устранением дребезга контактов на триггере Шмитта
Способы устранения нежелательного влияния дребезга
Дребезг принципиально невозможно устранить или снизить, не изменяя механическую конструкцию контактной системы. Некоторые типы контактных систем, например, ползункового типа практически не имеют дребезга.
Другой конструктивный способ исключения дребезга в слаботочных электромеханических ключах — применение смоченных ртутью контактных пар. В этих ключах электрическая цепь не разрывается во время «подпрыгивания» контактов при дребезге, так как при механическом размыкании твёрдых контактов между ними образуются перемычки из жидкой ртути.
В силовых выключателях, реле, для снижения коммутационного износа контактов часто применяют искрогасящие цепочки.
При управлении критичными к дребезгу входами цифровых устройств используют специальные электронные схемы пример с триггером на рисунке или другого типа: сигнал от контакта подаётся через ФНЧ в простейшем случае — RC-цепочку на электронную схему с передаточной статической характеристикой, имеющей петлю гистерезиса например, триггер Шмитта, и уже выход этого устройства используют для тактирования цифрового устройства.
В вычислительных, например, микропроцессорных системах подавление дребезга контактов обычно производят программным способом. При этом в качестве тактирующего сигнала используется не сам сигнал от контакта с дребезгом, а некоторая связанная с ним специально сформированная однобитная булевая переменная.
При программном формировании очищенного от дребезга контакта сигнала наибольшее распространение получили три из них:
- Методом подсчёта времени устойчивого состояния — программа в течение заданного времени многократно считывает состояние контакта. Если в течение заданного времени не обнаружено ни одного изменения состояния на противоположное, то контакт считается устойчиво замкнутым. В противном случае, если было обнаружено изменение состояния в течение заданного времени, то подсчёт времени прерывается или продолжается, но с установкой флага или подсчётом количества изменений состояния для оценки физического состояния механических контактов и контакт считается разомкнутым или с неустойчивым состоянием если такая информация используется в программе.
- Методом подсчёта числа совпадающих значений сигнала замкнутости — программа многократно считывает состояние контакта, и, если последовало определённое количество подтверждений замкнутости в течение заданного промежутка времени определяется экспериментально и выбирается в пределах от 10 до 100, контакт считается устойчиво замкнутым.
- Путём установки временной задержки — программа, обнаружив замкнутое состояния контакта, игнорирует его состояние на время, заведомо большее длительности дребезга, и спустя это время снова проверяет состояние контакта. Если после этого времени состояние контакта замкнутое, то соответствующая переменная меняет значение.
Схема управления двигателем
На данную публикацию меня подтолкнула давняя проблема, которая более шести лет была законсервирована для меня и связана со стабильностью работы терморегуляторов для инкубаторов в основном бытовых и фермерских вместимостью до яиц. Изначально я ее не усек сразу при лабораторных испытаниях, она всплыла только при эксплуатации на реальном объекте. Временно от этой проблемы я ушел, применив микроконтроллеры со специально написанными программами, которые сглаживали проблему. Но очень много заказчиков хотели боле дешевый и простой терморегулятор, и мне пришлось вернуться к аналоговым терморегуляторам. В этом году провел целый ряд испытаний и экспериментов, результаты которых легли в основу своеобразного отчета за проделанную работу. Что из этого получилось, судите сами. Дребезг в коммутации нагревателя инкубатора Весь сыр-бор загорелся еще 6 лет назад по одной банальной причине.
вия стали все более вытеснять микросхемы ТТЛ, оставляя за ними схемо технику .. В схемных методах борьбы с дребезгом контактов использу ние кода синхросигнала на выходе обнаруживается компаратором и синхро.
Что такое дребезг и откуда он берется?
Любой механический контакт не идеален. Поверхность контактов может быть покрыта пленкой окислов или загрязнений (не видимой глазу). Контакты упругие и в момент соприкосновения пружинят и отскакивают друг от друга несколько раз, пока окончательно не соприкоснутся. Это не все, но, пожалуй, основные причины возникновения дребезга.
Проявление дребезга контактов проиллюстрирую следующим, очень простым, примером нажатия и отпускания кнопки
Здесь Sw это кнопка. Хорошо видно, что дребезг контактов появляется и при замыкании, и при размыкании контактов кнопки. Более того, переходное сопротивление контактов может изменяться в зависимости от силы нажатия.
В механических переключателях применяются механические же способы уменьшения дребезга контактов. Но полностью решить проблему они не могут. Наиболее часто применяют так называемый «механизм мгновенного действия». Вот как этот механизм может выглядеть
Аналогичные функции имеет выпуклая пластинка в тактовых (на самом деле, тактильных) кнопках. Однако, как я уже сказал, подобные решения позволяют уменьшить дребезг, но не устраняют его полностью. При этом, в процессе эксплуатации кнопки «стареют». Контакты изнашиваются и загрязняются, а дребезг и переходное сопротивление возрастают.
Время и характер дребезга контактов очень сильно зависят о конкретного механического переключателя (размеры, конструкция, назначение) и степени его износа (время эксплуатации). Обычно, время дребезга составляет единицы, реже, десятки миллисекунд. Но может достигать и сотен миллисекунд для больших переключателей.
Как исключить дребезг контактов кнопки
Чтобы избежать дребезга контактов есть несколько способов: воспользоваться готовой библиотекой Bounce.h, гасить дребезги аппаратно или самостоятельно описать в коде проверку. Аппаратно – это слишком усложнит схему. Использовать библиотеку – слишком просто, не интересно и придется потратить какое-то место в памяти микроконтроллера под библиотеку. А вот реализовать самостоятельную проверку, это, на мой взгляд, идеальное решение. Для отсекания дребезг контактов кнопки достаточно небольшой задержки в 5-7 миллисекунд, поскольку дребезг происходит на очень коротком промежутке времени. Алгоритм следующий: запоминаем старое состояние кнопки, и при каждом опросе состояния кнопки, сверяем текущее и новое значения. Если они отличаются, то ждем 5 миллисекунд и проверяем положение кнопки еще раз. Ниже приведен код с подробными комментариями:
// пин светодиода int ledPin = 4; boolean ledOn = false; // состояние светодиода // пин кнопки int btn_1 = 2; boolean lastBtn_1 = false; // предыдущее состояние кнопки boolean currentBtn_1 = false; // текущее состояние кнопки void setup() { // режимы работы пинов pinMode (btn_1, INPUT); pinMode (ledPin, OUTPUT); } void loop() { // получение состояния кнопки currentBtn_1 = isBtnStatus(lastBtn_1); // если кнопка была нажата 5 миллисекунд и более if (lastBtn_1 == false && currentBtn_1 == true) { // меняем состояние светодиода ledOn = !ledOn; } // сохраняем состояние кнопки lastBtn_1 = currentBtn_1; // включаем или выключаем светодиод digitalWrite (ledPin, ledOn); } // функция для определения состояния кнопки boolean isBtnStatus(boolean last) { // считываем состояние кнопки boolean current = digitalRead(btn_1); // сравниваем текущее состояние кнопки со старым if (last != current) { // ждем 5 миллисекунд delay(5); // считываем состояние кнопки еще раз current = digitalRead(btn_1); } // возвращаем состояние кнопки return current; }
Программа водосчетчика для ESP8266
//int LED_PIN = 2; //D4 int COLD_WATER_PULSE_PIN = 12; //D6 int HOT_WATER_PULSE_PIN = 13; //D7 4; //D2 int cold_water_counter = 0; int hot_water_counter = 0; void setup() { Serial.begin(9600); pinMode(COLD_WATER_PULSE_PIN, INPUT); //Pullup internal resister pinMode(HOT_WATER_PULSE_PIN, INPUT); //Pullup internal resister //pinMode(LED_PIN, OUTPUT); attachInterrupt(digitalPinToInterrupt(COLD_WATER_PULSE_PIN), triggerColdWater, RISING); attachInterrupt(digitalPinToInterrupt(HOT_WATER_PULSE_PIN), triggerHotWater, RISING); } void loop() { //int state = digitalRead(HOT_WATER_PULSE_PIN); //Serial.println(«State: » + (String)(state)); //delay(1000); //digitalWrite(LED_PIN, !state ); } void triggerColdWater() { cold_water_counter++; Serial.println(«Cold water consumption: » + (String)(cold_water_counter*10) + » l.»); } void triggerHotWater() { hot_water_counter++; Serial.println(«Hot water consumption: » + (String)(hot_water_counter*10) + » l.»); }
Причины дребезга контактов
На самом деле, данное явление встречается достаточно часто и является крайне пугающим и неприятным для начинающих ардуинщиков, которые всё ещё не знают, как с ним бороться, и что это вообще такое. С этим «багом» система может работать вполне исправно, вырубаясь лишь на короткие промежутки времени, но именно эти отключения и являются основной причиной недоумения новичков и множества проблем, поэтому справиться с проблемой стараются как можно быстрее.
Чаще всего с дребезгом сталкиваются при подключении кнопки, но почему так происходит? Вот пример при котором это будет:
Кнопка – это один из видов дополнительных модулей под Ардуино, служащих для ввода информации. В основе работы такого механизма лежит простой алгоритм работы – вы надавливаете на механический переключатель, он смыкает контакты, лежащие под оболочкой, и запускается какой-нибудь скрипт. Таким образом, при помощи давления, которое формируется при нажатии, происходит схождение или расхождение металлических пластин, которые и выступают наиболее популярными триггерами.
Программисту остается лишь написать код, который будет как-то засекать данное событие и выполнять определённые действия.
Пример программного решения проблемы:
Алгоритм работы казался бы простым, но всегда стоит помнить, что идеализированные системы не применимы на практике, и на той же практике вам приходится сталкиваться с различными их недочетами, как серьезными, так и мелкими, например, отсутствием гладких поверхностей, неровностями на контактах и, для более продвинутых, паразитной емкостью.
Соответственно, в реальности контакты соприкасаются не моментально, из-за недочетов конструкции и на короткий промежуток времени на границах пластин меняется сопротивление, вместе с взаимной емкостью.
Всё это приводит к разнообразным изменениям уровня тока и напряжения, и вместо идеальной диаграммы в виде равнобедренной прямоугольной трапеции, мы получаем промежуток из максимумов и минимумов, прежде, чем система уравновесится. Все эти процессы называются в электротехнике переходными, и, зачастую, просто незаметны для обывателя. Простейшим примером будет включение света в комнате, ведь лампа накаливания разогревается и меняет свою яркость не моментально. Но наш мозг не способен зарегистрировать всё это сам по себе.
Однако, когда мы сталкиваемся с системами, способными фиксировать состояние объектов вплоть до миллисекунды, все эти процессы становятся заметными и крайне проблемными. А всё дело в том, что каждая строчка кода, которую вы прописываете при программировании системы, каким-то образом должна учитывать и обрабатывать все сигналы, в том числе и тот самый пресловутый «дребезг контактов».
Сделать это не так легко, а неприспособленный код, хоть и скомпилируется, но будет вести себя непредсказуемо, что станет кошмаром для любого инженера. Мы разобрались в причинах, но какие же ошибки нам стоит ожидать из-за дребезга?
Борьба с дребезгом кнопки с помощью библиотеки Ардуино
Мы поняли, что проблема чисто аппаратная, но, как ни парадоксально, со стороны «железа» её сложно исправить. Вы же не можете лично под микроскопом отполировать контакты, да ещё и просить пользователя нажимать на кнопку лишь с одной силой и на постоянной основе.
Поэтому нам придется хитрить со стороны кода и пытаться каким-то образом вписать в обработчик событий этот непростой процесс. А так как мы уже знаем природу этого явления, то примерно представляем, как его обойти или хотя бы постараться минимизировать нагрузку на систему в этот момент.
А всё на самом деле просто, ведь перед нами стоит такой перечень условий:
- На срок до 10-100 мС, система пребывает в нестабильном состоянии и может выдавать ошибки.
- Далее идет срок от 1 до 2-ух секунд, что в 10 раз больше от предыдущего, пока кнопку нажимают.
- И вновь, под конец, 10-100 мС, длится дребезг.
Все, кто работал с многопоточностью на Си, уже заприметили очевидные триггеры, от которых мы и будем отталкиваться. Дело в том, что для предотвращения проблем по программной части нам достаточно выдержать тишину на каком-то промежутке времени, пока дребезг не пройдет, то есть достаточно воспользоваться уже готовой функцией delay().
Теория
Что такое дребезг контактов? Когда вы нажимаете на кнопку или на микропереключатель или изменяете положение тумблера, два металлических контакта замыкаются. Для пользователя может показаться, что контакт наступил мгновенно. Это не совсем правильно. Внутри коммутатора есть движущиеся части. Когда вы нажимаете на коммутатор, он вначале создает контакт между металлическими частями, но только в кратком разрезе микросекунды. Затем он делает контакт немного дольше, а затем еще немного дольше. В конце коммутатор полностью замыкается. Коммутатор скачет (дребезжит) между состояниями наличия и отсутствия контакта. «Когда коммутатор замыкается, два контакта фактически разъединяются и снова соединяются обычно от 10 до 100 раз за время, примерно равное 1 мс» («Искусство схемотехники», Хоровиц и Хилл, второе издание). Обычно оборудование работает быстрее, чем дребезг, что приводит к тому, что оборудование думает, что вы нажали на кнопку несколько раз. Оборудование часто является интегральной микросхемой. Следующие скриншоты иллюстрируют типовой дребезг контактов без какой-либо обработки:
Осциллограмма дребезга контактов
Каждый коммутатор обладает своими собственными характеристиками относительно дребезга. Если вы сравните два одинаковых коммутатора, есть большая вероятность того, что они будут «дребезжать» по-разному.
Я покажу вам дребезг четырех разных коммутаторов. Я меня есть две микрокнопки, 1 кнопка и 1 тумблер:
Исследуемые коммутаторы
Что такое дребезг контактов?
В конструкциях всех электромеханических устройств, предназначенных для замыкания-размыкания цепей, существует одна или несколько контактных пар. С их помощью происходит коммутация соответствующих электрических компонентов. Существенным недостатком электромеханических контактов являются произвольные неконтролируемые многократные повторы коммутации, вследствие упругости элементов контактной системы. Это явление получило название – дребезг контактов, а борьбу с ним ведут практически с того момента когда появились первые элементы автоматизированных систем.
Давайте разберёмся, какие физические факторы вызывают дребезжание и почему при этом возникают негативные последствия.
Причины возникновения
При взаимодействии упругих тел возникает деформация. Сила упругости возвращает первоначальную форму деформированного предмета, в результате чего он получает некий импульс движения. Иллюстрацией может служить металлический шарик, падающий на стальную плиту. Сила упругости возвращает его в положение, близкое к изначальному, откуда шарик снова падает на плиту и процесс повторяется. Происходит колебательное движение с затухающей амплитудой.
Аналогичные колебания происходят при соприкосновении твердых контактов, с той лишь разницей, что вместо силы тяжести на них действует упругость пружины или пластины. Амплитуда колебаний подвижных контактов, естественно, очень незначительная, но её вполне достаточно для провоцирования серии процессов кратковременного размыкания цепи. Результатом колебаний являются импульсы, в промежутке после нажатия и следующие сразу за отпусканием кнопки.
Разницу между идеальной и реальной формой импульсов видно на рис. 1.
Рисунок 1. Сравнение идеального импульса с реальным
Как видно из рисунка идеальным является сигнал с одним прямоугольным импульсом. На практике всё выглядит иначе. Дребезг изменяет осциллограмму сигнала. Определённые коррективы вносит искрение. Форма импульсов на рисунке сильно приукрашена. В реальной ситуации осциллограмма выглядит более потрёпанной.
Частота и количество касаний контактов зависит:
- от свойств компонентов коммутирующего узла;
- уровня напряжения на обмотках реле;
- от упругости пружины и некоторых других факторов.
Дребезг наблюдается и во время размыкания контактов. Обычно при механическом размыкании контакты меньше дребезжат.
На рисунке 2 наглядно изображена осциллограмма напряжения в результате коммутации электрического тока вследствие нажатия на кнопку.
Рисунок 2. Осциллограмма коммутационного тока
На осциллограмме видно серии импульсов, характеризующих процесс дребезга.
Вредное влияние дребезга
Чтобы понять негативные последствия от дребезга, рассмотрим процессы, возникающие при коммутации слабых и мощных электрических цепей. Как только расстояние между контактами оказывается достаточным для зажигания электрической дуги, между ними возникает разряд, который разрушает соприкасающиеся поверхности. Искрение, возникающее при механическом контакте, обычно имеет небольшую разрушающую силу. Но электрическая дуга большой мощности вызывает повышенный износ.
Слабое искрение также приводит к явлению износа контактов, хотя оно не такое разрушительное как при зажигании мощной дуги. В ряде случаев таким износом можно пренебречь. Например, для бытовых выключателей освещения проблемой дребезга никто не занимается, так как он почти не влияет на работу осветительных приборов. Во всяком случае, потребители не замечают последствий такого явления.
Цифровая электроника воспринимает их за чередование сигналов, состоящих из нулей и единиц. Устройствами считываются ложные коды, вызванные дребезгом при нажатиях кнопки, что приводит к сбоям в работе. Поэтому устранения дребезга является важнейшей задачей, которую приходится решать многим конструкторам и схемотехникам.
Что такое кнопка?
По большому счету, вопрос не корректен. Кнопка это механический переключатель, точнее, лишь одна из его разновидностей. Поэтому правильнее говорить о работе с механическими переключателями используемыми для взаимодействия с оператором (человеком) или в качестве механических датчиков различных систем автоматики. Однако, для краткости, я буду говорить именно «кнопка». Некоторые, далеко не все, примеры таких «кнопок» приведены ниже.
Может возникнуть вопрос, а переключатель то как сюда попал? Переключатель может быть подключен к контроллеру и управлять, например, режимами работы. В такой ситуации он эквивалентен кнопке с переключающим контактом, но с «памятью состояния», то есть, его не надо держать нажатым.
Датчик движения HC-SR501 и его применение
Микропроцессорные устройства релейной защиты , автоматики или АСУ ТП электрических станций невозможно реализовать без модулей дискретных входов и выходов , от которых напрямую зависит взаимодействие оборудования и надежность всей системы в целом. Подписаться на получение уведомлений о публикации новых статей на тему ПЛК. Микропроцессорные устройства релейной защиты и автоматики давно не являются экзотикой и активно внедряются при строительстве или реконструкции объектов энергетики. Архитектура таких устройств в точности повторяет архитектуру программируемых логических контроллеров ПЛК , коими они, по сути, и являются.
Причины возникновения искр и дуги
Прежде чем рассмотреть, почему искрят контакты, разберемся в основных понятиях. Коммутационный аппарат и его контактная система должны обеспечивать надежное соединение с возможностью его разрыва в любой момент. Контакты состоят из двух электрических пластин, которые в замкнутом положении должны быть надежно прижаты друг к другу.
Дуга возникает при коммутации индуктивных цепей. К таким относятся различные электродвигатели и соленоиды, но стоит помнить, что даже прямой отрезок провода имеет определенную индуктивность, и чем он длиннее — тем она больше. При этом, ток в индуктивности моментально прекратится не может — это описано в законах коммутации. Поэтому на выводах индуктивной нагрузки образуется ЭДС самоиндукции, её величина описывается формулой:
E=L*dI/dt
Интересно! В нашем случае важную роль играет скорость изменения тока. При отключении она крайне велика, соответственно ЭДС будет стремиться к большим значениям, вплоть до десятков киловольт (например система зажигания автомобиля).
В результате ЭДС возрастает до такой степени, что его величина пробивает промежуток между контактами — образуется электрическая дуга или искры. Качество любых соединений описывается их переходным сопротивлением: чем меньше — тем лучше соединение и тем меньше нагрев. При их размыкании оно резко возрастает и стремится к бесконечности. В этот же момент происходит разогрев площади их соприкосновения.
Кроме того, между разомкнутыми контактами на фоне возрастающего ЭДС самоиндукции и повышенной температуры воздуха из-за разогрева поверхностей при размыкании пластин происходит и ионизация воздуха. В результате присутствуют все условия для возникновения дуги и искрения.
Если говорить о том, почему искрят контакты при замыкании электрической цепи, то это происходит уже не при индуктивной, а при емкостной нагрузке. Вы наблюдаете это каждый раз, когда вставляете в розетку зарядное устройство от ноутбука или телефона. Дело в том, что разряженная емкость (конденсатор) на входе устройства в начальный момент времени представляет короткозамкнутый участок цепи, ток которого уменьшается по мере её заряда.
Если вы наблюдаете искрение в реле или выключателе в замкнутом положении — причиной этому служит плохое состояние контактных поверхностей и их высокое переходное сопротивление.
Применение на практике
Рассмотрим, какая польза и вред резонанса токов и напряжений. Наибольшую пользу явления резонанса принесли в радиопередающей аппаратуре. Простыми словами, а схеме приемника установлены катушка и конденсатор, подключенные к антенне. С помощью изменения индуктивности (например, перемещая сердечник) или величины емкости (например, воздушным переменным конденсатором) вы настраиваете резонансную частоту. В результате чего напряжение на катушке повышается и приемник ловит определенную радиоволну.
Вред эти явления могут на нести в электротехнике, например, на кабельных линиях. Кабель представляет собой распределенную по длине индуктивность и емкость, если на длинную линию подать напряжение в режиме холостого хода (когда на противоположном от источника питания конце кабеля нагрузка не подключена). Поэтому есть опасность того, что произойдет пробой изоляции, во избежание этого подключается нагрузочный балласт. Также аналогичная ситуация может привести к выходу из строя электронных компонентов, измерительных приборов и другого электрооборудования – это опасные последствия возникновения этого явления.
Аппаратный способ подавления дребезга кнопки
Подавление дребезга кнопки с помощью задержек в скетче – способ очень распространенный и не требующий изменения самой схемы. Но далеко не всегда его можно использовать – ведь 10 миллисекунд – это целая вечность для многих процессов в электроном мире. Также программный способ невозможно применять при использовании прерываний – дребезг приведет к многократному вызову функций и повлиять на этот процесс в скетче мы не сможем.
Более правильный (и более сложный) способ борьбы с дребезгом – использование аппаратного решения, сглаживающего импульсы, посылаемые с кнопки. Для этого, правда, придется внести изменения в схему.
Аппаратный способ устранения дребезга основан на использовании сглаживающих фильтров. Сглаживающий фильтр, как следует из названия, занимается сглаживанием всплесков сигналов за счет добавления в схему элементов, имеющих своеобразную “инерцию” по отношению к таким электрическим параметрам как ток или напряжение. Самым распространенным примером таких “инерционных” электронных компонентов является конденсатор. Он может “поглощать” все резкие пики, медленно накапливая и отдавая энергию, точно так же, как это делает пружина в амортизаторах.
За счет инерции устройство как утюгом походит по “мятому” сигналу с большим количеством пиков и впадин, создавая пусть и не идеальную, но вполне гладкую кривую, у которой легче определить уровень срабатывания.
Пример простого фильтра на базе RC-цепочки
Схема подключение фильтра для устранения дребезга:
Пример подключения к плате ардуино
Форма сигнала после использования фильтра:
Как видим, “лес” дребезга сменился достаточно плавной линией, с которой уже можно работать дальше.
Подавление дребезга с помощью триггера шмидта
Сделать квадратную форму сигнала с помощью простой RC цепочки невозможно. Для “огранения” сглаженных форм используется специальный компонент, который называется триггер шмидта. Его особенностью является срабатывание при достижении определенного уровня сигнала. На выходе триггера шмидта мы получим или высокий или низкий уровень сигнала, никаких промежуточных значений. Выход триггера инвертированный: при спаде входного сигнала он выдает на выходе включение и наоборот. Ниже представлена схема и результат работы с триггером шмидта.
Иллюстрация результата работы:
Как видим, мы практически полностью избавились от результатов переходных процессов, сперва превратив хаос в почти гладкую кривую линию, а затем с помощью триггера шмидта “отрубили” хвосты, придав сигналу практически идеальный вид. Подав его на вход ардуино, мы уже можем не беспокоиться о ложных срабатываниях и смело использовать в скетче метод digitalRead и прерывания.
Итого
Вот так вот можно теперь подключать кнопочки и вообще использовать алгоритм последовательных подтверждений неизменяющегося состояния: https://github.com/Egoruch/Debounce-Button-STM32-CMSIS
Получается, что для каждой кнопки нужно целых три переменных, это конечно много, но тут уж куда деваться.
Есть также такая штука как вертикальные счетчики, ведь по сути счет идет от 0 до 4, а используется 8-ми разрядная переменная (0-255), суть в том, чтобы считать с помощью логических операций вертикально, взяв несколько uint8_t. Это актуально при подключении к одному порту и вообще при использовании 8-бит микроконтроллеров из-за ограниченности ресурсов, а у STM32F411 памяти куча (ПЗУ: 512 кБ; ОЗУ: 128 кБ).
Что такое кнопка?
По большому счету, вопрос не корректен. Кнопка это механический переключатель, точнее, лишь одна из его разновидностей. Поэтому правильнее говорить о работе с механическими переключателями используемыми для взаимодействия с оператором (человеком) или в качестве механических датчиков различных систем автоматики. Однако, для краткости, я буду говорить именно «кнопка». Некоторые, далеко не все, примеры таких «кнопок» приведены ниже.
Может возникнуть вопрос, а переключатель то как сюда попал? Переключатель может быть подключен к контроллеру и управлять, например, режимами работы. В такой ситуации он эквивалентен кнопке с переключающим контактом, но с «памятью состояния», то есть, его не надо держать нажатым.
Потребности бывают разные
В большинстве случаев нужно не просто реагировать на нажатия и отпускания кнопки однозначным и устойчивым образом. Да и сами кнопки бывают разные. Часто требуется:
- Отрабатывать короткое и, возможно, длинное нажатие кнопки. При этом не требуется четко отслеживать моменты нажатия и отпускания. Это самый простой случай.
- Четко отслеживать моменты нажатия и отпускания кнопки, при этом длительность нажатого и отпущенного состояний может быть быть разная. В данном случае, кнопка не обязательно кнопка, это может быть, например, концевой переключатель фиксирующий достижение некоторым объектом крайнего положения.
- Обработка коротких и, возможно, длительных нажатий, при этом моментом наступления события является отпускание кнопки.
- Обработка одиночного короткого нажатия, двойного короткого нажатия, длительного нажатия.
- Обработка короткого одиночного, короткого и последующего длительного нажатия.
Как видно, вопрос обработки кнопок далеко не ограничивается гашением дребезга.
Дребезжание реле
Кроме дребезга кнопок в цифровых электронных схемах также доставляет проблемы дребезг контактов в схемах управления реле. К таким схемам можно отнести сумеречное реле или различные датчики протока, а также регуляторы температуры. Когда датчик выдаёт сигнал на пороге срабатывания устройства, получается неопределенное состояние и логика схемы то включает, то отключает его. И при срабатывании реле не всегда наблюдается устойчивое удержание контактов, оно начинает как бы вибрировать, включаясь и отключаясь. На эпюре ниже наглядно изображена эта проблема на примере регулятора температуры:
Решением этой проблемы также является установка порогового элемента петлей гистерезиса в его передаточных статических характеристиках, то есть триггера Шмидта или Компаратора на операционном усилителе. На схеме ниже изображен исходный вариант с рассмотренной на графике проблемой:
А так выглядит схема с дополнением в виде задержки включения на логических элементах 2И-НЕ отечественной микросхемы К561ЛА7:
Иногда с этой же проблемой справляются с помощью установки стабилитрона в сигнальные цепи.
Аналогично дребезгу кнопок при включении реле, его контакты могут повторно несколько раз перекоммутироваться. Явление опасно тем, что в этот момент происходит зажигание и гашение дуги, что значительно снижает срок службы аппарата. Особенно часто это происходит при срабатывании реле на переменном токе.
Всё это связано с механической структурой герконов, реле и других коммутаторов. Их контакты замыкаются не моментально, а в течении долей, единиц или десятков миллисекунд. Чтобы продлить срок службы реле, ознакомьтесь со способами, которые мы описывали в статье о том, почему искрят контакты.
Также рекомендуем посмотреть хорошее видео на эту тему:
В этой статье мы рассмотрим такое распространенное и вредное явление как дребезг контактов. Ознакомимся с основными причинами возникновения дребезга. Изучим основные методы аппаратного и программного устранения данного явления.
Принцип работы компаратора напряжения
Полная стоимость депонирования произведения с выдачей свидетельства составляет рублей. Государственное унитарное предприятие «Конструкторское бюро приборостроения». Изобретение относится к оборонной технике и, в частности, к средствам борьбы с малоразмерными целями и может быть использовано в системах управления ракетами, формирующих на борту команды управления движением. В настоящее время бортовая аппаратура ракеты за исключением приемника выполняется на цифровых элементах, например на цифровых базовых матричных кристаллах, что резко уменьшает ее массо-габаритные характеристики. Однако цифровая аппаратура требует установку в исходное состояние счетчиков, регистров и т. В связи с изложенным до старта ракеты после вывода на рабочий режим бортового источника питания по разрывной проводной линии связи с пусковой установки на ракету подают начальные данные для бортовой аппаратуры, в том числе установка в исходное состояние . Недостатком данной установки в исходное начальное состояние является наличие до старта электрической проводной связи бортовой аппаратуры с пунктом управления, определяющим момент подачи сигнала на нее, что ухудшает надежность функционирования как способа установки в исходное состояние аппаратуры, так и аппаратуры ракеты, ее peaлизующей.
В борьбе за срок жизни ламп накаливания на лестничной площадке По сути МегаОмный R9 и фоторезистор образуют делитель, с которого идёт напряжение на компаратор/усилитель. нагрузка небольшая и дуги не будет. максимум легкий дребезг контактов. Для борьбы с ним стоит диод ( классика).
Способы устранения и подавления дребезга
Без конструктивного изменения контактной системы устранить либо подавить дребезг принципиально невозможно. Примером таких конструктивных изменения можно наблюдать в узлах галетных переключателей или в кнопках типа П2К. В упомянутых конструкциях дребезг практически отсутствует. Нет его и у механического переключателя ползункового типа.
Аппаратный способ
С целью подавления дребезга в системах слаботочных электромеханических ключей прибегают к смачиванию ртутью контактов, которые помещают в изолирующие колбы. Жидкое состояние ртути частично гасит упругие силы, вызывающие дребезг, а также образует токопроводящие перемычки, не позволяющие разрывать электрическую цепь при соприкосновении контактов.
Для снижения уровня коммутационного износа в различных реле и силовых выключателях применяют искрогасящие цепочки:
- шунтирующие RC-цепи;
- варисторы, препятствующие скачкообразному изменению напряжения;
- обратные диоды, подавляющие напряжения самоиндукции;
- стабилитроны;
- комбинированные схемы (варистор +RC-цепь).
Эти цепочки помогают устранить дребезг путём выравнивания скачкообразных характеристик тока. Их подключают параллельно нагрузке либо к контактам реле. Существуют также схемы, в которых искрогасящие цепи подключаются одновременно и к нагрузке и к реле.
Схемы цепей изображены на рис. 3.
Рисунок 3. Схемы искрогасящих цепей
У каждого способа есть свои преимущества и недостатки. В зависимости от того какого результата необходимо достигнуть, применяют ту или иную схему.
Управление приборами чувствительными к дребезгу осуществляется через ФНЧ (например, через RC-цепочку). Обладая электрической емкостью, конденсатор забирает часть энергии в момент касания контактов. После разрыва цепи вследствие дребезга накопленная энергия возвращается. Таким образом, происходит сглаживание амплитуды колебаний.
Установки триггеров
Ещё один способ борьбы с дребезгом состоит в использовании специальных электронных схем, включающих rs-триггеры.
Роль триггеров заключается в преобразовании входного аналогового сигнала в цифровой и инверсии (переворачивания) логических уровней. Наглядно инверсию объясняет схема на рисунке 4.
Рис. 4. Наглядная схема инверсии сигнала
Устройство учитывает только части сигналов, превосходящие заданные пороговые значения, выдавая логические нули и единицы на выходе. Каждый раз восходящий или нисходящий сигнал переключает триггер, когда он проходит верхнее или нижнее пороговое значение. Проще говоря, провалы напряжения компенсируются инвертированными импульсами триггеров.
Простая схема с триггером показана на рисунке 5.
Рис. 5. Наглядная схема подключения rs-триггеров
Промежутки между пороговыми значениями называются гистерезисом. Форма таких импульсов используется для шумоподавления во время переключения логических сигналов. Сигнал от контакта поступает на схему, имеющую передаточную статическую характеристику в виде петли гистерезиса (триггер Шмидта). Только после этого сигнал с выходов триггера подаётся на вход цифрового устройства для тактирования.
Использование герконов
Выше упоминалось, что наличие ртути на контактах подавляет дребезг. Но общеизвестно, что пары этого жидкого металла очень ядовиты. Использовать их в открытых конструкциях, например в тактовых кнопках, небезопасно. Но контакты можно поместить в герметическую колбу, что позволяет применять ртуть. Такие конструкции называются герконами.
Управление контактами герконов осуществляется внешним магнитным полем. Для этого можно использовать постоянные магниты или электромагнитную индукцию. Устройства могут использоваться в маломощных цепях. Они имеют длительный срок службы, так как контакты в них не изнашиваются.
No tags for this post.