Инкрементальный энкодер и Arduino: устройство, схема подключения, код

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

Особенности инкрементального энкодера

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

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

Принцип работы

ремонт холодильников в Костроме

Внутри инкрементального энкодера есть диск с метками и ползунки, которые с ними соприкасаются. Его строение подобно потенциометру.

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

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

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

Вот пример цоколевки реального энкодера:

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

Интересно:

Неисправный энкодер можно заменить двумя кнопками без фиксации, и наоборот: самоделку управление в которой осуществляется двумя такими кнопками можно доработать, установив энкодер.

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

Не менее наглядно это проиллюстрировано на следующей анимации (нажмите на рисунок):

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

Энкодер может быть и оптическим (сигнал формируется излучателями фотоприемниками, см. на рисунке ниже), и магнитным (работает на эффекте Холла). В таком случае у него нет контактов и больше срок службы.

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

Как уже было сказано, направление вращения можно определить по тому, какой из выходных сигналов раньше изменился, а вот так это выглядит на практике!

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

Точность управления зависит от разрешения энкодера количества импульсов на оборот. Количество импульсов может быть от единиц до тысяч штук. Так как энкодер может выступать в качестве датчика положения, то чем больше импульсов тем точнее будет происходить определение. Этот параметр обозначается как PPR pulse per revolution.

Но есть небольшой нюанс, а именно похожее обозначение LPR это количество меток на диске.

А количество обрабатываемых импульсов. Каждая метка на диске даёт 1 прямоугольный импульс на каждом из двух выходов. У импульса есть два фронта задний и передний. Так как выхода два то с каждого из них мы в сумме получаем 4 импульса значения которых вы можете обработать.

PPR=LPRx4

Подключаем к Arduino

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

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

Инкрементальный энкодер и Arduino: устройство, схема подключения, код

Разберем код подробнее, по порядку. В void setup() мы объявили что будем использовать связь через последовательный порт, а затем установили пины 2 и 8 в режим входа. Номера пинов выбираете сами исходя из вашей схемы подключения. Константа INPUT_PULLUP выставляет режим входа, у ардуино есть два варианта:

  • INPUT вход без подтягивающих резисторов;

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

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

Логика основной программы следующая: если на входе 2 у нас единица выдаёт в монитор порта H, если нет L. Таким образом при вращении в одну сторону на мониторе последовательного порта получится что-то вроде этого: LL HL HH LH LL. А в обратную: LL LH HH HL LL.

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

Заключение

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

Алексей Бартош

Кострома ремонт мелко-бытовой техники

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *