instructables Ovládanie rýchlosti motora VHDL Rozhodnite sa pre smer a rýchlosť Ľavý a pravý ovládač rýchlosti
POZNÁMKA: Táto stránka je súčasťou väčšej zostavy. Uistite sa, že začínate TU, aby ste pochopili, kam patrí nasledujúce do väčšieho projektu
Koniecview
Riadenie rýchlosti a smeru motora je jednou z dvoch hlavných divízií vo fotodetektorovom robote, druhá je divízia fotodetektor alebo detektor svetla. Zatiaľ čo divízia fotodetektorov sa zameriava na videnie robota, divízia riadenia rýchlosti a smeru motora sa zameriava na pohyb robota. Riadenie otáčok a smeru motora spracováva dáta dané z divízie fotodetektora a dáva fyzický výstup vo forme pohybu motora.
Účelom tohto rozdelenia je ovládať rýchlosť a smer ľavého aj pravého motora robota vyhľadávajúceho svetlo. Na určenie týchto hodnôt budete potrebovať veľkosť a polohu svetla, ktoré bolo zachytené kamerou a spracované prahovaním. Budete tiež potrebovať nameranú rýchlosť na každom z motorov. Z týchto vstupov budete môcť vydať hodnotu PWM (Pulse-Width Modulation) pre každý z motorov.
Aby ste to dosiahli, budete musieť vytvoriť tieto moduly VHDL (tiež prepojené nižšie):
- Ovládanie
- Výpočet chyby
- Binárna konverzia
- Absencia svetelného zdroja
Tu si môžete pozrieť kód VHDL pre toto rozdelenie.
Zásoby
Odporúčame kódovať pomocou ISE Design Suite 14.7, pretože sa dá použiť aj na testovanie kódu vo VHDL. Ak však chcete nahrať kód do BASYS 3, budete si musieť nainštalovať Vivado (ver. 2015.4 alebo 2016.4) a napísať obmedzenie s príponou .xdc.
Ovládanie rýchlosti motora VHDL: Rozhodnite sa pre smer a rýchlosť, ľavý a pravý ovládač rýchlosti: Strana 1
INŠTRUKČNÝ KROK
Krok 1: Ovládanie
Aby sme pochopili, ako ovládať správanie robota hľadajúceho svetlo, vysvetlíme si požadované správanie robota, keď vidí zdroj svetla. Toto správanie bude riadené podľa polohy a veľkosti svetelného zdroja.
Použitý algoritmus je analogický s ovládačom RC robota s jednou pákou, ktorá sa dá otáčať doľava alebo doprava, a druhou pákou, ktorá sa dá otáčať dopredu alebo dozadu.
Aby ste hľadali svetlo, chcete, aby sa tento robot pohyboval v priamej línii, ak je pozícia svetelného zdroja priamo pred robotom. Aby ste to dosiahli, potrebujete rovnakú rýchlosť na ľavom aj pravom motore. Ak je svetlo umiestnené na ľavej strane robota, chcete, aby sa pravý motor pohyboval rýchlejšie ako ľavý motor, aby sa robot mohol otáčať doľava smerom k svetlu. Naopak, ak je svetlo umiestnené na pravej strane robota, chcete, aby sa ľavý motor pohyboval rýchlejšie ako pravý motor, aby sa robot mohol otáčať doprava smerom k svetlu. Je to analogické s ľavou pákou RC ovládača, kde môžete ovládať, či chcete pohybovať robotom doľava, doprava alebo rovno.
Potom chcete, aby sa robot pohol dopredu, ak je zdroj svetla ďaleko (malý zdroj svetla), alebo aby sa pohol dozadu, ak je detekovaný zdroj svetla príliš blízko (veľký zdroj svetla). Tiež chcete, aby čím ďalej bol robot od zdroja svetla, tým rýchlejšie sa pohyboval. Je to analogické s pravou pákou RC ovládača, kde môžete ovládať, či sa chcete pohybovať dopredu alebo dozadu a ako rýchlo chcete, aby sa pohyboval.
Potom môžete odvodiť matematický vzorec pre rýchlosť každého z motorov a zvolíme rozsah otáčok od -255 do 255. Záporná hodnota znamená, že sa motor bude otáčať dozadu, zatiaľ čo kladná hodnota znamená, že sa motor bude otáčať dopredu.
To je základný algoritmus pre pohyb tohto robota. Ak sa chcete dozvedieť viac o tomto module, kliknite sem.
Krok 2: Výpočet chýb
Keďže už máte cieľovú rýchlosť a smer pre motory, chcete vziať do úvahy aj nameranú rýchlosť a smer motorov. Ak dosiahol cieľovú rýchlosť, chceme, aby sa motor pohyboval výlučne podľa svojej hybnosti. Ak nie, chceme pridať viac rýchlosti motora. V teórii riadenia je to známe ako systém spätnej väzby s uzavretou slučkou.
Ak sa chcete dozvedieť viac o tomto module, kliknite sem.
Krok 3: Binárna konverzia
Z predchádzajúcich výpočtov ste už poznali činnosť potrebnú pre každý z motorov. Výpočty sa však vykonávajú pomocou binárneho kódu so znamienkom. Účelom tohto modulu je previesť tieto hodnoty so znamienkom na hodnoty, ktoré môže čítať generátor PWM, ktorými sú smer (buď v smere alebo proti smeru hodinových ručičiek) a rýchlosť (v rozsahu 0 až 255). Keďže spätná väzba z motora sa meria v binárnom kóde bez znamienka, je potrebný ďalší modul na prevod hodnôt bez znamienka (smer a rýchlosť) na hodnotu so znamienkom, ktorú môže vypočítať modul na výpočet chýb. Ak sa chcete dozvedieť viac o tomto module, kliknite sem.
Krok 4: Absencia svetelného zdroja
Vytvorili ste robota, ktorý sa pohybuje, aby hľadal svetlo, keď robot zaznamená svetlo. Čo sa však stane, keď robot nezaznamená svetlo? Účelom tohto modulu je diktovať, čo robiť, keď je takýto stav prítomný.
Najjednoduchší spôsob, ako nájsť zdroj svetla, je otáčať sa na mieste. Ak po otáčaní počas nastaveného počtu sekúnd robot stále nenašiel zdroj svetla, chcete, aby sa robot prestal pohybovať, aby sa ušetrila energia. Po ďalšom nastavenom počte sekúnd by sa mal robot opäť otočiť na mieste, aby hľadal svetlo. Ak sa chcete dozvedieť viac o tomto module, kliknite sem.
Krok 5: Ako to funguje
Toto vysvetlenie nájdete na obrázku vyššie. Ako je uvedené na začiatku tohto návodu, budete potrebovať vstupy „veľkosť“ a „pozícia“ z prahového rozdelenia. Aby ste sa uistili, že tieto vstupy boli platné (naprample, keď dostanete veľkosť = 0, veľkosť je skutočne nula, pretože kamera nedeteguje svetlo a nie preto, že sa kamera stále inicializovala), budete tiež potrebovať nejaký druh indikátora, ktorý nazývame „READY“. Tieto údaje spracuje riadenie (Ctrl. vhd) na určenie cieľovej rýchlosti každého motora (9 bitov, podpísané).
Pre stabilnejší výstup na motore chcete použiť spätnú väzbu v systéme s uzavretou slučkou. To si vyžaduje vstupy „smer“ a „rýchlosť“ každého motora z divízie merania rýchlosti motora. Keďže chcete zahrnúť tieto vstupy do svojich výpočtov, budete musieť tieto hodnoty bez znamienka previesť na 9-bitové binárne hodnoty so znamienkom. Toto vykoná binárny prevodník bez znamienka na podpísaný (US2S.vhd).
Výpočet chyby (chyba. vhd) robí odčítanie nameranej rýchlosti od cieľovej rýchlosti, aby sa určila akcia pre každý motor. To znamená, že keď obe majú rovnakú hodnotu, odčítanie sa stane nulou a motor sa bude pohybovať výlučne podľa svojej hybnosti. Môžete tiež pridať koeficient násobenia, aby robot mohol dosiahnuť cieľovú rýchlosť rýchlejšie.
Keďže ovládač motora potrebuje rýchlosť a smer každého motora, musíte preložiť hodnoty so znamienkom akcie do dvoch samostatných hodnôt bez znamienka: rýchlosť (1 bit) a smer (8 bitov). Toto vykoná binárny prevodník so znamienkom na nepodpísané (S2US.vhd) a stane sa vstupom do divízie riadenia motora.
Pridali sme aj modul na určenie, čo robiť, keď svetlo nie je detekované (žiadne počítadlo svetla. Bhd). Keďže tento modul je v podstate počítadlo, bude počítať, ako dlho sa musí robot otáčať alebo zostať na mieste. To zaistí, že robot „vidí“ svoje prostredie a nie len to, čo je pred ním, a šetrí energiu batérie, keď nie je skutočne dostupný žiadny svetelný zdroj.
Krok 6: Skombinujte Files
Ak chcete kombinovať files, musíte pripojiť signály z každého modulu. Aby ste to dosiahli, musíte vytvoriť nový modul najvyššej úrovne file. Vložte vstupy a výstupy predchádzajúcich modulov ako komponenty, pridajte signály pre pripojenia a priraďte každý port k zodpovedajúcemu páru. Môžete si pozrieť pripojenia na obrázku vyššie a pozrieť sa na kód tu.
Krok 7: Otestujte to
Po dokončení celého kódu musíte vedieť, či váš kód funguje, skôr ako ho nahráte na nástenku, najmä preto, že časti kódu môžu vytvárať rôzni ľudia. To si vyžaduje testbench, kde zadáte fiktívne hodnoty a uvidíte, či sa kód správa tak, ako chceme, aby sa správal. Môžete začať testovaním každého modulu a ak všetky fungujú správne, môžete otestovať modul najvyššej úrovne.
Krok 8: Vyskúšajte to na hardvéri
Po otestovaní kódu na vašom počítači môžete kód otestovať na skutočnom hardvéri. Musíte urobiť obmedzenie file na Vivado (.xdc file pre BASYS 3) na ovládanie, ktoré vstupy a výstupy idú do ktorých portov.
DÔLEŽITÝ TIP: Tvrdým spôsobom sme sa naučili, že elektrické komponenty môžu mať maximálnu hodnotu prúdu alebo objemutages. Hodnoty si určite pozrite v údajovom liste. Pre PMOD HB5 nezabudnite nastaviť objtage zo zdroja energie pri 12 voltoch (keďže toto je požadovaný objtage pre motor) a prúd taký malý, aký je potrebný na pohyb motora.
Krok 9: Skombinujte ho s inými časťami
Ak boli predchádzajúce kroky úspešné, skombinujte kód s ostatnými skupinami, aby sa konečný kód nahral do robota. Potom, voila! Úspešne ste urobili robota hľadajúceho svetlo.
Krok 10: Prispievatelia
Zľava doprava:
- Antonius Gregorius Deaven Rivaldi
- Felix Wiguna
- Nicholas Sanjaya
- Richard Medyanto
Veľmi pekné: Ovládanie rýchlosti motora VHDL: Rozhodnite sa pre smer a rýchlosť, ľavý a pravý ovládač rýchlosti: Strana 6
Ďakujem za reviewing! Tento projekt je vlastne len jednou časťou projektu triedy (robot hľadajúci svetlo s doskou BASYS 3 a kamerou OV7670), takže čoskoro pridám odkaz na pokyny pre triedu!
úžasné: Už sa teším, keď uvidím všetko dokopy.
Dokumenty / zdroje
![]() |
instructables Ovládanie rýchlosti motora VHDL Rozhodnite sa pre smer a rýchlosť Ľavý a pravý ovládač rýchlosti [pdfPokyny Ovládanie otáčok motora VHDL Rozhodnite o smere a rýchlosti Ľavý a pravý ovládač rýchlosti, Otáčky motora VHDL, Ovládajte Rozhodnite o smere a rýchlosti ľavého a pravého regulátora rýchlosti |