instructables VHDL-moottorin nopeuden säädin Päätä suunnan ja nopeuden vasen ja oikea nopeussäädin
HUOMAA: Tämä sivu on osa suurempaa rakennetta. Varmista, että aloitat TÄSTÄ, jotta ymmärrät, mihin seuraava sopii suuremmassa projektissa
Yliview
Moottorin nopeuden ja suunnan ohjaus on yksi valoilmaisinrobotin kahdesta pääosastosta, toinen on valoilmaisin- tai valoilmaisinjaosto. Valodetektoriosasto keskittyy robotin visioon, kun taas moottorin nopeuden ja suunnan ohjausosasto keskittyy robotin liikkeeseen. Moottorin nopeuden ja suunnan ohjaus käsittelee valoilmaisinjaosta saatua dataa ja antaa fyysisen lähdön moottorin liikkeen muodossa.
Tämän jaon tarkoituksena on ohjata valoa etsivän robotin sekä vasemman että oikean moottorin nopeutta ja suuntaa. Näiden arvojen määrittämiseksi tarvitset kameran tallentaman ja kynnyksillä käsitellyn valon koon ja sijainnin. Tarvitset myös kunkin moottorin mitatun nopeuden. Näistä tuloista voit tulostaa kunkin moottorin PWM-arvon (Pulse-Width Modulation).
Tämän saavuttamiseksi sinun on tehtävä nämä VHDL-moduulit (linkki myös alla):
- Ohjaus
- Virheen laskeminen
- Binäärimuunnos
- Valonlähteen puuttuminen
Voit katsoa tämän jaon VHDL-koodia täältä.
Tarvikkeet
Suosittelemme koodaamaan ISE Design Suite 14.7:llä, sillä sitä voidaan käyttää myös koodin testaamiseen VHDL:ssä. Kuitenkin, jotta voit ladata koodin BASYS 3:een, sinun on asennettava Vivado (versio 2015.4 tai 2016.4) ja kirjoitettava rajoitus .xdc-laajennuksella.
VHDL-moottorin nopeudensäätö: Suunnan ja nopeuden päättäminen, Vasen ja Oikea nopeudensäädin: Sivu 1
OHJE VAIHE
Vaihe 1: Ohjaus
Ymmärtääksemme, miten valoa etsivän robotin käyttäytymistä ohjataan, selitämme robotin toivotun käytöksen, kun se näkee valonlähteen. Tätä toimintaa ohjataan valonlähteen sijainnin ja koon mukaan.
Käytetty algoritmi on analoginen RC-robottiohjaimen kanssa, jossa on yksi vipu, jota voidaan kääntää vasemmalle tai oikealle, ja toinen vipu, jota voidaan kääntää eteenpäin tai taaksepäin.
Valon etsimiseksi haluat tämän robotin liikkuvan suorassa linjassa, jos valonlähde on aivan robotin edessä. Tätä varten haluat saman nopeuden sekä vasemmalle että oikealle moottorille. Jos valo sijaitsee robotin vasemmalla puolella, haluat oikean moottorin liikkuvan nopeammin kuin vasen moottori, jotta robotti voi kääntyä vasemmalle kohti valoa. Toisaalta, jos valo sijaitsee robotin oikealla puolella, haluat vasen moottorin liikkuvan nopeammin kuin oikea moottori, jotta robotti voi kääntyä oikealle kohti valoa. Tämä on analoginen RC-ohjaimen vasemman vivun kanssa, jolla voit ohjata, haluatko siirtää robottia vasemmalle, oikealle vai suoraan.
Sitten haluat robotin liikkuvan eteenpäin, jos valonlähde on kaukana (pieni valonlähde), tai liikkuvan taaksepäin, jos havaittu valonlähde on liian lähellä (iso valonlähde). Haluat myös, että mitä kauempana robotti on valonlähteestä, sitä nopeammin robotti liikkuu. Tämä on analoginen RC-ohjaimen oikean vivun kanssa, jolla voit hallita, haluatko liikkua eteenpäin vai taaksepäin ja kuinka nopeasti haluat sen liikkuvan.
Voit sitten johtaa matemaattisen kaavan kunkin moottorin nopeudelle, ja valitsemme nopeusalueen välillä -255 - 255. Negatiivinen arvo tarkoittaa, että moottori kääntyy taaksepäin, kun taas positiivinen arvo tarkoittaa, että moottori kääntyy eteenpäin.
Tämä on tämän robotin liikkeen perusalgoritmi. Saat lisätietoja tästä moduulista napsauttamalla tätä.
Vaihe 2: Virhelaskenta
Koska sinulla on jo moottoreiden tavoitenopeus ja suunta, kannattaa ottaa huomioon myös moottoreiden mitattu nopeus ja suunta. Jos se on saavuttanut nopeustavoitteen, haluamme moottorin liikkuvan vain vauhtinsa mukaan. Jos ei, haluamme lisätä moottorin nopeutta. Ohjausteoriassa tämä tunnetaan suljetun silmukan takaisinkytkentäohjausjärjestelmänä.
Saat lisätietoja tästä moduulista napsauttamalla tätä.
Vaihe 3: Binäärimuunnos
Aiempien laskelmien perusteella olet jo tuntenut kullekin moottorille tarvittavat toiminnot. Laskelmat tehdään kuitenkin etumerkillisen binaarin avulla. Tämän moduulin tarkoituksena on muuntaa nämä etumerkityt arvot arvoiksi, jotka PWM-generaattori voi lukea. Ne ovat suunta (joko myötäpäivään tai vastapäivään) ja nopeus (välillä 0 - 255). Lisäksi, koska moottorin takaisinkytkentä mitataan etumerkittömänä binäärinä, tarvitaan toinen moduuli etumerkittömien arvojen (suunta ja nopeus) muuntamiseksi etumerkittyksi arvoksi, jonka virhelaskentamoduuli voi laskea. Saat lisätietoja tästä moduulista napsauttamalla tätä.
Vaihe 4: Valonlähteen puuttuminen
Olet tehnyt robotin, joka liikkuu etsimään valoa, kun robotti havaitsee valon. Mutta mitä tapahtuu, kun robotti ei havaitse valoa? Tämän moduulin tarkoituksena on sanella, mitä tehdä, kun tällainen tila on olemassa.
Helpoin tapa etsiä valonlähde on robotin pyöriminen paikallaan. Jos robotti ei vieläkään ole löytänyt valonlähdettä, kun robotti on pyörinyt tietyn sekuntimäärän ajan, haluat, että robotti lopettaa liikkeen virran säästämiseksi. Toisen asetetun sekuntimäärän jälkeen robotin tulee pyöriä uudelleen paikoilleen etsiäkseen valoa. Saat lisätietoja tästä moduulista napsauttamalla tätä.
Vaihe 5: Kuinka se toimii
Voit katsoa tämän selityksen yllä olevasta kuvasta. Kuten tämän ohjeen alussa mainittiin, tarvitset syötteet "koko" ja "sijainti" kynnysjaosta. Varmistaaksesi, että nämä syötteet olivat oikein (esimample, kun saat koko = 0, koko on todella nolla, koska kamera ei havaitse valoa, eikä siksi, että kamera oli vielä alustusvaiheessa), tarvitset myös jonkinlaisen ilmaisimen, jota kutsumme "VALMIS". Ohjaus (Ctrl. vhd) käsittelee nämä tiedot kunkin moottorin tavoitenopeuden määrittämiseksi (9 bittiä, allekirjoitettu).
Jotta moottorin teho olisi vakaampi, haluat käyttää takaisinkytkentää suljetussa järjestelmässä. Tämä edellyttää kunkin moottorin "suunnan" ja "nopeuden" syötteitä moottorin nopeuden mittausjaosta. Koska haluat sisällyttää nämä syötteet laskelmiisi, sinun on muutettava nämä etumerkittömät arvot 9-bittisiksi etumerkillisiksi binääriarvoiksi. Tämän tekee allekirjoittamaton binäärimuunnin (US2S.vhd).
Virhelaskenta (error. vhd) vähentää mitatun nopeuden tavoitenopeudesta määrittääkseen kunkin moottorin toiminnan. Tämä tarkoittaa, että kun molemmilla on sama arvo, vähennyksestä tulee nolla ja moottori liikkuu vain vauhtinsa mukaan. Voit myös lisätä kertoimen, jotta robotti saavuttaa tavoitenopeuden nopeammin.
Koska moottoriohjain tarvitsee kunkin moottorin nopeuden ja suunnan, sinun on muutettava toiminnan etumerkityt arvot kahdeksi erilliseksi etumerkittömäksi arvoksi: nopeus (1 bitti) ja suunta (8 bittiä). Tämän tekee signed-to-signed-binäärimuunnin (S2US.vhd), ja siitä tulee moottorin ohjausjaon tuloja.
Lisäsimme myös moduulin, joka määrittää, mitä tehdä, kun valoa ei havaita (ei valolaskuria. Bhd). Koska tämä moduuli on pohjimmiltaan laskuri, se laskee kuinka kauan robotin täytyy joko pyöriä tai pysyä paikallaan. Tämä varmistaa, että robotti "näkee" ympäristönsä sen sijaan, että se on sen edessä, ja säästää akkuvirtaa, kun valonlähdettä ei todellakaan ole saatavilla.
Vaihe 6: Yhdistä Files
Yhdistääksesi files, sinun on kytkettävä signaalit jokaisesta moduulista. Tätä varten sinun on tehtävä uusi huipputason moduuli file. Liitä aiempien moduulien tulot ja lähdöt komponentteina, lisää liitäntöjen signaalit ja määritä jokainen portti vastaavalle parille. Voit viitata yllä olevan kuvan liitäntöihin ja katsoa koodia tästä.
Vaihe 7: Testaa
Kun olet käsitellyt koko koodin, sinun on tiedettävä, toimiiko koodi ennen kuin lataat sen laudalle, varsinkin kun osa koodista saattaa olla eri ihmisten tekemiä. Tämä vaatii testipenkin, johon syötät valearvot ja katsot, käyttäytyykö koodi haluamallamme tavalla. Voit levätä ja aloittaa testaamalla jokaista moduulia, ja jos ne kaikki toimivat oikein, voit testata huipputason moduulia.
Vaihe 8: Kokeile sitä laitteistolla
Kun koodisi on testattu tietokoneellasi, voit testata koodia todellisella laitteistolla. Sinun on tehtävä rajoitus file Vivadossa (.xdc file BASYS 3) ohjaamaan, mitkä tulot ja lähdöt menevät mihinkin portteihin.
TÄRKEÄ VINKKI: Opimme kovalla tavalla, että sähkökomponenteilla voi olla virran tai tilavuuden maksimiarvotages. Muista katsoa arvot tietolomakkeesta. PMOD HB5:lle muista asettaa voltage virtalähteestä 12 voltilla (koska tämä on vaadittu tilavuustage moottorille) ja virtaa niin vähän kuin tarvitaan moottorin liikkumiseen.
Vaihe 9: Yhdistä se muihin osiin
Jos edelliset vaiheet onnistuivat, yhdistä koodi muihin ryhmiin, jotta lopullinen koodi ladataan robottiin. Siis voila! Olet onnistuneesti luonut valoa etsivän robotin.
Vaihe 10: Osallistujat
Vasemmalta oikealle:
- Antonius Gregorius Deaven Rivaldi
- Felix Wiguna
- Nicholas Sanjaya
- Richard Medyanto
Erittäin kiva: VHDL-moottorin nopeudensäätö: Suunnan ja nopeuden päättäminen, Vasen ja Oikea nopeudensäädin: Sivu 6
Kiitos reviewing! Tämä projekti on itse asiassa vain yksi osa luokkaprojektia (Light Seeking Robot BASYS 3 -levyllä ja OV7670-kameralla), joten lisään linkin luokan opetukseen pian!
Mahtava: Odotan innolla näkeväni kaiken koottuna.
Asiakirjat / Resurssit
![]() |
instructables VHDL-moottorin nopeuden säädin Päätä suunnan ja nopeuden vasen ja oikea nopeussäädin [pdfOhjeet VHDL-moottorin nopeudensäädin määrittää suunnan ja nopeuden vasen ja oikea nopeudensäädin, VHDL-moottorin nopeus, säädin määrittää suunnan ja nopeuden vasen ja oikea nopeudensäädin |