Типовая схема подключения энкодера к микроконтроллеру ATmega8 представлена на рисунке 1. На схеме тактовые выводы A и B подтянуты с помощью резисторов R1 и R2 к питанию и дают низкий сигнал при срабатывании.

Рисунок 1 – Типовая схема подключения энкодера к микроконтроллеру ATmega8
Рисунок 1 – Типовая схема подключения энкодера к микроконтроллеру ATmega8

Из недостатков данного подключения является наличие «дребезга контактов».

Для подавления «дребезга» в схеме применяют RC-цепь (рисунок 2).

Рисунок 2 – Схема подключения энкодера к микроконтроллеру ATmega8
Рисунок 2 – Схема подключения энкодера к микроконтроллеру ATmega8

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

Для расчета номинала конденсатора и резисторов схемы применяют закон изменения напряжения при разряде конденсатора RC цепи (1):

Отсюда время, в течение которого напряжение достигнет логического максимума:

Пример расчета

Для расчета номинала конденсатора и резисторов также применяют формулу (4), позволяющую определить постоянную времени RC-цепи:

Пример расчета

Реальная осциллограмма дребезга энкодера EC11E показана на рис. 3.

Рисунок 3 – Реальная осциллограмма «дребезга» энкодера EC11E
Рисунок 3 – Реальная осциллограмма «дребезга» энкодера EC11E

Из рисунка 1 мы можем увидеть, что реальное время «дребезга» (примерно 0,16 мс) значительно отличается от максимального значения (2 мс) приведенного в datasheet на энкодер EC11E.

Из этого следует, что для устранения «дребезга» должно хватать конденсатора номиналом 10 нФ.

Но, в процессе эксплуатации конечного устройства, в следствии «сработки» контактов энкодера в результате интенсивных механических перемещений, данного номинала будет недостаточно.

Соответственно конденсатора номиналом 100 нФ вполне будет достаточно.

Для повышения точности позиционирования, в схемах аппаратного подавления «дребезга», применяют триггеры Шмитта (рисунок 4, 5).

Рисунок 4 – Схема подключения энкодера к микроконтроллеру ATmega8
Рисунок 4 – Схема подключения энкодера к микроконтроллеру ATmega8
Рисунок 5 – Схема подключения энкодера к микроконтроллеру ATmega8
Рисунок 5 – Схема подключения энкодера к микроконтроллеру ATmega8

На рисунке 5 два крайних правых триггера применены для обратного инвертирования сигнала.

Инвертирующий триггер Шмитта SN74HC14N можно заменить отечественным аналогами.

Комментарии (18)


  1. azudem
    05.04.2023 03:25
    +11

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


    1. Hlad
      05.04.2023 03:25
      +6

      Бгг. Знали бы вы, как часто люди ошибаются в подобных расчётах. Особенно, когда нужно поставить несколько светодиодов разных цветов.


      1. vin2809
        05.04.2023 03:25

        "несколько светодиодов разных цветов "

        Скорее всего Вы имели ввиду "разного назначения": подсветка, индикация, передача информации и т.д.


        1. progchip666
          05.04.2023 03:25
          +3

          У светодиодов разного свечения разное "рабочее напряжение" при одном и том же токе, видимо это имелось ввиду.

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

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


          1. zurabob
            05.04.2023 03:25
            +1

            Возможно все-таки светодиод сгорел, а не порт? У современных контроллеров выходные транзисторы достаточно высокоомные и КЗ не приводит к выгоранию порта.


            1. Kudriavyi
              05.04.2023 03:25

              Порт спокойно мог сгореть, все зависит от микроконтроллера. Например я пару раз насиловал Атмегу и повышенным напряжением, и короткими замыканиями, ей все равно, она дубовая. А вот stm32L0 имеет очень слабые порты. Сжег порт потому что заряжал конденсатор в 0.1 мкФ без токоограничивающего резистора. Микроконтроллер не сгорел полностью, но стал потреблять 5 мА вместо 200 мкА

              У stm8L тоже слабые порты


        1. Hlad
          05.04.2023 03:25
          +5

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


          1. devprodest
            05.04.2023 03:25

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


    1. zhogar
      05.04.2023 03:25
      +2

      Расчет сопротивления: R=(Uпит.-Uпад.N)/Iпр. Где: Uпит. - напряжение питания; Uпад. - напряжение падения на светодиоде; N - количество светодиодов в последовательной цепи. Расчет рассеиваемой мощности на резисторе: P=I^2R. Где: I - прямой ток через резистор (цепь светодиодов); R - расчетное сопротивление. Полученный результат желательно умножить на 2.


      1. zhogar
        05.04.2023 03:25

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


    1. DvoiNic
      05.04.2023 03:25
      +2

      Скоро будет. "Тенденция, однако"© А пока отсается радоваться, что "инженеры", пишущие такие "статьи", хотя бы схемы рисуют, а не "fritzing'и на bredboard'е".


  1. aamonster
    05.04.2023 03:25
    +3

    1. Вроде ж у атмеги встроенный триггер Шмитта был, зачем нужен внешний?

    2. Зачем второй инвертор? Во первых, проще инвертировать в прошивке. Во вторых, для инкрементального энкодера даже это не требуется. Инвертированный сигнал – просто сдвиг фазы на pi/2, ни на что не влияет.


    1. sami777
      05.04.2023 03:25
      +2

      Предположу, что автору некуда было деть неиспользованные триггеры Шмидта.


      1. DvoiNic
        05.04.2023 03:25

        Все-таки — Шмитта.


  1. mastergril
    05.04.2023 03:25

    Из рисунка 1 мы можем увидеть, что реальное время «дребезга» (примерно 0,16 мс) значительно отличается от максимального значения (2 мс) приведенного в datasheet на энкодер EC11E.

    Из этого следует, что для устранения «дребезга» должно хватать конденсатора номиналом 10 нФ.

    Но, в процессе эксплуатации конечного устройства, в следствии «сработки» контактов энкодера в результате интенсивных механических перемещений, данного номинала будет недостаточно.

    Соответственно конденсатора номиналом 100 нФ вполне будет достаточно.

    нет, не достаточно, должно быть расчётное значение на основе данных DS, то что вы намеряли может сильно отличаться от экземпляра к экземпляру...

    Микросхема триггера без конденсаторов по питанию? Хоровиц Хила на вас нет.


  1. iig
    05.04.2023 03:25

    Я сварщик ненастоящий, но нельзя ли использовать встроенные в MK pull-up резисторы, а дребезг подавить программно?


    1. pvvv
      05.04.2023 03:25
      +8

      Встроенные резисторы, в зависимости от МК, могут оказаться довольно хилыми >50k, а дребезг у квадратурного энкодера подавлять вообще не особо надо, A/B никогда не дребезжат одновременно и ошибку копить не будут.


      1. premierhr
        05.04.2023 03:25

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