на главную
Карта сайта
English version
Вы читаете:

Как подключить энкодер к Ардуино

Научно-технические
6 лет назад

Как подключить энкодер к Ардуино


Для начала разберёмся детальнее, что такое энкодер.

Энкодер – это устройство, предназначенное для определения угла поворота и преобразующее данные в электрический сигнал. Другое название энкодера – "датчик угла поворота".

По выходному сигналу различают:

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

Изображение выходного сигнала инкрементного энкодера

Рис. 1. Изображение выходного сигнала инкрементного энкодера

 

С анимацией.

Схема инкрементного энкодера

Рис. 2. Схема инкрементного энкодера

 

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

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

Рис. 3. Схема принципа работы абсолютного энкодера

 

Или эта.

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

Рис. 4. Схема принципа работы абсолютного энкодера

 

Конструктивно (в зависимости от технологии измерения) экодеры могут быть:

  • Оптическими;
  • Магнитными;
  • Резисторными.

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

Начнём с инкрементных датчиков.

 

 

Подключение инкрементных энкодеров

Чтобы притянуть контакты датчика к логической единице, необходимо использовать резисторы (10кОм). Типовая схема выглядит следующим образом (плата выбрана для примера, входные контакты на Ардуино могут быть изменены на другие).

Типовая схема

Рис. 5. Типовая схема

 

Здесь приведён пример с использованием энкодера с кнопкой (есть и такие модели, кнопкой служит сама ручка).

При использовании Atmega можно просто включить встроенные резисторы микроконтроллера специальной командой.

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

Типовая схема

Рис. 6. Типовая схема

 

Существует и программный способ сглаживания дребезга за счёт использования логики прерываний (смотри скетч во вложениях к материалу). Но подключение прибора следует выполнять только на 2 и 3 пины.

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

Код для обработки данных с датчика

 

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

  • https://github.com/GreyGnome/AdaEncoder
  • https://github.com/PaulStoffregen/Encoder
  • https://github.com/mathertel/RotaryEncoder
  • и другие.

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

Отрабатывается перемещение по иерархии меню и выбор между доступными пунктами.

 

Подключение абсолютных энкодеров

Абсолютные энкодеры не так распространены, как инкрементные. И схема подключения во многом зависит от требований производителя. Так, например, высокоточный 128-битный датчик Bourns ACE-128 легко подключается к Ардуино или Raspberry Pi. Производитель предлагает свои собственные библиотеки для работы с энкодером и даже типовую схему для тестирования функционала.

Схема соединения выглядит так.

Схема соединения энкодеров

Рис. 7. Схема соединения энкодеров

 

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

Схема для тестирования с выводом числового показателя угла поворота на дисплей

Рис. 8. Схема для тестирования с выводом числового показателя угла поворота на дисплей

 

Готовая библиотека для Arduino, подробные инструкции и примеры скетчей можно найти на ГитХабе:   https://github.com/arielnh56/ACE128

Аналогично и с изделиями других производителей – необходимо изучать их рекомендации.

Автор: RadioRadar