instructables VHDL Řízení rychlosti motoru Rozhodněte se o směru a rychlosti Levý a pravý ovladač rychlosti

POZNÁMKA: Tato stránka je součástí většího sestavení. Ujistěte se prosím, že začínáte ZDE, abyste pochopili, kam do většího projektu zapadá následující
Nadview
Řízení rychlosti a směru motoru je jednou ze dvou hlavních divizí ve fotodetektorovém robotu, druhou je divize fotodetektoru nebo detektoru světla. Zatímco divize fotodetektorů se zaměřuje na vidění robota, divize řízení rychlosti a směru motoru se zaměřuje na pohyb robota. Řízení rychlosti a směru motoru zpracuje data z divize fotodetektoru a dává fyzický výstup ve formě pohybu motoru.
Účelem tohoto rozdělení je řídit rychlost a směr levého i pravého motoru robota hledajícího světlo. K určení těchto hodnot budete potřebovat velikost a polohu světla, které bylo zachyceno kamerou a zpracováno prahováním. Budete také potřebovat naměřenou rychlost na každém z motorů. Z těchto vstupů budete moci vydávat hodnotu PWM (Pulse-Width Modulation) pro každý z motorů.
Abyste toho dosáhli, budete muset vytvořit tyto moduly VHDL (také propojené níže):
- ovládání
- Výpočet chyby
- Binární konverze
- Absence světelného zdroje
Zde se můžete podívat na kód VHDL pro toto rozdělení.
Dodávky
Doporučujeme kódovat pomocí ISE Design Suite 14.7, protože ji lze také použít k testování kódu ve VHDL. Chcete-li však nahrát kód do BASYS 3, budete muset nainstalovat Vivado (verze 2015.4 nebo 2016.4) a napsat omezení s příponou .xdc.
Ovládání rychlosti motoru VHDL: Rozhodněte se o směru a rychlosti, Levý a pravý ovladač rychlosti: Strana 1
INSTRUKČNÍ KROK
Krok 1: Ovládání
Abychom pochopili, jak ovládat chování robota hledajícího světlo, vysvětlíme požadované chování robota, když vidí zdroj světla. Toto chování bude řízeno podle polohy a velikosti světelného zdroje.
Použitý algoritmus je analogický s ovladačem RC robotu s jednou pákou, kterou lze otočit doleva nebo doprava, a druhou pákou, kterou lze otočit dopředu nebo dozadu.
Chcete-li hledat světlo, chcete, aby se tento robot pohyboval v přímé linii, pokud je poloha zdroje světla přímo před robotem. Chcete-li to provést, chcete stejnou rychlost na levém i pravém motoru. Pokud je světlo umístěno na levé straně robota, chcete, aby se pravý motor pohyboval rychleji než levý motor, aby se robot mohl otočit doleva směrem ke světlu. Naopak, pokud je světlo umístěno na pravé straně robota, chcete, aby se levý motor pohyboval rychleji než pravý motor, aby se robot mohl otočit doprava směrem ke světlu. To je analogické s levou pákou RC ovladače, kde můžete ovládat, zda chcete pohybovat robotem vlevo, vpravo nebo rovně.
Poté chcete, aby se robot pohyboval vpřed, pokud je zdroj světla daleko (malý zdroj světla), nebo aby se pohyboval dozadu, pokud je detekovaný zdroj světla příliš blízko (velký zdroj světla). Také chcete, aby čím dále byl robot od zdroje světla, tím rychleji se pohyboval. To je obdoba pravé páky RC ovladače, kde můžete ovládat, zda se chcete pohybovat vpřed nebo vzad a jak rychle chcete, aby se pohyboval.
Potom můžete odvodit matematický vzorec pro otáčky každého z motorů a zvolíme rozsah otáček mezi -255 až 255. Záporná hodnota znamená, že se motor otočí dozadu, zatímco kladná hodnota znamená, že se motor otočí dopředu.
To je základní algoritmus pro pohyb tohoto robota. Chcete-li se o tomto modulu dozvědět více, klikněte sem.
Krok 2: Výpočet chyb
Protože již máte cílovou rychlost a směr motorů, chcete také vzít v úvahu naměřenou rychlost a směr motorů. Pokud dosáhl cíle rychlosti, chceme, aby se motor pohyboval pouze na svou hybnost. Pokud ne, chceme motoru přidat další rychlost. V teorii řízení je to známé jako zpětnovazební řídicí systém s uzavřenou smyčkou.
Chcete-li se o tomto modulu dozvědět více, klikněte sem.
Krok 3: Binární konverze
Z předchozích výpočtů jste již věděli, jaká akce je nutná pro každý z motorů. Výpočty se však provádějí pomocí binárního kódu se znaménkem. Účelem tohoto modulu je převést tyto hodnoty se znaménkem na hodnotu, kterou lze přečíst generátorem PWM, což jsou směr (buď ve směru nebo proti směru hodinových ručiček) a rychlost (v rozsahu 0 až 255). Vzhledem k tomu, že zpětná vazba od motoru je měřena v binárním formátu bez znaménka, je také zapotřebí další modul pro převod hodnot bez znaménka (směr a rychlost) na hodnotu se znaménkem, kterou lze vypočítat modulem pro výpočet chyb. Chcete-li se o tomto modulu dozvědět více, klikněte sem.
Krok 4: Absence zdroje světla
Vytvořili jste robota, který se pohybuje, aby hledal světlo, když je světlo detekováno robotem. Co se ale stane, když robot nezaznamená světlo? Účelem tohoto modulu je diktovat, co dělat, když takový stav nastane.
Nejjednodušší způsob a zdroj světla k hledání je, když se robot otáčí na místě. Po otočení po nastavený počet sekund, pokud robot stále nenašel zdroj světla, chcete, aby se robot přestal pohybovat, aby se šetřila energie. Po dalším nastaveném počtu sekund by se měl robot znovu otočit na místě, aby hledal světlo. Chcete-li se o tomto modulu dozvědět více, klikněte sem.
Krok 5: Jak to funguje
Toto vysvětlení najdete na obrázku výše. Jak bylo zmíněno na začátku tohoto návodu, budete potřebovat vstupy „velikost“ a „pozice“ z dělení prahování. Abyste se ujistili, že tyto vstupy byly platné (napřample, když obdržíte velikost = 0, velikost je skutečně nula, protože kamera nedetekuje světlo a ne proto, že se kamera stále inicializovala), budete také potřebovat nějaký druh indikátoru, kterému říkáme „READY“. Tato data budou zpracována řízením (Ctrl. vhd) pro určení cílové rychlosti každého motoru (9 bitů, se znaménkem).
Pro stabilnější výstup na motoru chcete použít zpětnou vazbu v systému s uzavřenou smyčkou. To vyžaduje vstupy „směr“ a „otáčky“ každého motoru z divize měření rychlosti motoru. Protože chcete tyto vstupy zahrnout do svých výpočtů, budete muset tyto hodnoty bez znaménka převést na 9bitovou binární hodnotu se znaménkem. To se provádí binárním převodníkem bez znaménka na podepsané (US2S.vhd).
Výpočet chyby (chyba. vhd) dělá odečtení naměřené rychlosti od cílové rychlosti, aby se určila akce pro každý motor. To znamená, že když mají oba stejnou hodnotu, odečtení bude nulové a motor se bude pohybovat pouze podle své hybnosti. Můžete také přidat koeficient násobení, aby robot mohl dosáhnout cílové rychlosti rychleji.
Protože ovladač motoru potřebuje rychlost a směr každého motoru, musíte převést hodnoty se znaménkem akce do dvou samostatných hodnot bez znaménka: rychlost (1 bit) a směr (8 bitů). To se provádí binárním převodníkem se znaménkem na bez znaménka (S2US.vhd) a stane se vstupem do divize řízení motoru.
Také jsme přidali modul, který určuje, co dělat, když není detekováno světlo (žádné počítadlo světla. Bhd). Vzhledem k tomu, že tento modul je v podstatě počítadlo, bude počítat, jak dlouho musí robot rotovat nebo zůstat na místě. Tím zajistíte, že robot „vidí“ své okolí spíše než jen to, co je před ním, a šetří energii baterie, když není skutečně k dispozici žádný zdroj světla.
Krok 6: Spojte Files
Chcete-li kombinovat files, musíte připojit signály z každého modulu. Chcete-li to provést, musíte vytvořit nový modul nejvyšší úrovně file. Vložte vstupy a výstupy předchozích modulů jako komponenty, přidejte signály pro připojení a přiřaďte každý port odpovídajícímu páru. Můžete se podívat na připojení na obrázku výše a podívat se na kód zde.
Krok 7: Otestujte to
Poté, co dokončíte celý kód, musíte vědět, zda váš kód funguje, než jej nahrajete na nástěnku, zejména proto, že části kódu mohou vytvářet různí lidé. To vyžaduje testbench, kde zadáte fiktivní hodnoty a uvidíte, zda se kód chová tak, jak chceme, aby se choval. Můžete začít testováním každého modulu, a pokud všechny fungují správně, můžete otestovat modul nejvyšší úrovně.
Krok 8: Vyzkoušejte to na hardwaru
Poté, co byl váš kód otestován na vašem počítači, můžete jej otestovat na skutečném hardwaru. Musíte vytvořit omezení file na Vivado (.xdc file pro BASYS 3) řídit, které vstupy a výstupy jdou do kterých portů.
DŮLEŽITÝ TIP: Naučili jsme se tvrdě, že elektrické součástky mohou mít maximální hodnotu proudu nebo objemutages. Hodnoty najdete v datovém listu. U PMOD HB5 nezapomeňte nastavit voltage ze zdroje energie na 12 voltů (protože toto je požadovaný objemtage pro motor) a proud tak malý, jak je potřeba k pohybu motoru.
Krok 9: Zkombinujte jej s jinými díly
Pokud byly předchozí kroky úspěšné, zkombinujte kód s ostatními skupinami, aby byl konečný kód nahrán do robota. Pak, voila! Úspěšně jste vytvořili robota hledajícího světlo.
Krok 10: Přispěvatelé
Zleva doprava:
- Antonius Gregorius Deaven Rivaldi
- Felix Wiguna
- Nicholas Sanjaya
- Richard Medyanto

Velmi hezké: Ovládání rychlosti motoru VHDL: Rozhodněte se o směru a rychlosti, Levý a pravý ovladač rychlosti: Strana 6
Děkuji za reviewing! Tento projekt je ve skutečnosti pouze jednou částí třídního projektu (Light Seeking Robot s deskou BASYS 3 a kamerou OV7670), takže brzy přidám odkaz na pokyny třídy!
Děsivý: Těším se, až uvidím všechno dohromady.
Dokumenty / zdroje
![]() |
instructables VHDL Řízení rychlosti motoru Rozhodněte se o směru a rychlosti Levý a pravý ovladač rychlosti [pdfPokyny Ovládání rychlosti motoru VHDL Rozhodování o směru a rychlosti Levý a pravý ovladač rychlosti, VHDL Rychlost motoru, Ovládání Rozhodování o směru a rychlosti Levý a pravý ovladač rychlosti |





