Category archives: Arduino кнопка с фиксацией

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

За короткий промежуток времени многократное замыкание и размыкание контактов кнопки приводит к тому, что микроконтроллер получает не один импульс напряжения, а целую пачку импульсов. Это явление называется "дребезг контактов". Типичная осциллограмма в момент отпускания кнопки выглядит следующим образом: Осциллограмма с дребезгом контактов Продолжительность этого процесса различна для разных переключателей и составляет от долей миллисекунды до сотен миллисекунд.

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

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

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

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

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

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

Триггер остается в этом состоянии до тех пор, пока подвижный контакт S снова не соединится с землей. Схема не зависит от количества и времени импульсов, вызванных дребезгом контактов. Другой способ борьбы с дребезгом контактов заключается в использовании RC-фильтров для сглаживания колебаний.

Сглаженный сигнал затем подается на триггер Шмидта или другое логическое устройство с высокоомным входом. Ниже приведена схема с использованием КМОП-инвертора.

На выходе триггера Шмидта мы получим сигнал, свободный от дребезга контактов. Ниже приведена схема RC-цепочки для подавления дребезга контактов. RC-цепочка для подавления дребезга контактов Когда ключ переключается из открытого состояния в закрытое, конденсатор C разряжается на землю через резистор R2.

Мы можем сделать так, чтобы время этого перехода превышало время дребезга. Мы можем сделать так, чтобы время этого перехода превышало время дребезга контактов. Мы используем неинвертирующий КМОП-буфер между кнопкой и входом микроконтроллера. Самый простой способ борьбы с дребезгом контактов с помощью программного обеспечения - использовать задержки. Демпфирование кнопки заставляет входной контакт менять значение с 1 на 0 при нажатии кнопки, а не серию импульсов, как в приведенной выше форме сигнала. <Чтобы избавиться от их паразитного влияния, нам нужно обнаружить нажатие кнопки, приостановить программу и реализовать задержку. Время задержки должно быть выбрано таким, чтобы оно было больше, чем время дребезга контактов. Та же процедура задержки должна быть реализована после обнаружения отпускания кнопки. Для борьбы с дребезгом контактов существует специальная библиотека для Arduino под названием Bounce2. Вы можете скачать ее из репозитория GitHub или по ссылке ниже.


Навигация

thoughts on “Arduino кнопка с фиксацией

Добавить комментарий

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