Как да използвате ротационни енкодери с Arduino

  • Енкодерите са електромеханични устройства, които преобразуват движението в цифрови сигнали.
  • Те се различават от потенциометрите, защото позволяват неограничени обороти и не регулират съпротивлението.
  • Те са много полезни в проекти, където е необходим прецизен контрол на въртенето и посоката на оста.
  • Реализацията в Arduino е проста и позволява измерване както на позицията, така и на посоката на въртене.

ардуино енкодер

Лос ротационни енкодери Те са електронни компоненти, които са придобили популярност в проекти „Направи си сам“ и в екосистемата Arduino. Тези устройства позволяват четене на движение на ос, което се изразява във възможност за проследяване скорост и ъглово положение на различни системи. Въпреки това, въпреки колко полезни могат да бъдат, те често се бъркат с други устройства като потенциометри, което може да доведе до недоразумения относно използването и функционалността му.

В тази статия ще обясним подробно какво ротационни енкодери, как работят и как можете да използвате такъв с Arduino. Също така ще прегледаме връзките, използването на кода и някои практически примери, които ще ви помогнат да го интегрирате във вашите проекти по ефективен начин. Но преди да навлезете в технически подробности, важно е да разберете какво прави това устройство едно от фаворитите в проектите за електроника.

Какво е ротационен енкодер?

Схема на стъпков двигател Nema 17 и Arduino

Un ротационен енкодер Това е електромеханично устройство, което преобразува въртеливото движение на вал в поредица от сигнали, обикновено цифрови. Тези сигнали могат да бъдат използвани от система като Arduino за интерпретиране на информация, свързана с скорост на завъртане, The позиция на оста и дори на посока на въртене. За разлика от потенциометрите, които имат ограничение за броя на оборотите, енкодерите могат да се въртят неограничено.

Има различни видове ротационни енкодери, но те могат да бъдат разделени на две големи категории: абсолюти e частичното. Абсолютните енкодери осигуряват точно отчитане на позицията на вала по всяко време, без значение колко оборота е направил. От друга страна, инкременталните енкодери записват само относително движение от начална позиция, без да има абсолютна референция на ъгъла.

Най-често срещаният тип енкодер в проекти „Направи си сам“ или Arduino е инкрементален енкодер. Те са евтини, лесни за намиране и могат да се използват за широк спектър от приложения като контрол на звука, регулиране на яркостта на LCD екрани и други. Освен това много от тях включват бутон, който помага за интегрирането на допълнителни контролни действия във вашите проекти.

Как работи ротационният енкодер

Сърцето на ротационния енкодер се състои от серия от прекъсвания които се активират при всяко завъртане на вала. Това генерира цифров сигнал, който може да бъде прочетен от електронно устройство. Този тип енкодер обикновено има два основни изхода, които генерират сигнали в квадратурна фаза. Това означава, че има отместване от 90 градуса между двата сигнала, което позволява не само да се броят завоите, но и да се определи посока на въртене (по или обратно на часовниковата стрелка).

Устройството осигурява брой импулси на ход, и според броя на импулсите можем по-точно да определим движението на оста. Стандартният енкодер може да има от 20 до повече от 256 импулса на ход, в зависимост от модела. The импулсите се броят използвайки квадратурна система, която също така позволява да се определи дали въртенето е било по посока на часовниковата стрелка (CW) или обратно на часовниковата стрелка (CCW), което я прави много практична за ротационни системи. управление и навигация.

Освен това тези устройства могат да включват бутон, който действа при натискане на вала. Този бутон ви позволява да регистрирате действие, сякаш е бутон, което разширява възможностите за използване. В обобщение, енкодерът не само позволява запис на въртенето на оста, но и нейното адрес y позиция в реално време.

Разлики между ротационен енкодер и потенциометър

Много често се бърка a ротационен енкодер с потенциометър поради сходния им външен вид, но има фундаментални разлики, които ги разделят. Потенциометърът регулира стойността на съпротивлението според ъгъла на въртене, осигурявайки аналогов изход. За разлика от това, ротационният енкодер генерира поредица от цифрови импулси, които представляват въртенето на вала. Друга ключова разлика е, че енкодерите може да се върти безкрайно, докато потенциометрите имат физическо ограничение за броя на завъртанията.

Поради тези причини енкодерите са идеални за ситуации, в които се изисква непрекъснат и прецизен контрол на въртенето, като например в системи за управление на мотори, докато потенциометрите обикновено се използват за регулиране на статични параметри като обем или яркост.

Свързване на енкодер към Arduino

Свържете въртящ се енкодер към a Arduino Това е относително просто. В зависимост от модела, енкодерът ще има три основни изхода: два за канали A и B и един за бутона. Бутонът се свързва към цифров вход Arduino, докато канали A и B се свързват към два други цифрови входа.

За да получите точно отчитане на движението на енкодера, препоръчително е да използвате щифтове прекъсване на Arduino за канали A и B. Това обаче не винаги е необходимо. Ако се нуждаете само от единична или двойна точност, можете да получите показания чрез периодично запитване на тези изходи (пропитване), въпреки че това ще повлияе на ефективността на кода.

Връзката за типичен проект би била нещо подобно:

  • Канал А е свързан с D9
  • Канал B свързан към D10
  • Бутон, свързан към D11

Важно е да се гарантира, че щифтовете, избрани за прекъсвания, са правилни, тъй като не всички щифтове на платките Arduino поддържат прекъсвания. Накратко, можете да свържете енкодер без прекъсвания, но точността ще бъде по-ниска.

Код за използване на ротационен енкодер с Arduino

Arduino IDE, типове данни, програмиране

Кодът за четене на енкодер с Arduino е прост. По-долу ви показваме основен пример за разчитане на броя на импулсите, генерирани в канал A, като също определяте посока на въртене с помощта на канал B. Това е просто приближение с помощта на метода Polling, но ако имате нужда от по-голяма точност, можете да промените кода, за да работите с него прекъсвания.

const int channelPinA = 9; 
const int channelPinB = 10; 
int prevStateChannelA = 0;
int value = 0;
unsigned long currentTime = 0;
unsigned long prevTime = 0;
void setup() { 
 Serial.begin(9600); 
 pinMode(channelPinA, INPUT); 
 pinMode(channelPinB, INPUT); 
 prevStateChannelA = digitalRead(channelPinA); 
} 
void loop() { 
 currentTime = millis(); 
 int currentStateChannelA = digitalRead(channelPinA); 
 if (currentStateChannelA != prevStateChannelA) { 
 if (digitalRead(channelPinB) != currentStateChannelA) { 
 value++; 
 } else { 
 value--; 
 } 
 Serial.println(value); 
 prevStateChannelA = currentStateChannelA; 
 currentTime = millis(); 
 } 
}

Този код открива промяна на състоянието на канал A и оценява канал B, за да определи посоката, в която е завъртян енкодерът. Всеки път, когато стойността се промени, кодът ще актуализира броя на записаните импулси и ще отпечата стойността на серийния монитор.

Примери за обичайна употреба

Лос ротационни енкодери Те се използват в широка гама от професионални и домашни приложения. В областта на проектите на Arduino те могат да се използват за регулиране на параметри в реално време, като контролиране на посоката на мобилен робот, регулиране на силата на звука на високоговорител или регулиране на яркостта на LCD екран. Те също се използват широко в системи за управление на стъпкови двигатели или серво, където се изисква прецизен контрол на позицията на оста.

Едно от най-интересните приложения е създаването на интерфейси с визуална или звукова обратна връзка, където енкодерът не само настройва параметър, но също така предоставя на потребителя физическа обратна връзка като го завъртите, нещо, което не може да се постигне с традиционните бутони.

Освен това, енкодерите са изключително полезни като заместители на потенциометри в системи, които изискват по-висока степен на издръжливост, тъй като нямат ограничения за въртене, намалявайки механичното износване.

El използване на енкодери в програмирането на роботи и автономни системи също нараства. Те могат да бъдат свързани директно към колелата на робота, за да измерват прецизното движение, като по този начин оптимизират изместването и изчисленията на управлението, подобрявайки ефективността на роботите и навигационните способности.

Ротационните енкодери също намериха своето място в разработването на медицински устройства и промишлени контролни панели, където се изисква постоянен контрол на движението, за да се постигне милиметрова точност в машините.

Като цяло енкодерите са многофункционална и икономична опция за проекти, при които точното измерване на въртенето е от ключово значение.

Ако търсите икономично и ефективно решение за вашите Arduino проекти, използването на ротационни енкодери може да ви предостави отлична алтернатива на други аналогови методи за управление, като потенциометри. Способността им да осигурят прецизен контрол в широк диапазон на въртене ги прави идеални за голямо разнообразие от приложения.


Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.