Інкрементальний енкодер і Arduino: пристрій, схема підключення, код

Часто в пристроях на мікроконтролерах потрібно організувати управління пунктами меню або реалізувати якісь регулювання. Є безліч способів: за допомогою кнопок, змінні резистори або енкодери. Інкрементальний енкодер дозволяє управляти чим-небудь за допомогою нескінченного обертання ручки. У цій статті ми розглянемо, як змусити працювати інкрементальний енкодер і Arduino.

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

Інкрементальний енкодер, як і енкодери будь-яких інших типів представляють собою пристрій з обертається рукояткою. Віддалено він нагадує потенціометр. Основною відмінністю від потенціометра є те, що рукоять енкодера обертається на 360 градусів. У нього немає крайніх положень.

Енкодери бувають різних типів. Інкрементальний відрізняється тим, що з його допомогою можна дізнатися положення рукояті, а тільки сам факт обертання в якусь сторону – вліво або вправо. За кількістю імпульсів сигналу ви вже можете розрахувати на який кут він повернувся. 

Таким чином ви можете передати микроконтроллеру команду, управляти меню, рівнем гучності, наприклад, і так далі. У побуті ви могли їх бачити в автомагнітолах та іншої техніки. Його використовують в якості багатофункціонального органу регулювання рівнів, еквалайзера і навігації по меню.

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

Усередині інкрементального енкодера є диск з мітками і повзунки, які з ними стикаються. Його будова подібно потенціометра.

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

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

Який сигнал ми отримаємо? Залежно від напрямку обертання логічна одиниця спочатку з’явиться на виведення A або B, таким чином ми отримуємо зрушений по фазі сигнал, а це зрушення дозволяє визначити в який бік. Сигнал виходить у вигляді прямокутної форми, а управління мікро контролером відбувається після обробки даних напряму обертання і кількості імпульсів.

На малюнку зображено умовне позначення диска з контактами, по середині графік вихідних сигналів, а праворуч таблиця станів. Цей прилад часто малюють як дві клавіші, що логічно, адже фактично ми отримуємо сигнал «вперед» або «назад», «вгору» або «вниз», і кількість впливів.

Ось приклад цоколевки реального енкодера:

цікаво:

Несправний енкодер можна замінити двома кнопками без фіксації, і навпаки: саморобку управління в якій здійснюється двома такими кнопками можна доопрацювати, встановивши енкодер.

На відео нижче ви бачите чергування сигналу на висновках – при плавних вирощених світлодіоди спалахують в послідовності відображеної на попередньому графіку.

Не менш наочно це проілюстровано на наступному анімації (натисніть на малюнок):

Енкодер може бути і оптичним (сигнал формується випромінювачами фотоприймачами, см. На малюнку нижче), і магнітним (працює на ефекті Холла). В такому випадку у нього відсутні контакти і більше термін служби.

Як вже було сказано, напрямок обертання можна визначити по тому, який із вихідних сигналів раніше змінився, а ось так це виглядає на практиці!

Точність керування залежить від дозволу енкодера – кількості імпульсів на оборот. Кількість імпульсів може бути від одиниць до тисяч штук. Так як енкодер може виступати в якості датчика положення, то чим більше імпульсів – тим точніше буде відбуватися визначення. Цей параметр позначається як PPR – pulse per revolution.

Але є невеликий нюанс, а саме схоже позначення LPR – це кількість міток на диску.

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

PPR = LPRx4

Підключаємо до 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.

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

висновок

Інкрементальні енкодери знайшли широке практичне застосування в підсилювачах для акустичних систем – їх використовували в якості органу управління регулятора гучності, в автомагнітолах – для регулювання параметрів звуку та навігації по меню, в комп’ютерних мишок з його допомогою ви щодня прокручуєте сторінки (на його валу встановлено коліщатко) . А також в вимірювальних інструментах, ЧПУ верстатах, роботах, в сельсину не тільки в якості органів управління, а й вимірювання величин і визначення положення.

Олексій Бартош

Ссылка на основную публикацию