Светът на електрониката и роботиката е пълен с малки изобретения, които ни позволяват да контролираме и наблюдаваме всякакви движения. Един от най-универсалните и полезни елементи несъмнено е ротационният енкодер, както оптичен, така и магнитен. Тези устройства са станали незаменими в проектите за Arduino, автоматизация и управление на двигатели. Ако някога сте се чудили какво точно е ротационен енкодер, сигурно се чудите. Оптичен или магнитен ротационен енкодер: какво е това и примери: KY-040 и AS5600, Вие сте на правилното място.
В тази статия ще се потопим дълбоко в работата, приложенията и практическите примери на ротационни енкодери, като се фокусираме по-специално върху два много популярни модула: KY-040 и AS5600Ще научите как да разграничавате оптичните от магнитните енкодери, техните физически и електрически характеристики, как да ги свържете и програмирате в Arduino и предимствата, които всеки от тях предлага в зависимост от вашия проект. Ще ви дадем и съвети за избор и използване на тези сензори във вашите собствени проекти, обяснени по ясен и увлекателен начин, без да пропускаме никакви важни подробности.
Какво е ротационен енкодер?
Un ротационен енкодер Това е сензор, предназначен да измерва ъглово положение, скорост и посока на въртене на въртящ се вал или елемент. Това устройство преобразува въртеливото движение в електрически сигнали (обикновено цифрови импулси или аналогови сигнали), които след това могат да бъдат интерпретирани от микроконтролер, като например Arduino, Raspberry Pi или дори индустриален контролер.
Тези сензори са от съществено значение в приложения, където е необходимо да се знае точната позиция на оста или колко оборота е направила. Те обикновено се срещат в принтери, сервомотори, роботи, системи за цифрово управление и, разбира се, в „Направи си сам“ проекти, от интерфейси с менюта до системи за контрол на скоростта.
Видове ротационни енкодери: оптични срещу магнитни
Ротационните енкодери могат да бъдат разделени основно на оптици y магнитни, въпреки че има и други по-рядко срещани варианти, като например капацитивни.
Оптичен ротационен енкодер
Оптичният енкодер, подобно на KY-040Работи върху диск с маркировки или отвори и оптична предавателно-приемна система (фотодиод или LED). Докато валът се върти, прекъсванията, произведени от тези маркировки, генерират електрически импулси, които микроконтролерът може да преброи, като по този начин определи ъгловото изместване. Вътрешната му конструкция обикновено включва статична част (диск) и въртяща се част (валът, прикрепен към измервания елемент).
Този тип енкодер се отличава с висока прецизност и бърза реакция. Те са много полезни в приложения, където механичната здравина и лекотата на цифрово отчитане са ключови, като например в потребителски интерфейси, контроли на силата на звука, въртящи се менюта и образователни роботи.
Магнитен ротационен енкодер
От друга страна, магнитният енкодер използва сензор, чувствителен към магнитното поле (обикновено сензор на Хол или специализиран чип, като например AS5600), който открива ъгловото положение на магнит, свързан с вала. Тези енкодери могат да осигурят по-висока резолюция благодарение на вътрешно аналогово-цифрово преобразуване и са по-малко податливи на замърсявания или прах, тъй като не разчитат на оптични компоненти. Освен това, те обикновено предлагат цифрови (I2C или PWM) и/или аналогови изходи, което ги прави лесни за интегриране в различни електронни системи.
Инкрементални и абсолютни енкодери: ключови разлики
Светът на енкодерите е допълнително разделен на частичното y абсолюти.
- Инкрементален енкодер: Той осигурява сигнал под формата на импулси всеки път, когато валът се завърти с определена част. Броят на импулсите на оборот зависи от конструкцията и модела. За да определи текущата позиция, системата трябва да преброи и запомни тези импулси от референтна точка.
- Абсолютен енкодер: Той директно предоставя текущото ъглово положение на вала, дори ако той се е движил, докато системата е била изключена. Обикновено има специално кодиране на диска или магнитен сензор с висока резолюция.
В тази статия ще се съсредоточим върху инкрементални енкодери (като KY-040) и абсолютен магнитен енкодер (AS5600), тъй като те са най-разпространените и най-лесни за интегриране в Arduino проекти.
Обща работа на инкрементален ротационен енкодер
Лос инкрементални енкодери (като например KY-040) се състоят от два изходни канала, канал A и канал B, които генерират цифрови импулси, фазово отместени на 90º един спрямо друг. Чрез сравняване на реда, в който тези канали се променят, е възможно да се заключи посоката на въртене (по часовниковата стрелка или обратно на часовниковата стрелка), в допълнение към броенето на предприетите стъпки (позиции).
Полученият сигнал се нарича „квадратура“ и позволява различни прецизности:
- Единична точност: Записване само на един ръб в канал.
- Двойна точност: Записване на двата фланга в един канал.
- Четворна прецизност: Записване на двата фланга и на двата канала.
Ротационен енкодер KY-040: Характеристики, връзки и употреба с Arduino
El KY-040 Това е един от най-широко използваните инкрементални ротационни енкодери в света на производителите. Това е компактен, достъпен и лесен за намиране модул, специално проектиран за директно свързване към платки Arduino и други микроконтролери.
Основни технически характеристики на KY-040:
- Тип: Оптичен инкрементален
- Захранващо напрежение: 5V
- Консумация: 10 mA
- Цикли на оборот: 30
- Импулси на оборот: 20
- размер: 20 х 30 х 30 мм
- тегло: 10 грама
- Вграден бутон: Възможно е оста да се натисне навътре, сякаш е бутон, което добавя много полезна допълнителна функционалност в менютата или интерфейсите.
Разпределение на пинове:
- CLK: Канал А (импулсен изход)
- DT: Канал B (импулсен изход)
- ЮЗ: Вграден бутон
- +: 5V захранване
- GND: Земя
Как се свързва KY-040 към Arduino?
Връзката е директна и проста:
| Щифт KY-040 | Arduino Pin |
|---|---|
| CLK разширение | 2 (или произволен цифров вход) |
| DT | 3 (или произволен цифров вход) |
| SW | 4 (или произволен цифров вход) |
| + | 5V |
| GND | GND |
Може да се използва и с Raspberry Pi чрез промяна на пиновете за свързване, например чрез използване на GPIO16 за CLK, GPIO15 за DT и GPIO14 за SW.
Вътрешни работи
За разлика от потенциометрите, Ротационният енкодер KY-040 не ограничава ъгъла си на въртене., което позволява на вала да се върти неограничено. Вътре две метални четки се плъзгат по секторно разделена повърхност, затваряйки контакта в различни комбинации, засечени от канали A и B.
Енкодерът връща цифрови сигнали и на двата пина, а отместването показва посоката, в която се върти валът. Освен това, тъй като е инкрементално, абсолютната позиция е известна само докато броенето се поддържа от началото на програмата; ако захранването се загуби, броенето се нулира.
Примерен основен код за Arduino
Класически пример за използване на KY-040 е увеличаването или намаляването на брояч въз основа на посоката на въртене. Опростената схема би била:
int A = 2; int B = 3; volatile int POSITION = 0; int PREVIOUS = 0; void setup() { pinMode(A, INPUT); pinMode(B, INPUT); Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(A), encoder, LOW); } void loop() { if (POSITION != PREVIOUS) { Serial.println(POSITION); PREVIOUS = POSITION; } } void encoder() { static unsigned long lastInterrupt = 0; unsigned long InterruptionTime = millis(); if (interruptionTime - lastInterruption > 5) { // Премахване на отскока if (digitalRead(B) == HIGH){ POSITION++; } else { POSITION--; } POSITION = min(50, max(-50, POSITION)); // Ограничаване на диапазона lastInterrupt = interruptTime; } }
Този код включва защита срещу отскок, за да се предотвратят неправилни показания, дължащи се на механичния характер на контактите. Препоръчително е да се внедри тази защита във всеки проект с инкрементални енкодери.
Магнитен енкодер: Характеристики, връзки и употреба с Arduino
El AS5600 е магнитен ротационен енкодер с висока резолюция, идеален за прецизна подмяна на традиционни потенциометри, управление на двигатели и роботика. Основното му предимство е, че използва магнитно откриване, което го прави устойчив на замърсявания и механично износване, които влияят на оптичните лещи.
Основни характеристики на AS5600:
- Тип: Абсолютен, магнитен
- за решение: 12 бита (4096 позиции на оборот)
- Храна: 3,3V или 5V
- Интерфейси: I2C (цифров) или аналогов изход
- гъвкава конфигурация: Можете да изберете посока и режим на изход чрез хардуер
- Аналогов изход: Напрежение пропорционално на ъгъла, полезно за микроконтролери без I2C
- Висока прецизност и повторяемост: Вътрешната му система е подготвена да открива дори малки ъглови движения
Разводка и свързване към Arduino
| Щифт AS5600 | Función | Пин за Ардуино (I2C) |
|---|---|---|
| VCC | хранене | 5V |
| GND | Земя | GND |
| S.D.A. | I2C данни | A4 |
| SCL | I2C тактов механизъм | A5 |
| OUT | Аналогов изход (по избор) | A0 |
| ПОСОКА/РЕЖИМ | Избор на адрес/режим | Според желаната конфигурация |
Важна забележка: На различни чинии Arduino Uno, I2C пиновете може да варират. Не забравяйте да проверите схемата на вашата платка.
Примерен код за цифрово отчитане (I2C)
За да извлечете максимума от AS5600 с Arduino, най-добре е да използвате специфичната библиотека (можете да я намерите в мениджъра на библиотеките на Arduino IDE, като потърсите AS5600):
#включва #включва AS5600 енкодер; void setup() { Serial.begin(5600); Wire.begin(); if (!encoder.begin()) { Serial.println("AS9600 не е открит. Проверете връзките."); while (5600); } Serial.println("AS1 е инициализиран."); } void loop() { float angle = encoder.getAngle(); Serial.print("Ъгъл: "); Serial.print(ъгъл); Serial.println("градуси"); delay(5600); }
С този код можете да отчитате ъгъла в градуси в реално време. Той е идеален за приложения, където трябва да знаете абсолютната позиция с максимална резолюция.
Примерен код за аналогово отчитане
Ако предпочитате по-проста връзка или вашият микроконтролер не поддържа I2C, можете да се възползвате от аналоговия изход на AS5600:
const int analogPin = A0; void setup() { Serial.begin(9600); pinMode(analogPin, INPUT); } void loop() { int value = analogRead(analogPin); float angle = map(value, 0, 1023, 0, 360); Serial.print("Аналогов ъгъл: "); Serial.print(ъгъл); Serial.println("градуси"); delay(100); }
По този начин получавате показание, пропорционално на действителния ъгъл на оста според позицията на магнита.
Практически приложения и съвети за употреба
И двата енкодера имат много разнообразни приложения в електронните проекти:
- KY-040: Идеален за ротационни потребителски интерфейси, менюта, контрол на яркостта и силата на звука, избор на опции, управление на образователни роботи, проекти за домашна автоматизация и системи, изискващи ротационен контрол без абсолютна ъглова референция.
- AS5600: Идеален за контрол на позицията и скоростта на двигателя, индустриална автоматизация, отчитане на позицията в роботизирани съединения, стабилизирани системи с камери (гимбали), цифрови потенциометри с висока резолюция и всякакви приложения, изискващи прецизно отчитане на ъгъла.
Някои съвети за употреба:
- Винаги прилагайте филтриране на отскоци (потискане на вибрациите) при използване на механични инкрементални енкодери като KY-040, за да се избегнат грешни показания.
- За AS5600 се уверете, че магнитът е правилно подравнен със сензора, за да осигурите надеждни и стабилни показания.
- Не забравяйте, че при инкременталните енкодери, ако захранването бъде прекъснато, информацията за позицията се губи; това не се случва с AS5600, тъй като е абсолютен.
- Възползвайте се от множеството режими на свързване, предлагани от двата енкодера, за да ги адаптирате към специфичните нужди на вашия проект.
Сравнение: Кога да изберем оптичен енкодер и кога магнитен?
| Característica | KY-040 (инкрементален оптичен) | AS5600 (Абсолютно магнитен) |
|---|---|---|
| Тип сигнал | Цифров (квадратура) | Цифров (I2C)/Аналогов |
| резолюция | 20 импулса/оборот | 4096 позиции/обиколка |
| Работи след прекъсване на захранването | Не (изисква рестартиране на броенето) | Да (абсолютна позиция) |
| Чувствителност към прах/мръсотия | Чувствителни (механични части) | Много здрав |
| цена | Много икономичен | умерено |
| Трудност на интеграцията | Много лесно с основен код | Изисква I2C библиотека или програмиране |
| Типични приложения | UX, менюта, лесно управление | Управление на двигателя, усъвършенствана роботика |
Изборът между двата ще зависи от приоритетите на вашия проект: простота и ниска цена в случая на KY-040 и прецизност и здравина в случая на AS5600.
