instructables VHDL Kontrola brzine motora Odlučite o smjeru i brzini Lijeva i desna kontrola brzine

NAPOMENA: Ova stranica je dio veće građe. Obavezno započnite OVDJE, kako biste razumjeli gdje se sljedeće uklapa u veći projekat
Gotovoview
Kontrola brzine i smjera motora je jedna od dvije glavne podjele u fotodetektorskom robotu, a druga je podjela fotodetektora ili svjetlosnog detektora. Dok se odjeljak fotodetektora fokusira na robotov vid, odjel za kontrolu brzine i smjera motora fokusira se na kretanje robota. Podaci za kontrolu brzine i smjera motora dati su iz fotodetektorske podjele i daju fizički izlaz u obliku kretanja motora.
Svrha ove podjele je kontrola brzine i smjera lijevog i desnog motora robota koji traži svjetlost. Da biste odredili ove vrijednosti, trebat će vam veličina i položaj svjetla koje je kamera uhvatila i obradila pragom. Također će vam trebati izmjerena brzina na svakom od motora. Iz ovih ulaza, moći ćete da izbacite PWM (Pulse-Width Modulation) vrijednost za svaki od motora.
Da biste to postigli, morat ćete napraviti ove VHDL module (takođe povezane ispod):
- Kontrola
- Proračun greške
- Binarna konverzija
- Nedostatak izvora svjetlosti
Ovdje možete pogledati VHDL kod za ovu podjelu.
Zalihe
Preporučujemo da kodirate sa ISE Design Suite 14.7 jer se može koristiti i za testiranje koda u VHDL-u. Međutim, da biste prenijeli kod u BASYS 3, morat ćete instalirati Vivado (ver. 2015.4 ili 2016.4) i napisati ograničenje sa ekstenzijom .xdc.
VHDL kontrola brzine motora: Odlučite o smjeru i brzini, Lijevi i desni kontroler brzine: Stranica 1
UPUTSTVO KORAK
Korak 1: Kontrola
Da bismo razumjeli kako kontrolirati ponašanje robota koji traži svjetlost, objasnit ćemo željeno ponašanje robota kada vidi izvor svjetlosti. Ovo ponašanje će se kontrolirati prema položaju i veličini izvora svjetlosti.
Korišteni algoritam je analogan kontroleru RC robota, s jednom polugom koja se može okretati lijevo ili desno, a drugom polugom koja se može okretati naprijed ili nazad.
Da biste tražili svjetlost, želite da se ovaj robot kreće pravolinijski ako je položaj izvora svjetlosti točno ispred robota. Da biste to učinili, želite istu brzinu i na lijevom i na desnom motoru. Ako se svjetlo nalazi na lijevoj strani robota, želite da se desni motor kreće brže od lijevog motora kako bi se robot mogao okrenuti lijevo prema svjetlu. Suprotno tome, ako se svjetlo nalazi na desnoj strani robota, želite da se lijevi motor kreće brže od desnog motora tako da se robot može okrenuti udesno prema svjetlu. Ovo je analogno lijevoj poluzi RC kontrolera, gdje možete kontrolirati da li želite pomicati robota lijevo, desno ili pravo.
Zatim, želite da se robot kreće naprijed ako je izvor svjetlosti daleko (mali izvor svjetlosti), ili da se kreće unazad ako je detektovani izvor svjetlosti preblizu (veliki izvor svjetlosti). Također želite da što je robot dalje od izvora svjetlosti, to se robot brže kreće. Ovo je analogno desnoj poluzi RC kontrolera, gdje možete kontrolirati da li želite da se krećete naprijed ili nazad i koliko brzo želite da se kreće.
Zatim možete izvesti matematičku formulu za brzinu svakog od motora, a mi biramo raspon brzine između -255 do 255. Negativna vrijednost znači da će se motor okrenuti unazad, dok pozitivna vrijednost znači da će se motor okretati naprijed.
To je osnovni algoritam za kretanje ovog robota. Da saznate više o ovom modulu, kliknite ovdje.
Korak 2: Izračun greške
Pošto već imate ciljnu brzinu i smjer za motore, također želite uzeti u obzir izmjerenu brzinu i smjer motora. Ako je dostigao cilj brzine, želimo da se motor kreće isključivo svojim zamahom. Ako nije, želimo dodati više brzine motoru. U teoriji upravljanja, ovo je poznato kao upravljački sistem sa povratnom spregom zatvorene petlje.
Da biste saznali više o ovom modulu, kliknite ovdje.
Korak 3: Binarna konverzija
Iz prethodnih proračuna, već ste znali akciju koja je potrebna za svaki od motora. Međutim, kalkulacije se vrše korišćenjem binarne oznake sa predznakom. Svrha ovog modula je da pretvori ove potpisane vrijednosti u vrijednost koju PWM generator može očitati, a to su smjer (u smjeru kazaljke na satu ili suprotno od kazaljke na satu) i brzina (u rasponu od 0 do 255). Također, budući da se povratna sprega od motora mjeri u neoznačenoj binarnoj vrijednosti, potreban je još jedan modul za pretvaranje neoznačenih vrijednosti (smjer i brzina) u vrijednost s predznakom koju može izračunati modul za izračunavanje greške. Da biste saznali više o ovom modulu, kliknite ovdje.
Korak 4: Odsustvo izvora svjetlosti
Napravili ste robota koji se kreće da traži svjetlost kada robot detektuje svjetlost. Ali šta se dešava kada robot ne detektuje svetlost? Svrha ovog modula je da diktira šta učiniti kada je takvo stanje prisutno.
Najlakši način za traženje izvora svjetlosti je da se robot rotira na mjestu. Nakon rotacije u određenom broju sekundi, ako robot još uvijek nije pronašao izvor svjetlosti, želite da robot prestane da se kreće, kako bi uštedio energiju. Nakon još jednog određenog broja sekundi, robot bi se trebao ponovo rotirati na mjestu kako bi potražio svjetlo. Da biste saznali više o ovom modulu, kliknite ovdje.
Korak 5: Kako to funkcionira
Za ovo objašnjenje možete pogledati gornju sliku. Kao što je spomenuto na početku ovog uputstva, trebat će vam "veličina" i "pozicija" unosa iz podjele praga. Da biste bili sigurni da su ovi unosi valjani (nprample, kada dobijete size = 0, veličina je zaista nula jer kamera ne detektuje svjetlo, a ne zato što se kamera još uvijek inicijalizira) trebat će vam i neka vrsta indikatora, koju zovemo “SPREMNO”. Ovi podaci će biti obrađeni od strane kontrole (Ctrl. vhd) kako bi se odredila ciljna brzina svakog motora (9 bita, predznak).
Za stabilniji izlaz na motoru, želite koristiti povratnu informaciju u sistemu zatvorene petlje. Ovo zahtijeva ulaze “smjer” i “brzinu” svakog motora iz odjeljenja za mjerenje brzine motora. Pošto želite da uključite ove ulaze u svoje proračune, moraćete da konvertujete ove neoznačene vrednosti u 9-bitni binarni zapis sa predznakom. Ovo radi nepotpisani u potpisani binarni pretvarač (US2S.vhd).
Ono što izračunavanje greške (greška. vhd) radi je oduzimanje izmjerene brzine od ciljne brzine kako bi se odredilo djelovanje za svaki motor. To znači da kada oba imaju istu vrijednost, oduzimanje postaje nula i motor će se kretati isključivo svojim zamahom. Također možete dodati faktor množenja kako bi robot mogao brže postići ciljnu brzinu.
Budući da je kontroleru motora potrebna brzina i smjer svakog motora, morate prevesti predznačene vrijednosti akcije u dvije odvojene neoznačene vrijednosti: brzinu (1 bit) i smjer (8 bita). Ovo radi binarni pretvarač sa znakom u neoznačeno (S2US.vhd), i postat će ulazi u odjeljak za upravljanje motorom.
Dodali smo i modul za određivanje šta učiniti kada se svjetlost ne detektuje (bez brojača svjetla. Bhd). Budući da je ovaj modul u osnovi brojač, on će brojati koliko dugo robotu treba da se okreće ili ostane na mjestu. Ovo će osigurati da robot "vidi" svoje okruženje, a ne samo ono što je ispred njega, i uštedjeti energiju baterije kada izvor svjetlosti nije zaista dostupan.
Korak 6: Kombinirajte Files
Za kombinovanje files, morate povezati signale sa svakog modula. Da biste to učinili, morate napraviti novi modul najvišeg nivoa file. Ubacite ulaze i izlaze prethodnih modula kao komponente, dodajte signale za konekcije i dodijelite svaki port odgovarajućem paru. Možete pogledati veze na gornjoj ilustraciji i pogledati kod ovdje.
Korak 7: Testirajte
Nakon što završite s cijelim kodom, morate znati da li vaš kod radi prije nego što ga učitate na ploču, pogotovo jer dijelove koda mogu izraditi različiti ljudi. Ovo zahtijeva testbench, gdje ćete unijeti lažne vrijednosti i vidjeti da li se kod ponaša onako kako želimo da se ponaša. Možete se odmoriti od početka testiranjem svakog modula, a ako svi rade ispravno, možete testirati modul najviše razine.
Korak 8: Isprobajte na hardveru
Nakon što je vaš kod testiran na vašem računaru, možete ga testirati na stvarnom hardveru. Morate napraviti ograničenje file na Vivadu (.xdc file za BASYS 3) za kontrolu koji ulazi i izlazi idu na koje portove.
VAŽAN SAVET: Naučili smo na teži način da električne komponente mogu imati maksimalnu vrijednost struje ili zapreminetages. Obavezno pogledajte tablicu podataka za vrijednosti. Za PMOD HB5, obavezno podesite voltage iz izvora napajanja na 12 volti (jer je ovo potrebna voltage za motor), i struju onoliko malo koliko je potrebno da se motor pokrene.
Korak 9: Kombinirajte ga s drugim dijelovima
Ako su prethodni koraci bili uspješni, kombinirajte kod s drugim grupama da bi konačni kod bio učitan u robota. Onda, voila! Uspješno ste napravili robota koji traži svjetlost.
Korak 10: Saradnici
S lijeva na desno:
- Antonius Gregorius Deaven Rivaldi
- Felix Wiguna
- Nicholas Sanjaya
- Richard Medyanto

Jako lijepo: VHDL kontrola brzine motora: Odlučite o smjeru i brzini, Lijevi i desni kontroler brzine: Stranica 6
Hvala vam na reviewing! Ovaj projekat je zapravo samo jedan dio projekta klase (Light Seeking Robot sa BASYS 3 pločom i OV7670 kamerom), tako da ću uskoro dodati link do instruktora za razred!
super: Jedva čekam da vidim sve zajedno.
Dokumenti / Resursi
![]() |
instructables VHDL Kontrola brzine motora Odlučite o smjeru i brzini Lijeva i desna kontrola brzine [pdfUpute VHDL Kontrola brzine motora Odlučite o smjeru i brzini Lijevi i desni kontroler brzine, VHDL brzina motora, kontrola Odlučite smjer i brzina Lijevi i desni kontroler brzine |





