Энкодер для ардуино своими руками

Добавил пользователь Евгений Кузнецов
Обновлено: 19.09.2024

Энкодер — это устройство преобразования механического перемещения или угловых изменений положения в цифровой сигнал. В статье рассматривается самый популярный в DIY сообществе инкрементальный энкодер EC11 с кнопкой. При его вращении на выходах A и B формируются TTL сигналы в виде импульсов сдвинутые между собой по фазе на 90 градусов. Таким образом с его помощью, можно определить направление и скорость вращения, а так же рассчитать угол поворота. В отличие от потенциометров, KY-040 гораздо надежней и долговечней.


Схема подключения энкодера к Ардуино
Для считывания сигналов с выходов EC-11, нужно использовать три цифровых входа Arduino.
В схеме подключения я использовал редко используемые мной в своих проектах выводы Arduino(A1, A2 и A3). Внешние подтягивающие резисторы отсутствуют, так как я использовал внутреннюю подтяжку микроконтроллера. Конденсаторы нужны для гашения импульсов дребезга контактов. Если у вас новый и хороший энкодер, то можно обойтись и без них. Но на кнопку в любом случае потребуется конденсатор, так как ее дребезг неизбежен.


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


Модуль энкодер KY-040 является механическим датчиком угла поворота, он преобразует угол поворота вращающегося объекта(например вала) в электрические сигналы сдвинутые на 90 градусов относительно друг друга. Данный модуль имеет три вывода - CLK, DT и SW. Сигналы, сдвинутые на 90 градусов относительно друг друга появляются именно на выводах CLK и DT при вращении по/против часовой стрелки, вывод SW используется для получения состояния центральной оси энкодера, которая работает как кнопка.

Итак, не вдаваясь в подробности внутрисхемного устройства энкодера(об этом будет отдельная статья), произведем его подключение к плате Arduino Uno. Схема подключения модуля энкодера в связке с многоразрядным семисегментным индикатором:


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


Из диаграммы видно что, каждый раз когда сигнал А(контакт CLK энкодера) переходит от высокого уровня к низкому, считывается состояние сигнала Б(контакт DT энкодера). Если сигнал Б даёт высокий уровень сигнала, это означает что вращение энкодера происходит по часовой стрелке. Если сигнал Б даёт низкий уровень сигнала при переходе сигнала А из низкого в высокий уровень, то это означает что вращение энкодера происходит против часовой стрелки. Считывая оба этих сигнала в программе, можно определить направление вращения, также при подсчете импульсов сигнала Б, можно инкрементировать либо декрементировать программный счетчик импульсов.

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

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

Видео, как это работает:


Дополню наш материал, если вам интересно как работать с многоразрядными семисегментными индикаторами на базе микросхемы MAX7219, то добро пожаловать в статью по ссылке: Модуль многоразрядного 7-ми сегментного индикатора на базе микросхемы MAX72xx, подключение к Arduino и работа с библиотечными функциями.

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

Здесь я хочу вам рассказать как управлять громкостью и музыкой при помощи Поворотного энкодера (иначе - датчик угла поворота), это устройство, преобразующее угол поворота вращающегося объекта (вала) в электрические сигналы, позволяющие определить этот угол. Будет работать и на Windows и на Android

w3456

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

Как и в прошлом уроке про рулевое управлерие планшетом, для начала нам необходимо приобрести плату Arduino Leonadro или ArduinoMicro, главное отличие этих контроллеров в том что на них установлены микропроцессоры Atmega32u4 которая имеет на борту встроенную поддержку USB-соединения, благодаря чему не требуется вспомогательный процессор. Это позволяет устройствам на Atmega32u4 появляться на подключенном планшете (с поддержкой OTG) или компьютере в качестве мыши или клавиатуры в дополнение к виртуальному (CDC) последовательному порту (COM). В общем подойдет любой arduino совместимый контроллер который построен на Atmega32u4. + нам ещё потребуется сам повортный энкодер его можете приобрести на алиэкспресс.

Вторым шагом после того как приобрели необходимый вам контроллер необходимо скачать ArduinoIDE и установить для того чтобы установились драйвера, затем чтобы работали все функции скачайте подготовленную мной портативную версию ArduinoIDE вот ЗДЕСЬ, в этот архив уже добавлены все необходимые библиотеки и изменены файлы для работы в качестве медиа клавиатуры.

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


All-focus

Модуль энкодера KY-040 — это тип датчика, который преобразует угловое вращение ручки в цифровой сигнал. Благодаря своей надежности и точному управлению, энкодер используются во многих устройствах, таких как в робототехнике, станках с ЧПУ и принтерах.

Технические параметры

► Тип: механический, инкрементальный;
► Наличие кнопки: да;
► Поворот на: 360° в обе стороны;
► Напряжение питания: 4,5 – 5,5 В;
► Габариты: 26,2 х 18,7 х 29 мм;
► Вес: 7 г.

Обзор энкодера KY-040


То есть, когда вы поворачиваете ручку по часовой стрелке, сначала подключается вывод А, а затем вывод В. Когда вы поворачиваете ручку против часовой стрелки, сначала подключается вывод B, а затем штифт A. Отслеживая, когда каждый вывод соединяется с землей и отсоединяется от нее, можно понять в каком направлении вращается ручка.



Подключение модуля энкодера KY-040 к Arduino

Необходимые детали:
► Arduino UNO x 1 шт.
► Модуль энкодера, KY-040 x 1 шт.
► Провода DuPont M-F, 20 см x 1 шт.

Подключение:
Подключение энкодера KY-040 к Arduino не сложное. Подключим сначала вывод +V к 5V на Arduino и вывод GND к GND. Теперь соединим CLK, DT, SW с цифровыми контактами 2, 3 и 4 к Arduino. Для удобства приведу схему подключения.


Программа:
Теперь запускаем среду разработку Arduino IDE и загружаем скетч в контроллер. Программа определяет, в каком направление вращается энкодер и нажимается ли кнопка.

Читайте также: