instructables VHDL Nadzor hitrosti motorja Odločite se o smeri in hitrosti Levi in desni krmilnik hitrosti
OPOMBA: Ta stran je del večje zgradbe. Prepričajte se, da začnete TUKAJ, da boste razumeli, kje se naslednje ujema z večjim projektom
konecview
Nadzor hitrosti in smeri motorja je eden od dveh glavnih oddelkov v robotu fotodetektorja, drugi pa je oddelek fotodetektorja ali detektorja svetlobe. Medtem ko se oddelek za fotodetektorje osredotoča na robotov vid, se oddelek za nadzor hitrosti motorja in smeri osredotoča na robotovo gibanje. Nadzor hitrosti in smeri motorja obdeluje podatke, ki jih posreduje fotodetektorski oddelek, in daje fizični rezultat v obliki gibanja motorja.
Namen te razdelitve je nadzor hitrosti in smeri levega in desnega motorja robota za iskanje svetlobe. Za določitev teh vrednosti boste potrebovali velikost in položaj svetlobe, ki jo je zajela kamera in obdelala s pragom. Potrebovali boste tudi izmerjeno hitrost vsakega od motorjev. Iz teh vhodov boste lahko oddali vrednost PWM (Pulse-Width Modulation) za vsakega od motorjev.
Da bi to dosegli, boste morali izdelati te module VHDL (prav tako na spodnji povezavi):
- Nadzor
- Izračun napake
- Binarna pretvorba
- Odsotnost vira svetlobe
Tukaj si lahko ogledate kodo VHDL za to divizijo.
Zaloge
Priporočamo kodiranje z ISE Design Suite 14.7, saj ga je mogoče uporabiti tudi za testiranje kode v VHDL. Za nalaganje kode v BASYS 3 pa boste morali namestiti Vivado (različica 2015.4 ali 2016.4) in zapisati omejitev s pripono .xdc.
Nadzor hitrosti motorja VHDL: določite smer in hitrost, levi in desni krmilnik hitrosti: stran 1
KORAK NAVODIL
1. korak: Nadzor
Da bi razumeli, kako nadzorovati vedenje robota za iskanje svetlobe, bomo razložili želeno vedenje robota, ko vidi vir svetlobe. To vedenje bo nadzorovano glede na položaj in velikost vira svetlobe.
Uporabljeni algoritem je podoben krmilniku robota RC, z eno ročico, ki jo je mogoče obrniti levo ali desno, in drugo ročico, ki jo je mogoče obrniti naprej ali nazaj.
Za iskanje svetlobe želite, da se ta robot premika v ravni črti, če je položaj svetlobnega vira tik pred robotom. Če želite to narediti, želite enako hitrost na levem in desnem motorju. Če je luč nameščena na levi strani robota, želite, da se desni motor premika hitreje od levega motorja, tako da se lahko robot obrne v levo proti svetlobi. Nasprotno, če je luč na desni strani robota, želite, da se levi motor premika hitreje kot desni motor, tako da se lahko robot obrne v desno proti svetlobi. To je analogno levi ročici krmilnika RC, kjer lahko nadzirate, ali želite premakniti robota levo, desno ali naravnost.
Nato želite, da se robot premakne naprej, če je svetlobni vir daleč (majhen svetlobni vir), ali nazaj, če je zaznani svetlobni vir preblizu (velik svetlobni vir). Prav tako želite, da bolj ko je robot oddaljen od vira svetlobe, hitreje se robot premika. To je analogno desni ročici krmilnika RC, kjer lahko nadzorujete, ali se želite premikati naprej ali nazaj in kako hitro želite, da se premika.
Nato lahko izpeljete matematično formulo za hitrost vsakega od motorjev, mi pa izberemo razpon hitrosti med -255 in 255. Negativna vrednost pomeni, da se bo motor vrtel nazaj, medtem ko pozitivna vrednost pomeni, da se bo motor vrtel naprej.
To je osnovni algoritem gibanja tega robota. Če želite izvedeti več o tem modulu, kliknite tukaj.
2. korak: Izračun napake
Ker že imate ciljno hitrost in smer za motorje, morate upoštevati tudi izmerjeno hitrost in smer motorjev. Če je dosegel ciljno hitrost, želimo, da se motor giblje izključno na svojem zagonu. Če ni, želimo motorju dodati več hitrosti. V teoriji krmiljenja je to znano kot krmilni sistem s povratno zanko.
Če želite izvedeti več o tem modulu, kliknite tukaj.
3. korak: binarna pretvorba
Iz prejšnjih izračunov ste že poznali dejanje, potrebno za vsakega od motorjev. Vendar se izračuni izvajajo z binarnim predznakom. Namen tega modula je pretvoriti te vrednosti s predznakom v vrednost, ki jo lahko prebere generator PWM, ki sta smer (v smeri urinega kazalca ali nasprotni) in hitrost (v razponu od 0 do 255). Poleg tega, ker se povratna informacija iz motorja meri v nepredznačeni binarni obliki, je potreben še en modul za pretvorbo nepredznačenih vrednosti (smer in hitrost) v predznačeno vrednost, ki jo lahko izračuna modul za izračun napake. Če želite izvedeti več o tem modulu, kliknite tukaj.
4. korak: Odsotnost vira svetlobe
Naredili ste robota, ki se premika, da bi poiskal svetlobo, ko jo robot zazna. Toda kaj se zgodi, ko robot ne zazna svetlobe? Namen tega modula je narekovati, kaj storiti, ko je takšno stanje prisotno.
Najlažji način za iskanje in vir svetlobe je, da se robot vrti na mestu. Če robot po vrtenju za določeno število sekund še vedno ni našel vira svetlobe, naj se neha premikati, da prihrani energijo. Po naslednjem nastavljenem številu sekund se mora robot znova zavrteti na mestu, da išče svetlobo. Če želite izvedeti več o tem modulu, kliknite tukaj.
5. korak: Kako deluje
Za to razlago si lahko ogledate zgornjo sliko. Kot je bilo omenjeno na začetku tega navodila, boste potrebovali vnosa »velikost« in »položaj« iz razdelka za določanje pragov. Za zagotovitev, da so bili ti vnosi veljavni (nprample, ko prejmete velikost = 0, je velikost resnično enaka nič, ker kamera ne zaznava svetlobe in ne zato, ker se je kamera še vedno inicializirala), boste potrebovali tudi nekakšen indikator, ki ga imenujemo "READY". Te podatke bo obdelal krmilnik (Ctrl. vhd), da se določi ciljna hitrost vsakega motorja (9 bitov, predznak).
Za bolj stabilen izhod na motorju želite uporabiti povratno zanko v sistemu z zaprto zanko. To zahteva vnose "smer" in "hitrost" vsakega motorja iz oddelka za merjenje hitrosti motorja. Ker želite te vnose vključiti v svoje izračune, boste morali pretvoriti te nepredznačene vrednosti v 9-bitno predznačeno dvojiško. To naredi binarni pretvornik nepredpisanega v predznačeno (US2S.vhd).
Kar naredi izračun napake (error. vhd), je odštevanje izmerjene hitrosti od ciljne hitrosti, da se določi delovanje za vsak motor. To pomeni, da ko imata oba enako vrednost, odštevanje postane nič in motor se bo premikal izključno na podlagi svojega zagona. Dodate lahko tudi faktor množenja, da bo robot hitreje dosegel ciljno hitrost.
Ker krmilnik motorja potrebuje hitrost in smer vsakega motorja, morate vrednosti dejanja s predznakom prevesti v dve ločeni vrednosti brez predznaka: hitrost (1 bit) in smer (8 bitov). To naredi binarni pretvornik s predznakom v nepredznačeni (S2US.vhd) in bo postal vhod v oddelek za krmiljenje motorja.
Dodali smo tudi modul za določanje, kaj storiti, ko svetloba ni zaznana (ni števca svetlobe. Bhd). Ker je ta modul v bistvu števec, bo štel, koliko časa potrebuje robot, da se zavrti ali ostane na mestu. To bo zagotovilo, da robot "vidi" svoje okolje in ne samo tisto, kar je pred njim, in prihranilo energijo baterije, ko svetlobni vir resnično ni na voljo.
6. korak: Združite Files
Za združevanje files, morate povezati signale iz vsakega modula. Če želite to narediti, morate narediti nov modul najvišje ravni file. Vstavite vhode in izhode prejšnjih modulov kot komponente, dodajte signale za povezave in dodelite vsaka vrata ustreznemu paru. Lahko se sklicujete na povezave na zgornji ilustraciji in si ogledate kodo tukaj.
7. korak: Preizkusite
Ko končate s celotno kodo, morate vedeti, ali vaša koda deluje, preden jo naložite na tablo, zlasti ker so lahko dele kode ustvarili različni ljudje. Za to je potrebna preskusna naprava, kjer boste vnesli navidezne vrednosti in videli, ali se koda obnaša tako, kot želimo. Začnete lahko s preizkušanjem vsakega modula in če vsi delujejo pravilno, lahko preizkusite modul najvišje ravni.
8. korak: Preizkusite na strojni opremi
Ko je vaša koda preizkušena na vašem računalniku, jo lahko preizkusite na pravi strojni opremi. Morate narediti omejitev file na Vivado (.xdc file za BASYS 3) za nadzor, kateri vhodi in izhodi gredo na katera vrata.
POMEMBNI NASVET: Na težji način smo se naučili, da imajo lahko električne komponente največjo vrednost toka ali voltages. Za vrednosti si oglejte podatkovni list. Za PMOD HB5 obvezno nastavite voltage iz vira napajanja pri 12 voltih (ker je to zahtevana voltage za motor), tok pa tako majhen, kot je potreben za premikanje motorja.
9. korak: Združite ga z drugimi deli
Če so bili prejšnji koraki uspešni, združite kodo z drugimi skupinami za končno kodo, ki bo naložena v robota. Potem, voila! Uspešno ste naredili robota za iskanje svetlobe.
10. korak: Sodelujoči
Od leve proti desni:
- Antonius Gregorius Deaven Rivaldi
- Felix Wiguna
- Nicholas Sanjaya
- Richard Medyanto
Zelo lepo: Nadzor hitrosti motorja VHDL: določite smer in hitrost, levi in desni krmilnik hitrosti: stran 6
Hvala za ponovnoviewing! Ta projekt je pravzaprav samo en del projekta razreda (Robot za iskanje svetlobe s ploščo BASYS 3 in kamero OV7670), zato bom kmalu dodal povezavo do navodil za razred!
super: Veselim se, da vidim vse skupaj.
Dokumenti / Viri
![]() |
instructables VHDL Nadzor hitrosti motorja Odločite se o smeri in hitrosti Levi in desni krmilnik hitrosti [pdfNavodila Nadzor hitrosti motorja VHDL, določanje smeri in hitrosti, levi in desni krmilnik hitrosti, hitrost motorja VHDL, krmiljenje, določanje smeri in hitrosti, levi in desni krmilnik hitrosti |