instructables-лого

instructables VHDL управление на скоростта на двигателя Решете посоката и скоростта Ляв и десен регулатор на скоростта

instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-PRODUCT

ЗАБЕЛЕЖКА: Тази страница е част от по-голяма компилация. Моля, уверете се, че започвате ТУК, за да разберете къде се вписва следното в рамките на по-големия проект

крайview

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

Целта на това разделение е да контролира скоростта и посоката както на левия, така и на десния двигател на светлотърсещия робот. За да определите тези стойности, ще ви трябват размерът и позицията на светлината, която е била уловена от камерата и обработена чрез прагове. Ще ви е необходима и измерената скорост на всеки от двигателите. От тези входове ще можете да изведете стойността на PWM (широчинно-импулсна модулация) за всеки от двигателите.

За да постигнете това, ще трябва да направите тези VHDL модули (също свързани по-долу):

  1. Контролът
  2. Изчислението на грешката
  3. Двоичното преобразуване
  4.  Липсата на източник на светлина

Можете да разгледате VHDL кода за това разделение тук.

Консумативи
Препоръчваме да кодирате с ISE Design Suite 14.7, тъй като може да се използва и за тестване на кода във VHDL. Въпреки това, за да качите кода в BASYS 3, ще трябва да инсталирате Vivado (версия 2015.4 или 2016.4) и да напишете ограничението с разширение .xdc.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-1

VHDL контрол на скоростта на двигателя: Решете посоката и скоростта, Ляв и десен контролер на скоростта: Страница 1

СТЪПКА НА ИНСТРУКЦИЯТА

Стъпка 1: Контрол
За да разберем как да контролираме поведението на търсещия светлина робот, ще обясним желаното поведение на робота, когато види източник на светлина. Това поведение ще се контролира според позицията и размера на източника на светлина.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-

Използваният алгоритъм е аналогичен на RC робот контролер, с един лост, който може да се върти наляво или надясно, и друг лост, който може да се върти напред или назад.

За да търсите светлина, искате този робот да се движи по права линия, ако позицията на източника на светлина е точно пред робота. За да направите това, искате една и съща скорост на левия и десния двигател. Ако светлината е разположена от лявата страна на робота, искате десният двигател да се движи по-бързо от левия, така че роботът да може да се обърне наляво към светлината. Обратно, ако светлината е разположена от дясната страна на робота, искате левият двигател да се движи по-бързо от десния двигател, така че роботът да може да се обърне надясно към светлината. Това е аналогично на левия лост на RC контролер, където можете да контролирате дали искате да преместите робота наляво, надясно или направо.

След това искате роботът да се движи напред, ако източникът на светлина е далеч (малък източник на светлина), или да се движи назад, ако откритият източник на светлина е твърде близо (голям източник на светлина). Също така искате колкото по-далеч е роботът от източника на светлина, толкова по-бързо се движи роботът. Това е аналогично на десния лост на RC контролер, където можете да контролирате дали искате да се движите напред или назад и колко бързо искате да се движи.

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

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

Стъпка 2: Изчисляване на грешката
Тъй като вече имате целевата скорост и посока за двигателите, вие също искате да вземете предвид измерената скорост и посока на двигателите. Ако е достигнал целта за скорост, ние искаме двигателят да се движи единствено на своя импулс. Ако не е, искаме да добавим повече скорост към двигателя. В теорията на управлението това е известно като система за управление със затворен цикъл с обратна връзка.

За да научите повече за този модул, щракнете тук.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-2

Стъпка 3: Двоично преобразуване
От предишни изчисления вече знаете действието, необходимо за всеки от двигателите. Изчисленията обаче се извършват с помощта на двоичен код със знак. Целта на този модул е ​​да преобразува тези стойности със знак в стойност, която може да бъде прочетена от ШИМ генератора, което е посоката (или по посока на часовниковата стрелка, или обратно на часовниковата стрелка) и скоростта (между 0 до 255). Освен това, тъй като обратната връзка от двигателя се измерва в двоичен код без знак, е необходим друг модул за преобразуване на стойностите без знак (посока и скорост) в стойност със знак, която може да бъде изчислена от модула за изчисляване на грешката. За да научите повече за този модул, щракнете тук.

Стъпка 4: Липсата на източник на светлина
Вие сте направили робот, който се движи, за да търси светлина, когато светлината бъде открита от робота. Но какво се случва, когато роботът не открие светлина? Целта на този модул е ​​да диктува какво да се прави, когато е налице такова състояние.

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

Стъпка 5: Как работи
Можете да се обърнете към снимката по-горе за това обяснение. Както бе споменато в началото на тази инструкция, ще ви трябват входовете „размер“ и „позиция“ от раздела за прагове. За да се уверите, че тези въведени данни са валидни (напрampнапример, когато получите размер = 0, размерът наистина е нула, защото камерата не открива светлина, а не защото камерата все още се инициализира), ще ви трябва и някакъв вид индикатор, който наричаме „ГОТОВ“. Тези данни ще бъдат обработени от управлението (Ctrl. vhd), за да се определи целевата скорост на всеки двигател (9 бита, със знак).

За по-стабилен изход на двигателя, искате да използвате обратна връзка в система със затворен контур. Това изисква входове „посока“ и „скорост“ на всеки двигател от отдела за измерване на скоростта на двигателя. Тъй като искате да включите тези входни данни във вашите изчисления, ще трябва да преобразувате тези стойности без знак в 9-битови двоични данни със знак. Това се прави от неподписан към подписан двоичен конвертор (US2S.vhd).

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

Тъй като контролерът на двигателя се нуждае от скоростта и посоката на всеки двигател, трябва да преведете стойностите със знак на действието в две отделни стойности без знак: скорост (1 бит) и посока (8 бита). Това се прави от двоичния преобразувател от знак към неподписан (S2US.vhd) и ще стане вход към отдела за управление на двигателя.

Също така добавихме модул, за да определим какво да правим, когато светлината не бъде открита (няма светлинен брояч. Bhd). Тъй като този модул е ​​основно брояч, той ще брои колко време трябва на робота да се завърти или да остане на място. Това ще гарантира, че роботът „вижда“ своята среда, а не само това, което е пред него, и ще спести енергия от батерията, когато наистина няма източник на светлина.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-3

Стъпка 6: Комбинирайте Files
За да комбинирате files, трябва да свържете сигналите от всеки модул. За да направите това, трябва да направите нов модул от най-високо ниво file. Вмъкнете входовете и изходите на предишните модули като компоненти, добавете сигнали за връзките и задайте всеки порт към съответната двойка. Можете да се обърнете към връзките на илюстрацията по-горе и да разгледате кода тук.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-4

Стъпка 7: Тествайте го
След като приключите с целия код, трябва да знаете дали вашият код работи, преди да го качите на дъската, особено след като части от кода може да са направени от различни хора. Това изисква тестова стенда, където ще въведете фиктивни стойности и ще видите дали кодът се държи по начина, по който искаме да се държи. Можете да започнете с почивка, като тествате всеки модул и ако всички работят правилно, можете да тествате модула от най-високо ниво.

Стъпка 8: Опитайте на хардуера
След като вашият код бъде тестван на вашия компютър, можете да тествате кода на реалния хардуер. Трябва да направите ограничението file на Vivado (.xdc file за BASYS 3), за да контролирате кои входове и изходи към кои портове отиват.

ВАЖЕН СЪВЕТ: Научихме по трудния начин, че електрическите компоненти могат да имат максимална стойност на ток или обемtagес. Не забравяйте да се обърнете към листа с данни за стойностите. За PMOD HB5 не забравяйте да зададете силата на звукаtage от източника на захранване при 12 волта (тъй като това е необходимият обtage за двигателя) и тока толкова малък, колкото е необходим за движение на двигателя.

Стъпка 9: Комбинирайте го с други части
Ако предишните стъпки са били успешни, комбинирайте кода с другите групи за крайния код, който да бъде качен в робота. Тогава, готово! Успешно направихте светлотърсещ робот.

Стъпка 10: Сътрудници
Отляво надясно:

  • Антоний Грегориус Дивън Ривалди
  • Феликс Вигуна
  • Николас Санджая
  • Ричард Медянтоinstructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-6

Много добре: VHDL контрол на скоростта на двигателя: Решете посоката и скоростта, Ляв и десен контролер на скоростта: Страница 6
Благодаря ви за повторноviewing! Този проект всъщност е само една част от проект на клас (Робот за търсене на светлина с платка BASYS 3 и камера OV7670), така че скоро ще добавя връзката към инструкцията на класа!

страхотно: Очаквам с нетърпение да видя всичко заедно.

Документи / Ресурси

instructables VHDL управление на скоростта на двигателя Решете посоката и скоростта Ляв и десен регулатор на скоростта [pdfИнструкции
VHDL управление на скоростта на мотора Определяне на посоката и скоростта Ляв и десен контролер на скоростта, VHDL скорост на двигателя, управление Определяне на посоката и скоростта Ляв и десен контролер на скоростта

Референции

Оставете коментар

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