instructables-logo

instructables VHDL Motora Rapida Kontrolo Decidi Direkton kaj Rapidon Maldekstren kaj Dekstren Rapidecan Regilon

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

NOTO: Ĉi tiu paĝo estas parto de pli granda konstruo. Bonvolu certigi, ke vi komencu ĈI TIE, por ke vi komprenu, kie la jenaj konvenas en la pli granda projekto

Finiteview

Motora rapido kaj direkto kontrolo estas unu el la du ĉefaj dividoj en la fotodetektila roboto, la alia estas la fotodetektilo aŭ lumdetektila divido. Dum la fotodetektilo dividado temigas la vizion de la roboto, la motorrapideco kaj direktokontroldivido temigas la movadon de la roboto. La motoro-rapideco kaj direkta kontrolo procezas datumojn donitajn de la fotodetektilo-dividado kaj donas fizikan produktaĵon en la formo de motora movado.

La celo de ĉi tiu dividado estas kontroli la rapidecon kaj direkton de kaj la maldekstra kaj la dekstra motoro de la lumserĉa roboto. Por decidi ĉi tiujn valorojn, vi bezonos la grandecon kaj la pozicion de la lumo, kiu estis kaptita de la fotilo kaj prilaborita per sojlado. Vi ankaŭ bezonos la mezuran rapidon sur ĉiu el la motoroj. El ĉi tiuj enigaĵoj, vi povos eligi la valoron PWM (Puls-Width Modulation) por ĉiu el la motoroj.

Por atingi tion, vi devos fari ĉi tiujn VHDL-modulojn (ankaŭ ligitajn sube):

  1. La kontrolo
  2. La erarkalkulo
  3. La binara konvertiĝo
  4.  La foresto de lumfonto

Vi povas rigardi la VHDL-kodon por ĉi tiu divido ĉi tie.

Provizoj
Ni rekomendas kodi per ISE Design Suite 14.7 ĉar ĝi ankaŭ povas esti uzata por testi la kodon en VHDL. Tamen, por alŝuti la kodon en BASYS 3, vi devos instali Vivadon (ver. 2015.4 aŭ 2016.4) kaj skribi la limigon kun .xdc etendo.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-1

VHDL-Regilo de Motoro-Rapideco: Decidu Direkton kaj Rapidon, Maldekstren kaj Dekstren Rapidec-Regilon: Paĝo 1

INSTRUA PAŜO

Paŝo 1: La Kontrolo
Por kompreni kiel kontroli la konduton de la lumserĉa roboto, ni klarigos la deziratan konduton de la roboto kiam ĝi vidas lumfonton. Ĉi tiu konduto estos kontrolita laŭ la pozicio kaj grandeco de la lumfonto.instructables-VHDL-Motor-Speed-Control-Decidi-Direkto-kaj-Rapideco-Maldekstre-kaj-Dekstra-Rapideco-Regilo-

La algoritmo uzita estas analoga al RC robotregilo, kun unu levilo kiu povas esti turnita maldekstren aŭ dekstren, kaj alia levilo kiu povas esti turnita antaŭen aŭ malantaŭen.

Por serĉi lumon, vi volas, ke ĉi tiu roboto moviĝu en rekta linio se la pozicio de la lumfonto estas ĝuste antaŭ la roboto. Por fari tion, vi volas la saman rapidon ĉe la maldekstraj kaj la dekstraj motoroj. Se la lumo situas sur la maldekstra flanko de la roboto, vi volas, ke la dekstra motoro moviĝu pli rapide ol la maldekstra motoro, por ke la roboto povu turni sin maldekstren al la lumo. Male, se la lumo situas sur la dekstra flanko de la roboto, vi volas, ke la maldekstra motoro moviĝu pli rapide ol la dekstra motoro, por ke la roboto povu turni sin dekstren al la lumo. Ĉi tio estas analoga al la maldekstra levilo de RC-regilo, kie vi povas kontroli ĉu vi volas movi la roboton maldekstren, dekstren aŭ rekte.

Tiam, vi volas, ke la roboto moviĝu antaŭen se la lumfonto estas malproksime (malgranda lumfonto), aŭ moviĝu malantaŭen se la detektita lumfonto estas tro proksima (granda lumfonto). Vi ankaŭ volas, ke ju pli malproksime la roboto estas de la lumfonto, des pli rapide la roboto moviĝas. Ĉi tio estas analoga al la dekstra levilo de RC-regilo, kie vi povas kontroli ĉu vi volas antaŭen aŭ malantaŭen, kaj kiom rapide vi volas, ke ĝi moviĝu.

Vi tiam povas derivi matematikan formulon por la rapido de ĉiu el la motoroj, kaj ni elektas la rapidintervalon inter -255 ĝis 255. Negativa valoro signifas, ke la motoro turniĝos malantaŭen, dum pozitiva valoro signifas, ke la motoro turniĝos antaŭen.

Tio estas la baza algoritmo por la movado de ĉi tiu roboto. Por lerni pli pri ĉi tiu modulo, alklaku ĉi tie.

Paŝo 2: La Kalkulo de Eraro
Ĉar vi jam havas la celrapidecon kaj direkton por la motoroj, vi ankaŭ volas konsideri la mezurita rapido kaj direkto de la motoroj. Se ĝi atingis la rapidcelon, ni volas, ke la motoro movu nur laŭ sia impeto. Se ĝi ne havas, ni volas aldoni pli da rapideco al la motoro. En kontrolteorio, tio estas konata kiel fermitcikla religkontrolsistemo.

Por lerni pli pri ĉi tiu modulo, alklaku ĉi tie.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-2

Paŝo 3: La Binara Konvertiĝo
De antaŭaj kalkuloj, vi jam konis la agon necesan por ĉiu el la motoroj. Tamen, la kalkuloj estas faritaj per signita binara. La celo de ĉi tiu modulo estas konverti ĉi tiujn signitajn valorojn en valoron legeblan de la PWM-generatoro, kiuj estas la direkto (aŭ dekstrume aŭ maldekstrume) kaj la rapido (inter 0 ĝis 255). Ankaŭ, ĉar la religo de la motoro estas mezurita en sensigna binara, alia modulo estas necesa por konverti la sensignajn valorojn (direkto kaj rapideco) en signitan valoron kiu povas esti kalkulita per la erarkalkulmodulo. Por lerni pli pri ĉi tiu modulo, alklaku ĉi tie.

Paŝo 4: La Manko de Lumo Fonto
Vi faris roboton, kiu moviĝas por serĉi lumon, kiam lumo estas detektita de la roboto. Sed kio okazas kiam la roboto ne detektas lumon? La celo de ĉi tiu modulo estas dikti kion fari kiam tia kondiĉo ĉeestas.

La plej facila vojo al kaj lumfonto por serĉi estas ke la roboto turnu lokon. Post turnado de difinita nombro da sekundoj, se la roboto ankoraŭ ne trovis lumfonton, vi volas, ke la roboto ĉesu moviĝi, por ŝpari potencon. Post alia fiksita nombro da sekundoj, la roboto denove turnu sin por serĉi la lumon. Por lerni pli pri ĉi tiu modulo, alklaku ĉi tie.

Paŝo 5: Kiel Ĝi Funkcias
Vi povas raporti al la supra bildo por ĉi tiu klarigo. Kiel menciite ĉe la komenco de ĉi tiu instrukcio, vi bezonos la enigojn "grandeco" kaj "pozicio" de la sojla divido. Por certigi, ke ĉi tiuj enigaĵoj estis validaj (ekzample, kiam vi ricevas grandecon = 0, grandeco estas vere nulo ĉar la fotilo ne detektas lumon, kaj ne ĉar la fotilo ankoraŭ estis komencanta) vi ankaŭ bezonos ian indikilon, kiun ni nomas "PRETA". Ĉi tiuj datumoj estos prilaboritaj de la kontrolo (Ctrl. vhd) por determini la celrapidecon de ĉiu motoro (9 bitoj, subskribita).

Por pli stabila eligo sur la motoro, vi volas uzi retrosciigon en fermitcikla sistemo. Ĉi tio postulas la enigaĵojn "direkton" kaj "rapidecon" de ĉiu motoro de la motora rapidmezura divido. Ĉar vi volas inkluzivi ĉi tiujn enigojn al viaj kalkuloj, vi devos konverti ĉi tiujn sensignajn valorojn en 9-bitajn subskribitajn binaron. Ĉi tio estas farita de la nesubskribita al la subskribita binara konvertilo (US2S.vhd).

Kion la erarkalkulo (eraro. vhd) faras estas subtrahi la mezurita rapido de la celrapideco por determini la agon por ĉiu motoro. Ĉi tio signifas, ke kiam ambaŭ havas la saman valoron, la subtraho fariĝas nul kaj la motoro moviĝos nur laŭ sia impeto. Vi ankaŭ povas aldoni faktoron de multipliko por ke la roboto atingu la celrapidecon pli rapide.

Ĉar la motorregilo bezonas la rapidon kaj direkton de ĉiu motoro, vi devas traduki la signitajn valorojn de la ago en du apartajn sensignajn valorojn: rapido (1 bito) kaj direkto (8 bitoj). Ĉi tio estas farita de la subskribita al nesigna binara konvertilo (S2US.vhd), kaj fariĝos enigaĵoj al la motorkontrola divido.

Ni ankaŭ aldonis modulon por determini kion fari kiam lumo ne estas detektita (neniu lumo nombrilo. Bhd). Ĉar ĉi tiu modulo estas esence nombrilo, ĝi kalkulos kiom longe la roboto bezonas aŭ rotacii aŭ resti surloke. Ĉi tio certigos, ke la roboto "vidu" sian medion prefere ol nur kio estas antaŭ ĝi, kaj konservos baterian potencon kiam neniu lumfonto estas vere havebla.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-3

Paŝo 6: Kombinu la Files
Por kombini la files, vi devas konekti la signalojn de ĉiu modulo. Por fari tion, vi devas fari novan supernivelan modulon file. Enigu la enigojn kaj elirojn de la antaŭaj moduloj kiel komponantojn, aldonu signalojn por la konektoj kaj asignu ĉiun havenon al la responda paro. Vi povas rilati al la konektoj sur la ilustraĵo supre, kaj rigardi la kodon ĉi tie.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-4

Paŝo 7: Testu ĝin
Post kiam vi finis kun la tuta kodo, vi devas scii ĉu via kodo funkcias antaŭ ol vi alŝutu ĝin al la tabulo, precipe ĉar partoj de la kodo eble estas faritaj de malsamaj homoj. Ĉi tio postulas testbenkon, kie vi enigos imitajn valorojn kaj vidos ĉu la kodo kondutas kiel ni volas, ke ĝi kondutu. Vi povas ripozi komenci per testado de ĉiu modulo, kaj se ili ĉiuj funkcias ĝuste, vi povas tiam testi la plej altan modulon.

Paŝo 8: Provu ĝin sur la Aparataro
Post kiam via kodo estis provita en via komputilo, vi povas testi la kodon sur la vera aparataro. Vi devas fari la limigon file sur Vivado (.xdc file por BASYS 3) por kontroli kiuj enigaĵoj kaj eliroj iras al kiuj havenoj.

GRAVA KONSILO: Ni lernis la malfacilan manieron, ke elektraj komponantoj povus havi maksimuman valoron de kurento aŭ voltages. Nepre referu al la datumfolio por la valoroj. Por PMOD HB5, nepre agordu la voltage de la energifonto je 12 voltoj (ĉar tio estas la postulata voltage por la motoro), kaj la kurento tiom malmulte kiom necesas por ke la motoro moviĝu.

Paŝo 9: Kombinu Ĝin Kun Aliaj Partoj
Se la antaŭaj paŝoj sukcesis, kombini la kodon kun la aliaj grupoj por la fina kodo alŝutota en la roboton. Tiam, voila! Vi sukcese faris lumserĉan roboton.

Paŝo 10: Kontribuantoj
De maldekstre dekstren:

  • Antonius Gregorius Deaven Rivaldi
  • Felix Wiguna
  • Nikolao Sanjaya
  • Richard Medyantoinstructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-6

Tre bela: VHDL-Regilo de Motoro-Rapideco: Decidu Direkton kaj Rapidon, Maldekstren kaj Dekstren Rapidec-Regilon: Paĝo 6
Dankon pro reviewing! Ĉi tiu projekto estas fakte nur unu parto de klasa projekto (Lumo Serĉanta Roboto kun BASYS 3-tabulo kaj OV7670 fotilo), do mi baldaŭ aldonos la ligilon al la instruebla klaso!

Mirinda: Mi antaŭĝojas vidi ĉion kunmetita.

Dokumentoj/Rimedoj

instructables VHDL Motora Rapida Kontrolo Decidi Direkton kaj Rapidon Maldekstren kaj Dekstren Rapidecan Regilon [pdf] Instrukcioj
VHDL Motora Rapida Kontrolo Decidi Direkton kaj Rapidon Maldekstren kaj Dekstren Rapidecigilon, VHDL-Motoran Rapidon, Kontrolon Decidan Direkton kaj Rapidon Maldekstren kaj Dekstren Rapideco-Regilo

Referencoj

Lasu komenton

Via retadreso ne estos publikigita. Bezonataj kampoj estas markitaj *