Что такое дребезг контактов и как его устранить?

Основные причины искрения

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

  1. Дребезг контактов.
  2. Влияние индуктивных цепей при их коммутации.

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

Для лучшего понимания причин искрения рассмотрим более детально физику процесса. Начнём с понятия искры.

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

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

А теперь остановимся вкратце на процессах, вызывающих искрение в коммутационных устройствах.

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

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

Влияние индуктивных цепей

При коммутации электродвигателей и различных соленоидов на выводах индуктивной нагрузки происходит образование ЭДС самоиндукции: E = -L*di/dt.

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

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

Прочие причины искрения

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

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

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

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

Рис. 1. Подгоревший коллектор

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

Последствия, к которым приводят плохая коммутация в розетке, показаны на рис.2.

Рис. 2. Последствия плохой коммутации

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

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

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

Вот пример скетча, в котором непременно обнаружится ошибка дребезга

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

void loop() { if (digitalRead(PIN_BUTTON)) { Serial.println(«1»); } else { Serial.println(«0»); } }

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

Debounce.ino

Откроем программу из меню File — Examples — Digital — Debounce

Программа уже имеет исчерпывающий комментарий прямо в тексте, но рассмотрим как все работает.

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

const int buttonPin = 2; // Подключим кнопку к контакту 2 const int ledPin = 13; // Для светодиода используем контакт 13 int ledState = HIGH; // Состояние светодиода int buttonState; // Состояние кнопки int lastButtonState = LOW; // Предыдущее состояние кнопки unsigned long lastDebounceTime = 0; // Время нажатия кнопки unsigned long debounceDelay = 50; // Время задержки для проверки состояния кнопки

Здесь мы ввели переменные buttonState и lastButtonState для проверки и сравнения состояния кнопки. Когда кнопка будет нажата, мы сравним ее состояние с переменной lastButtonState. И если состояние будет отличаться от ранее сохраненного, счетчик lastDebounceTime будет сброшен.

Переменные lastDebounceTime и debounceDelay используют тип unsigned long потому, что время исчисляется в миллисекундах и простого int будет недостаточно.

В функции setup() настроим состояние пинов и светодиода. Пин кнопки на чтение, пин светодиода на вывод, напряжение на пин светодиода = HIGH

void setup() { pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, ledState); }

Далее в цикле loop() будем постоянно проверять состояние кнопки. И если состояние в момент проверки будет отличаться от предыдущего, запустим процесс повторной проверки.

void loop() { int reading = digitalRead(buttonPin); if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis() — lastDebounceTime) > debounceDelay) { if (reading != buttonState) { buttonState = reading; if (buttonState == HIGH) { ledState = !ledState; } } } digitalWrite(ledPin, ledState); lastButtonState = reading; }

Здесь мы видим новую функцию millis(). Она возвращает количество миллисекунд с момента начала работы программы на плате Arduino. Это количество сбрасывается в 0, из-за переполнения значения, примерно через 50 дней непрерывной работы.

Принципиальная схема подключения кнопки

Итак, в цикле loop() мы постоянно считываем напряжение на пине 2 и записываем его в переменную reading.

Если reading не равно предыдущему состоянию кнопки, то счетчику lastDebounceTime присваивается значение функции millis().

Через 50 миллисекунд значение переменной reading сравнивается с текущим состоянием кнопки и, если они не равны, то текущее состояние кнопки приравнивается к reading.

И, наконец, если кнопка нажата, то состояние светодиода меняется на противоположное.

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

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

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

Непридуманная история

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

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

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

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

Только вроде бы все наладилось, как возникли новые причины для переживаний:

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

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

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

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

Это доставляло определенный дискомфорт. Эффект сохранялся около месяца, затем чувствительность восстановилась.

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

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

Главные причины дребезга контактов

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


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

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

Как это выглядит?

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

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

Ну а бывает и такое, херачит переходы в течении почти 26 мс .

Цифровая система может и будет регистрировать эти переходы, таким образом если нужно что-то сделать при нажатии (например, изменить состояние свечения СИД), то конечное состояние хер предскажешь, нужно что-то делать.

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

Дребезг контактов возникает во время замыкания или размыкания контактов. Посмотрите на рисунок:


Изначально контакт разомкнут.

Когда мы начинаем замыкать контакт (нажимаем на кнопку), то замыкание происходит не сразу.

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

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

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

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

Представьте, что наши кнопки — это клавиатура телефона. Мы нажимаем цифру 8, подразумевая, что эта цифра будет набрана телефоном один раз. Но телефон вместо этого набирает 5 или 10 восьмёрок, потому что разработчики телефона не удосужились предусмотреть защиту от дребезга контактов. Станете вы пользоваться таким телефоном?

Ну и напоследок надо сказать, что время дребезга контактов зависит от качества контактов, и обычно составляет от 10 до 100 мс.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

Основой нашей схемы будет 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 после добавления конденсатора (импульс соответствует логическому нулю)

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

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

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