Часто в устройствах на микроконтроллерах нужно организовать управление пунктами меню или реализовать какие-то регулировки. Есть множество способов: использовать кнопки, переменные резисторы или энкодеры. Инкрементальный энкодер позволяет управлять чем-либо посредством бесконечного вращения ручки. В этой статье мы рассмотрим, как заставить работать инкрементальный энкодер и Arduino.
Особенности инкрементального энкодера
Инкрементальный энкодер, как и энкодеры любых других типов представляют собой устройство с вращающейся рукоятью. Отдаленно он напоминает потенциометр. Основным отличием от потенциометра является то, что рукоять энкодера вращается на 360 градусов. У него нет крайних положений.
Энкодеры бывают разных типов. Инкрементальный отличается тем, что с его помощью нельзя узнать положение рукояти, а только сам факт вращения в какую-то сторону – влево или вправо. По количеству импульсов сигнала вы уже можете рассчитать на какой угол он повернулся.
Таким образом вы можете передать микроконтроллеру команду, управлять меню, уровнем громкости, например, и так далее. В быту вы могли их видеть в автомагнитолах и другой технике. Его используют в качестве многофункционального органа регулировки уровней, эквалайзера и навигации по меню.
Принцип работы
Внутри инкрементального энкодера есть диск с метками и ползунки, которые с ними соприкасаются. Его строение подобно потенциометру.
На рисунке сверху вы видите диск с метками, они нужны для прерывания электрического соединения со подвижным контактом, в результате вы получаете данные о направлении вращения. Конструкция изделия не столь важна, давайте разберемся в принципе работы.
У энкодера есть три информационных вывода один общий, остальные два обычно называют «A» и «B», на рисунке выше вы видите цоколевку энкодера с кнопкой – вы можете получать сигнал при нажатии на его вал.
Какой сигнал мы получим? В зависимости от направления вращения логическая единица сначала появится на выводе A или B, таким образом мы получаем сдвинутый по фазе сигнал, а этот сдвиг позволяет определить в какую сторону. Сигнал получается в виде прямоугольной формы, а управление микроконтроллером происходит после обработки данных направления вращения и количества импульсов.
На рисунке изображено условное обозначение диска с контактами, по середине график выходных сигналов, а справа таблица состояний. Этот прибор часто рисуют как две клавиши, что логично, ведь фактически мы получаем сигнал «вперед» или «назад», «вверх» или «вниз», и количество воздействий.
Вот пример цоколевки реального энкодера:
Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств
Интересно:
Неисправный энкодер можно заменить двумя кнопками без фиксации, и наоборот: самоделку управление в которой осуществляется двумя такими кнопками можно доработать, установив энкодер.
На видео ниже вы видите чередование сигнала на выводах – при плавных вращениях светодиоды загораются в последовательности отраженной на предыдущем графике.
Не менее наглядно это проиллюстрировано на следующей анимации (нажмите на рисунок):
Энкодер может быть и оптическим (сигнал формируется излучателями фотоприемниками, см. на рисунке ниже), и магнитным (работает на эффекте Холла). В таком случае у него нет контактов и больше срок службы.
Как уже было сказано, направление вращения можно определить по тому, какой из выходных сигналов раньше изменился, а вот так это выглядит на практике!
Точность управления зависит от разрешения энкодера – количества импульсов на оборот. Количество импульсов может быть от единиц до тысяч штук. Так как энкодер может выступать в качестве датчика положения, то чем больше импульсов – тем точнее будет происходить определение. Этот параметр обозначается как PPR – pulse per revolution.
Но есть небольшой нюанс, а именно похожее обозначение LPR – это количество меток на диске.
А количество обрабатываемых импульсов. Каждая метка на диске даёт 1 прямоугольный импульс на каждом из двух выходов. У импульса есть два фронта – задний и передний. Так как выхода два то с каждого из них мы в сумме получаем 4 импульса значения которых вы можете обработать.
PPR=LPRx4
Явно полезное:
Как не спалить Ардуино — советы для начинающих
Какие бывают дисплеи для Ардуино и как их подключить
Управление двигателями и сервоприводами с помощью Ардуино
19 шилдов для Arduino на все случаи жизни
10 интересных проектов для Ардуино
Подключаем энкодер к 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.
Если вы внимательно прочли строки, то наверняка заметили, что в одном случае первый символ приобретал значение, а в другом случае сначала изменялся второй символ.
Заключение
Инкрементальные энкодеры нашли широкое практическое применение в усилителях для акустических систем – их использовали в качестве органа управления регулятора громкости, в автомагнитолах – для регулировки параметров звука и навигации по меню, в компьютерных мышках с его помощью вы ежедневно прокручиваете страницы (на его вале установлено колесико). А также в измерительных инструментах, ЧПУ станках, роботах, в сельсинах не только в качестве органов управления, но и измерения величин и определения положения.
Смотрите также:
Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.
Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…
Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…
Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…
Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…
Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…
Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…