Съдържание:
Видео: Ротационен енкодер - Разберете и го използвайте (Arduino/друг ΜКонтролер): 3 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Ротационен енкодер е електромеханично устройство, което преобразува въртеливото движение в цифрова или аналогова информация. Може да се върти по часовниковата стрелка или обратно. Има два вида ротационни енкодери: абсолютни и относителни (инкрементални) енкодери.
Докато абсолютният енкодер извежда стойност, пропорционална на текущия ъгъл на вала, инкрементният енкодер извежда стъпката на вала и неговата посока. (В този случай имаме инкрементален енкодер)
Ротационните енкодери стават все по -популярни, защото можете да използвате две функции в един електрически модул: Прост превключвател за потвърждаване на работа и въртящ се енкодер за навигация, напр. чрез меню.
Инкрементален въртящ се енкодер генерира два изходни сигнала, докато валът му се върти. В зависимост от посоката, един от сигналите води другия. (виж отдолу)
Стъпка 1: Разбиране на изходните данни
Както можете да видите, когато валът на енкодера започне да се върти по посока на часовниковата стрелка, изход A пада първо на LOW и изход B го следва. В посока обратна на часовниковата стрелка операцията се обръща обратно.
Сега просто трябва да приложим това на нашия µController (използвах Arduino Nano).
Стъпка 2: Изградете веригата
Както описах преди изходите създават HIGH и LOW фланг. За да получим чиста HIGH на данните за изводи A и B на µController, трябва да добавим Pull-Up резистори. Общият щифт C отива направо към земята за НИСКИЯ фланг.
За да получим информация за вътрешния превключвател (бутон) ще използваме другите два щифта. Един от тях отива към VCC, а другият към пин за данни на µController. Трябва също да добавим издърпващ се резистор към щифта за данни, за да получим чисто LOW.
Възможно е също така да използвате вътрешни издърпващи и издърпващи резистори на вашия µКонтролер!
В моя случай разпечатката изглежда така:
- +3, 3V => +3, 3V (Arduino) (също възможно +5V)
- GND => GND (Arduino)
- A => Pin10
-
B =>
ПИН
11
- C => GND
-
SW =>
ПИН
12
Стъпка 3: Написване на кода
int pinA = 10; // вътрешен превключвател A int pinB = 11; // вътрешен превключвател B int pinSW = 12; // превключвател (натиснат енкодер) int encoderPosCount = 0; // започва от нула, променя се, ако искате
int positionval;
bool switchval; int mrotateLast; int mrotate;
void setup () {
int mrotateLast = digitalRead (pinA); Serial.begin (9600); забавяне (50); }
void loop () {readencoder (); if (readwitch () == 1) {Serial.println ("Switch = 1"); }}
int readencoder () {
mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// копчето се върти if (digitalRead (pinB)! = mrotate) {// превключвател A се променя първо -> въртящ се енкодер по часовниковата стрелкаPosCount ++; Serial.println ("завъртян по часовниковата стрелка"); } else {// превключвателят B се промени първо-> въртящ се обратно на часовниковата стрелка encoderPosCount--; Serial.println ("завъртян обратно на часовниковата стрелка"); }
Serial.print ("Позиция на енкодера:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; return encoderPosCount; } bool readwitch () {
if (digitalRead (pinSW)! = 0) {// бутонът е натиснат
while (digitalRead (pinSW)! = 0) {} // превключвателят в момента е натиснат switchval = 1; } else {switchval = 0;} // превключвателят е без натиск връщане switchval; }
Сега можете да завъртите енкодера и променливият енкодерPosCount ще брои нагоре, ако завъртите по посока на часовниковата стрелка и отброявате, ако се завъртите обратно на часовниковата стрелка.
Това е! Просто и полезно.
Чувствайте се свободни да променяте и изпълнявате кода. Можете да го внедрите във вашия проект.
Ще кача и светодиоден проект, в който използвах енкодера, за да задам яркостта на моите светодиоди.
Препоръчано:
Друг ротационен превключвател с предимно 3D печат: 7 стъпки (със снимки)
Друг ротационен превключвател с предимно 3D печат: Преди малко създадох Ротационен превключвател с предимно 3D печат специално за моя проект Minivac 601 Replica. За новия си проект Think-a-Tron 2020 се нуждая от още един ротационен превключвател. Търся превключвател за монтаж на панел SP5T. Добавка
Ротационен енкодер, използващ Arduino Nano: 4 стъпки
Ротационен енкодер, използващ Arduino Nano: Здравейте на всички, В тази статия ще направя урок за това как да използвате въртящ се енкодер с помощта на Arduino Nano. За да използвате този ротационен енкодер, не се нуждаете от външна библиотека. Така че можем директно да създаваме програми, без първо да добавяме библиотеки. добре, нека започнем
Ротационен енкодер: Как работи и как да се използва с Arduino: 7 стъпки
Ротационен енкодер: Как работи и как да се използва с Arduino: Можете да прочетете този и други невероятни уроци на официалния уебсайт на ElectroPeak Обзор В този урок ще научите как да използвате въртящия се енкодер. Първо ще видите информация за ротационния енкодер, а след това ще научите как да
Ротационен енкодер със STM32 Nucleo Board: 12 стъпки
Ротационен енкодер със STM32 Nucleo Board: Това е Урок за получаване на позиция на Ротационен енкодер, който е инкрементен тип енкодер. Енкодерите са два вида като цяло:- единият е инкрементален, друг е абсолютен. Този код може да се използва за микроконтролери STM32L476 и STM32L0 .Но ако
Урок за ротационен енкодер с Arduino: 6 стъпки
Урок за ротационен енкодер с Arduino: Ротационният енкодер е електронен компонент, способен да следи движението и позицията при въртене. Ротационният енкодер използва оптични сензори, които могат да генерират импулси, когато ротационният енкодер се върти. Прилагане на въртящия се енкодер обикновено като mec