instructables-logo

instructables VHDL motorhastighetskontroll Bestem retning og hastighet venstre og høyre hastighetskontroller

instructables-VHDL-Motor-Speed-Control-Decide-Retection-and-Speed-Left-and-Right-Speed-Controller-PRODUCT

NOTE: Denne siden er en del av et større bygg. Sørg for at du starter HER, slik at du forstår hvor følgende passer inn i det større prosjektet

Overview

Motorhastighets- og retningskontroll er en av de to hoveddivisjonene i fotodetektorroboten, den andre er fotodetektor- eller lysdetektordivisjonen. Mens fotodetektoravdelingen fokuserer på robotens syn, fokuserer divisjonen for motorhastighet og retningskontroll på robotens bevegelse. Motorhastigheten og retningskontrollen prosessdata gitt fra fotodetektordivisjonen og gir en fysisk utgang i form av motorbevegelse.

Hensikten med denne inndelingen er å kontrollere hastigheten og retningen til både venstre og høyre motor til den lyssøkende roboten. For å bestemme disse verdiene, trenger du størrelsen og posisjonen til lyset som ble fanget av kameraet og behandlet med terskel. Du trenger også den målte hastigheten på hver av motorene. Fra disse inngangene vil du kunne sende ut PWM-verdien (Pulse-Width Modulation) for hver av motorene.

For å oppnå dette, må du lage disse VHDL-modulene (også lenket nedenfor):

  1. Kontrollen
  2. Feilberegningen
  3. Den binære konverteringen
  4.  Fraværet av en lyskilde

Du kan se på VHDL-koden for denne divisjonen her.

Rekvisita
Vi anbefaler å kode med ISE Design Suite 14.7 da den også kan brukes til å teste koden i VHDL. For å laste opp koden til BASYS 3, må du imidlertid installere Vivado (ver. 2015.4 eller 2016.4) og skrive begrensningen med .xdc-utvidelsen.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-1

VHDL motorhastighetskontroll: Bestem retning og hastighet, venstre og høyre hastighetskontroller: Side 1

INSTRUKSJONSTRINN

Trinn 1: Kontrollen
For å forstå hvordan man kontrollerer oppførselen til den lyssøkende roboten, vil vi forklare ønsket oppførsel til roboten når den ser en lyskilde. Denne oppførselen vil bli kontrollert i henhold til posisjonen og størrelsen på lyskilden.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-

Algoritmen som brukes er analog med en RC-robotkontroller, med en spak som kan dreies til venstre eller høyre, og en annen spak som kan dreies forover eller bakover.

For å søke lys vil du at denne roboten skal bevege seg i en rett linje hvis posisjonen til lyskilden er rett foran roboten. For å gjøre det, vil du ha samme hastighet på både venstre og høyre motor. Hvis lyset er plassert på venstre side av roboten, vil du at høyre motor skal bevege seg raskere enn venstre motor slik at roboten kan svinge til venstre mot lyset. Omvendt, hvis lyset er plassert på høyre side av roboten, vil du at venstre motor skal bevege seg raskere enn høyre motor slik at roboten kan svinge til høyre mot lyset. Dette er analogt med venstre spak på en RC-kontroller, hvor du kan kontrollere om du vil flytte roboten til venstre, høyre eller rett.

Deretter vil du at roboten skal bevege seg fremover hvis lyskilden er langt unna (liten lyskilde), eller bevege seg bakover hvis den oppdagede lyskilden er for nær (stor lyskilde). Du ønsker også at jo lenger unna roboten er fra lyskilden, jo raskere beveger roboten seg. Dette er analogt med høyre spak på en RC-kontroller, hvor du kan kontrollere om du vil bevege deg fremover eller bakover, og hvor raskt du vil at den skal bevege seg.

Du kan da utlede en matematisk formel for hastigheten til hver av motorene, og vi velger hastighetsområdet mellom -255 til 255. En negativ verdi betyr at motoren vil snu bakover, mens en positiv verdi betyr at motoren vil snu forover.

Det er den grunnleggende algoritmen for bevegelsen til denne roboten. For å lære mer om denne modulen, klikk her.

Trinn 2: Feilberegningen
Siden du allerede har målhastighet og retning for motorene, ønsker du også å ta hensyn til målt hastighet og retning på motorene. Hvis den har nådd hastighetsmålet, vil vi at motoren skal bevege seg utelukkende på momentum. Hvis den ikke har det, ønsker vi å legge til mer hastighet til motoren. I kontrollteori er dette kjent som et tilbakemeldingskontrollsystem med lukket sløyfe.

For å lære mer om denne modulen, klikk her.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-2

Trinn 3: Den binære konverteringen
Fra tidligere beregninger har du allerede kjent handlingen som trengs for hver av motorene. Imidlertid gjøres beregningene ved å bruke binær fortegn. Hensikten med denne modulen er å konvertere disse signerte verdiene til en verdi som kan leses av PWM-generatoren, som er retningen (enten med klokken eller mot klokken) og hastigheten (som varierer mellom 0 og 255). Siden tilbakemeldingen fra motoren måles i binær uten fortegn, trengs en annen modul for å konvertere verdiene uten fortegn (retning og hastighet) til en fortegnsverdi som kan beregnes av feilberegningsmodulen. For å lære mer om denne modulen, klikk her.

Trinn 4: Fraværet av lyskilde
Du har laget en robot som beveger seg for å søke lys når lys oppdages av roboten. Men hva skjer når roboten ikke oppdager lys? Hensikten med denne modulen er å diktere hva som skal gjøres når en slik tilstand er til stede.

Den enkleste måten å og en lyskilde å søke på er at roboten roterer på plass. Etter å ha rotert i et bestemt antall sekunder, hvis roboten fortsatt ikke har funnet en lyskilde, vil du at roboten skal slutte å bevege seg, for å spare strøm. Etter nok et angitt antall sekunder skal roboten rotere på plass igjen for å søke lyset. For å lære mer om denne modulen, klikk her.

Trinn 5: Slik fungerer det
Du kan se bildet ovenfor for denne forklaringen. Som nevnt i starten av denne instruksjonsboken, trenger du inngangene "størrelse" og "posisjon" fra terskeldivisjonen. For å sikre at disse inngangene var gyldige (f.eksample, når du mottar størrelse = 0, er størrelsen virkelig null fordi kameraet ikke registrerer lys, og ikke fordi kameraet fortsatt initialiserte), vil du også trenge en slags indikator, som vi kaller "KLAR". Disse dataene vil bli behandlet av kontrollen (Ctrl. vhd) for å bestemme målhastigheten til hver motor (9 bits, signert).

For en mer stabil utgang på motoren ønsker du å bruke tilbakemelding i et lukket sløyfesystem. Dette krever inngangene "retning" og "hastighet" til hver motor fra divisjonen for måling av motorhastighet. Siden du ønsker å inkludere disse inngangene i beregningene dine, må du konvertere disse usignerte verdiene til 9-bits binær fortegn. Dette gjøres av den usignerte til den signerte binære omformeren (US2S.vhd).

Det feilberegningen (error. vhd) gjør er å trekke den målte hastigheten fra målhastigheten for å bestemme handlingen for hver motor. Dette betyr at når begge har samme verdi, blir subtraksjonen null og motoren vil bevege seg utelukkende på sitt momentum. Du kan også legge til en multiplikasjonsfaktor slik at roboten kan nå målhastigheten raskere.

Siden motorkontrolleren trenger hastigheten og retningen til hver motor, må du oversette de signerte verdiene for handlingen til to separate verdier uten fortegn: hastighet (1 bit) og retning (8 biter). Dette gjøres av den signerte-til-usignerte binære omformeren (S2US.vhd), og vil bli innganger til motorkontrollavdelingen.

Vi har også lagt til en modul for å bestemme hva som skal gjøres når lys ikke oppdages (ingen lysteller. Bhd). Siden denne modulen i utgangspunktet er en teller, vil den telle hvor lenge roboten trenger å enten rotere eller holde seg på plass. Dette vil sikre at roboten "ser" omgivelsene i stedet for bare det som er foran den, og sparer batteristrøm når ingen lyskilde virkelig er tilgjengelig.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-3

Trinn 6: Kombiner Files
Å kombinere files, må du koble til signalene fra hver modul. For å gjøre det, må du lage en ny toppnivåmodul file. Sett inn de foregående modulenes innganger og utganger som komponenter, legg til signaler for tilkoblingene og tilordne hver port til det tilsvarende paret. Du kan referere til koblingene på illustrasjonen ovenfor, og se på koden her.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-4

Trinn 7: Test det
Etter at du er ferdig med hele koden, må du vite om koden din fungerer før du laster den opp til tavlen, spesielt siden deler av koden kan være laget av forskjellige personer. Dette krever en testbenk, hvor du vil legge inn dummy-verdier og se om koden oppfører seg slik vi vil at den skal oppføre seg. Du kan hvile start med å teste hver modul, og hvis de alle fungerer riktig, kan du deretter teste toppnivåmodulen.

Trinn 8: Prøv det på maskinvaren
Etter at koden din har blitt testet på datamaskinen din, kan du teste koden på den virkelige maskinvaren. Du må gjøre begrensningen file på Vivado (.xdc file for BASYS 3) for å kontrollere hvilke innganger og utganger som går til hvilke porter.

VIKTIG TIPS: Vi lærte på den harde måten at elektriske komponenter kan ha en maksimal verdi på strøm eller voltages. Sørg for å referere til dataarket for verdiene. For PMOD HB5, sørg for å stille inn voltage fra strømkilden ved 12 volt (da dette er nødvendig voltage for motoren), og strømmen så lite som nødvendig for at motoren skal bevege seg.

Trinn 9: Kombiner den med andre deler
Hvis de forrige trinnene var vellykkede, kombinerer du koden med de andre gruppene for at den endelige koden skal lastes opp til roboten. Så, voila! Du har med hell laget en lyssøkende robot.

Trinn 10: Bidragsytere
Fra venstre til høyre:

  • Antonius Gregorius Deaven Rivaldi
  • Felix Wiguna
  • Nicholas Sanjaya
  • Richard Medyantoinstructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-6

Veldig fint: VHDL motorhastighetskontroll: Bestem retning og hastighet, venstre og høyre hastighetskontroller: Side 6
Takk for reviewing! Dette prosjektet er faktisk bare en del av et klasseprosjekt (Light Seeking Robot med BASYS 3-kort og OV7670-kamera), så jeg legger til lenken til klassens instruksjonsbok snart!

Fantastisk: Jeg gleder meg til å se alt satt sammen.

Dokumenter / Ressurser

instructables VHDL motorhastighetskontroll Bestem retning og hastighet venstre og høyre hastighetskontroller [pdf] Instruksjoner
VHDL motorhastighetskontroll bestemme retning og hastighet venstre og høyre hastighetskontroller, VHDL motorhastighet, kontroll bestemme retning og hastighet venstre og høyre hastighetskontroller

Referanser

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket *