Найти в Дзене
Электроника и жизнь

Инкрементальный энкодер с кнопкой EC11. Обзор, подключение к Ардуино, скетч для работы с энкодером

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

Инкрементальный энкодер с кнопкой EC11
Инкрементальный энкодер с кнопкой EC11

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

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

Принцип работы абсолютного энкодера
Принцип работы абсолютного энкодера

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

Принцип работы инкрементального энкодера
Принцип работы инкрементального энкодера

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

Сигнал при вращении по часовой стрелке
Сигнал при вращении по часовой стрелке

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

Сигнал при вращении против часовой стрелки
Сигнал при вращении против часовой стрелки

Собираем схему с энкодером на макетной плате. Крайние ножки 5V и GND соединяем с соответствующими пинами Arduino UNO . S1 подключаем к 5 порту, S2 к 6-му.

Подключение энкодера к Arduino UNO
Подключение энкодера к Arduino UNO

Открываем Arduino IDE и пишем небольшой скетч. Определяем постоянные, связанные с теми портами, куда мы подключили энкодер, и переменные, фиксирующие прошлое и текущее состояние выходов S1 и S2 для отслеживания их изменения. В переменную val мы и будем записывать текущее значение, соответствующее повороту ручки энкодера.

В функции setup производим достаточно стандартную инициализацию.

И фиксируем начальное значение сигнала выхода S1 энкодера.

Скетч для работы с энкодером
Скетч для работы с энкодером

В функции loop считываем текущее значение сигнала выхода S1 энкодера. И сравниваем с начальным. Если значение не равно начальному, значит осуществляется поворот энкодера. И в этом случае считываем значение выхода S2 энкодера. Если S1 равен S2, значит вращение осуществляется по часовой стрелке и переменной val мы добавляем единицу, если нет, то вращение против часовой стрелки и мы вычитаем единицу из переменной val.

Скетч для работы с энкодером
Скетч для работы с энкодером

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

Монитор порта Arduino IDE
Монитор порта Arduino IDE

Происходит это из-за того, что при повороте на каждый шаг, передается 4 импульса, 2 из которых совпадают с предыдущим значение, поэтому не проходят по нашему условию (curS1!=prevS1), а два проходят данное условие и изменяют дважды значение переменной. Это хорошо видно на данной картинке.

Иллюстрация двойного срабатывания при повороте ручки энкодера
Иллюстрация двойного срабатывания при повороте ручки энкодера

Добавляем булеву переменную flag, которая и будет отсекать повторное изменение значения val. И пишем дополнительное условие – если flag == true, то следующий блок кода срабатывает и flag становится false, а если нет, то переменной flag присваиваем значение true и значение переменной val изменится только один раз за шаг.

Скетч для работы с энкодером
Скетч для работы с энкодером

Загружаем скетч в Ардуино, открываем монитор порта и видим, что значение меняется на единицу при вращении в ту или иную сторону.

Теперь соединим выход энкодера Key с портом номер 7 Ардуино.

Подключение энкодера к Arduino UNO с учетом кнопки
Подключение энкодера к Arduino UNO с учетом кнопки

Добавляем в наш скетч соответствующие постоянную и переменную. И еще одну переменную, фиксирующую время нажатия кнопки.

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

Скетч для работы с энкодером с учетом кнопки
Скетч для работы с энкодером с учетом кнопки

Загружаем скетч в Ардуино, открываем монитор порта, нажимаем на ручку энкодера, и видим как монитор порта фиксирует нажатие.

Монитор порта Arduino IDE
Монитор порта Arduino IDE

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

Скетч из статьи можно загрузить по ссылке - https://yadi.sk/d/firAa6UXM9l-Gw

Ниже размещено видео по материалам данной статьи. Спасибо, что дочитали до конца! Всем пока!

Что-то пошло не так, и нам не удалось загрузить комментарии. Попробуйте ещё раз
Рекомендуем почитать
Самодельный корпус чужими руками
Хочу поделиться СВОИМ опытом изготовления корпусов для самодельных устройств. В самоделках нет понятие правильно/не правильно - ведь даже мелкосерийное производство часто не подразумевается, но если получилась вещь, которую планируется применять в быту, корпус становится необходимостью. Для начала хочу поблагодарить всех, кто материально поддержал канал за все это время. Не смотря на то, что я нигде открыто не призывал воспользоваться кнопкой ДОНАТЫ, неожиданно нашлись люди, которые перевели небольшие суммы...
Логические элементы своими руками из старых транзисторов КТ315. Чем заменить логические микросхемы.
Привет мой Друг - радиолюбитель. Многие даже старые радиолюбители, взяв в руки старую микросхему, даже не задумываются над тем - "А как оно там внутри устроено?". Просто по справочнику и сборникам схем собирают на основе логических элементов разные устройства и игрушки как из кубиков, соблюдая, разумеется, правила и принципы искусства схемотехники и монтажа. Если послушать учителей и Мастеров, то может показаться, что логические микросхемы это столь сложный и мудреный продукт, созданный умнейшими умами человечества и подвластный только пониманию мудрых :) И я вам это покажу и расскажу...
Радио-86РК: легенда советского компьютерного DIY
В эпоху, когда персональные компьютеры были роскошью, а слово «микропроцессор» звучало как фантастика, в СССР появился уникальный проект — «Радио-86РК». Это не просто компьютер, а символ целого движения: технического энтузиазма, радиолюбительства и стремления к знаниям. В отличие от западных аналогов, которые продавались готовыми, «Радио-86РК» собирался вручную. Его схемы публиковались в журнале «Радио», и любой, у кого были руки, паяльник и терпение, мог создать свой собственный ПК. Эта статья — не просто исторический обзор...
Документы, вакансии и контакты