Защита от Дребезга Контактов Кнопки Схема Устранение эффекта

Определение и суть проблемы в электронике

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

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

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

Пример осциллограммы дребезга контактов изображен на рисунке ниже:

Защита от Дребезга Контактов Кнопки Схема Устранение эффекта

Скетч (код) к уроку 8. Arduino: Дребезг — программное устранение.ino 1 Kb 59 Вы можете скачать файл.
Устранение дребезга контактов в счетчике воды | Жизнь, бизнес и IT
Для того, чтобы понять как устранить дребезг кнопки посмотрим рисунок, на котором изображен дребезг кнопки. Как видим, дребезг длится недолго, и если сделать небольшую задержку после нажатия на кнопку и считать значение еще раз, то считаное значение будет уже в установившемся состоянии.
Электроэнергетика и электротехника
Мнение эксперта
It-Technology, Cпециалист по электроэнергетике и электронике
Задавайте вопросы "Специалисту по модернизации систем энергогенерации"
Мучаем 5576ХС4Т — часть 5 — подавление дребезга кнопки: nabbla1 — ЖЖ Аппаратное устранение дребезга кнопки представляет собой изменение схемы подключения путем установки элементов, которые способны устранить дребезг. Спрашивайте, я на связи!

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

  1. Установка конденсаторов параллельно входу. Тогда может снижаться быстродействие реакции на нажатие при слишком большой ёмкости и неполного устранения дребезга при слишком маленькой.
  2. Введение триггеров Шмидта во входную цепь устройства. Более сложное решение, которое затруднительно для реализации в ходе доработки уже готового изделия, но и более технологичное и совершенное.

Ошибки дребезга кнопки

Как отразится дребезг на нашем проекте? Да самым прямым образом – мы будем получать на входе совершенно случайный набор значений. Ведь если мы считываем значение с кнопки непрерывно, в каждом новом рабочем цикле функции loop, то будем замечать все “всплески” и “падения” сигнала. Потому что пауза между двумя вызовами loop составляет микросекунды и мы измерим все мелкие изменения.

Если мы хотим отследить ситуацию, когда кнопка была отпущена после нажатия, то получим множество ложных сигналов – она будет “нажата-отпущена” десятки раз, хотя мы выполнили лишь однократное нажатие.

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

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

Защита от Дребезга Контактов Кнопки Схема Устранение эффекта

Аппаратное устранение дребезга

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

Подавление дребезга контактов для водосчетчика (Arduino/ESP8266/EPS32)

Подавление дребезга контактов для водосчетчика (Arduino/ESP8266/EPS32)

Поиграться с работой схемы можно здесь. При разомкнутой кнопке емкость C1 заряжается через сопротивление R1. На входе инвертирущего триггера Шмитта +VCC. На выходе, соответственно 0.

Подавление дребезга контактов для водосчетчика (Arduino/ESP8266/EPS32)

Схема почти такая-же, но при замыкании кнопки емкость С2 разряжается на землю через сопротивление R4, поэтому ток протекающий через контакты уже безопасно небольшой для контактов: I = U/R = 5/1000 = 5 мА.

t — время разряда с уровня Vdc до Vc. Vc — напряжение при котором контроллер идентифицирует уровень напряжения как логический ноль. Я взял Vc = 0,5 V. В статье подробно описаны уровни для ESP8266. Я взял несколько более низкое напряжение, вместо 0,8 V для напряжения, ниже которого ESP8266 считает уровень логическим нулем.

Если емкость увеличить с 0,01 мкФ до 0,1 мкФ, то время разрядки конденсатора C1 до уровня V0 будет уже 180 мс, что довольно много. Однако, в данном случае процессы настолько медленные, что можно оставить и такую емкость. Её увеличение, а, соответственно, инерционности, лучше сглаживает короткие всплески, уменьшая вероятность ложных срабатываний.

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

Электроэнергетика и электротехника
Мнение эксперта
It-Technology, Cпециалист по электроэнергетике и электронике
Задавайте вопросы "Специалисту по модернизации систем энергогенерации"
Как избавиться от дребезга контактов при подключении кнопки к Arduino На рисунке 2 наглядно изображена осциллограмма напряжения в результате коммутации электрического тока вследствие нажатия на кнопку. Спрашивайте, я на связи!

Дребезг контактов и способы подавления дребезга.

  • Вместо программного опроса состояния входов в цикле loop использовать более красивый вариант с прерываниями. При использовании схемы устранения дребезга этот способ будет работать корректно. Пример кода с использованием прерываний описан в статье.
  • Загонять ESP8266/ESP32 в deep-sleep с указанием времени через которое он должен просыпаться для обработки состояния входов. В данном случае использовать аппаратное устранение дребезга не нужно. При выходе из спячки ESP8266 мог уже пропустить срабатывание геркона, поэтому нужно опросить текущее состояние входов, после чего опять уйти в спячку. Время спячки должно быть меньше минимальной продолжительности срабатывания геркона. Нужно убедится, что после срабатывания геркона, если сразу выключить воду, он останется в замкнутом состоянии. Если отключится, то нужно выбирать время deep sleep с учетом такого «форс-мажора».
  • Загонять ESP8266/ESP32 в deep-sleep и выводить его из этого состояния сняв данные с герконов через схему устранения дребезга контактов и подав импульс на вход EXT_RSTB. Для этого можно использовать свободные элементы триггера Шмитта. Схемотехнику для такого варианта опишу в другой статье.
  • Учитывая, что ESP8266/ESP32 стартуют мгновенно, можно вообще завязать цепь питания на геркон. Т.е. включать схему, при замыкании одного из герконов.

ESP8266 и дребезг контактов

Для сборки триггера Шмитта на водосчетчике потребуются следующие компоненты (ссылки на Aliexpress):

    . hield. Напряжение питание чипа 5V, поэтому shield не пригоден для питания от батареи 3,7 V. . Datasheet.
  • Резисторы 1 кОм — 2 шт.
  • Резисторы 10 кОм — 2 шт.
  • Конденсаторы керамические 100 nF (0,1 mkF) — 2 шт. . .

Wemos D1 mini RT использует следующие контакты для RTC:

Свободными осталось немного: D0 (GPIO16), D3 (GPIO0), D4 (GPIO3). И это все проблемные входы:

  • Вход D0 Wemos D1 mini не поддерживает обработку прерываний, соответственно, не подходит.
  • D3, D4 — входы на которых при рестарте/загрузке ESP8266 должен быть определенный уровень сигнала. Если он будет другим, то микропрограмма ESP8266 не загрузится. Т.е., при каждой перезагрузке нужно отключать выводы.
  • К D4 на Wemos D1 mini подсоединен LED.

В общем, получается, что одновременно подключить RTC с карт- ридером и модуль с триггером Шмитта не получится. Либо придется в схему добавлять чип, позволяющий расширить кол-во входов. Впрочем, особого смысла в RTC и карт-ридере нет, если воспользоваться примером кода для получения времени с NTP серверов.

Подавление дребезга контактов для водосчетчика (Arduino/ESP8266/EPS32)

Понравилась статья? Поделиться с друзьями:
✨Мир света
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: