Каталог

Устранение дребезга контактов. Часть 1 - триггер Шмитта

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

Что такое триггер Шмитта

Триггер Шмитта - это электронный двухпозиционный переключающий элемент, статическая характеристика которого имеет зону неоднозначности (петлю гистерезиса). Это означает, что у данного элемента 2 порога переключения: при возрастании сигнала на входе от 0 до напряжения питания порог срабатывания будет одним (Uср), а при уменьшении от напряжения питания до 0 - другим (Uотп - отпускания). Причем Uср > Uотп. Таким образом для триггера Шмитта принципиально направление изменения сигнала. Изображение ниже иллюстрирует зависимость сигнала на выходе инвертирующего триггера Шмитта от уровня сигнала на входе.

Передаточная характеристика триггера Шмитта. Петля гистерезиса

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

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

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

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

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

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

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

footer shadow
Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

compacttool logoadaptive site

accepted payment systems

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2015 - 2024г https://compacttool.ru