instructables-logo

instructables VHDL Motorhastighedskontrol Bestem retning og hastighed venstre og højre hastighedskontrol

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

NOTE: Denne side er en del af en større build. Sørg for, at du starter HER, så du forstår, hvor følgende passer ind i det større projekt

Overview

Motorhastigheds- og retningskontrol er en af ​​de to hovedopdelinger i fotodetektorrobotten, den anden er fotodetektor- eller lysdetektorafdelingen. Mens fotodetektordivisionen fokuserer på robottens udsyn, fokuserer afdelingen for motorhastighed og retningskontrol på robottens bevægelse. Motorhastigheds- og retningsstyringen procesdata givet fra fotodetektordivisionen og giver et fysisk output i form af motorbevægelse.

Formålet med denne opdeling er at styre hastigheden og retningen af ​​både venstre og højre motor i den lyssøgende robot. For at bestemme disse værdier skal du bruge størrelsen og positionen af ​​det lys, der var blevet fanget af kameraet og behandlet med tærskelværdi. Du skal også bruge den målte hastighed på hver af motorerne. Fra disse input vil du være i stand til at udlæse PWM-værdien (Pulse-Width Modulation) for hver af motorerne.

For at opnå dette skal du lave disse VHDL-moduler (også linket nedenfor):

  1. Styringen
  2. Fejlberegningen
  3. Den binære konvertering
  4.  Fraværet af en lyskilde

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

Forsyninger
Vi anbefaler at kode med ISE Design Suite 14.7, da det også kan bruges til at teste koden i VHDL. Men for at uploade koden til BASYS 3 skal du installere Vivado (ver. 2015.4 eller 2016.4) og skrive begrænsningen med .xdc-udvidelsen.instructables-VHDL-Motor-Speed-Control-Decide-Retning-og-Speed-Left-and-Right-Speed-Controller-fig-1

VHDL motorhastighedskontrol: Bestem retning og hastighed, venstre og højre hastighedskontrol: Side 1

INSTRUKTIONSTRIN

Trin 1: Kontrolen
For at forstå, hvordan man styrer den lyssøgende robots adfærd, vil vi forklare robottens ønskede adfærd, når den ser en lyskilde. Denne adfærd vil blive kontrolleret i henhold til lyskildens position og størrelse.instructables-VHDL-Motor-Speed-Control-Decide-Retning-og-Speed-Left-and-Right-Speed-Controller-

Den anvendte algoritme er analog med en RC-robotcontroller, med et håndtag, der kan drejes til venstre eller højre, og et andet håndtag, der kan drejes frem eller tilbage.

For at søge lys vil du have, at denne robot bevæger sig i en lige linje, hvis lyskildens position er lige foran robotten. For at gøre det, vil du have samme hastighed på både venstre og højre motor. Hvis lyset er placeret på venstre side af robotten, vil du gerne have, at højre motor bevæger sig hurtigere end venstre motor, så robotten kan dreje til venstre mod lyset. Hvis lyset omvendt er placeret på højre side af robotten, vil du gerne have, at venstre motor bevæger sig hurtigere end den højre motor, så robotten kan dreje til højre mod lyset. Dette er analogt med venstre håndtag på en RC-controller, hvor du kan styre, om du vil flytte robotten til venstre, højre eller ligeud.

Derefter vil du have robotten til at bevæge sig fremad, hvis lyskilden er langt væk (lille lyskilde), eller bevæge sig bagud, hvis den detekterede lyskilde er for tæt på (stor lyskilde). Du ønsker også, at jo længere væk robotten er fra lyskilden, jo hurtigere bevæger robotten sig. Dette er analogt med højre håndtag på en RC controller, hvor du kan styre, om du vil bevæge dig frem eller tilbage, og hvor hurtigt du vil have den til at bevæge sig.

Du kan så udlede en matematisk formel for hastigheden af ​​hver af motorerne, og vi vælger hastighedsområdet mellem -255 til 255. En negativ værdi betyder, at motoren vil dreje baglæns, mens en positiv værdi betyder, at motoren vil dreje fremad.

Det er den grundlæggende algoritme for bevægelsen af ​​denne robot. For at lære mere om dette modul, klik her.

Trin 2: Fejlberegningen
Da du allerede har målhastigheden og retningen for motorerne, vil du også tage hensyn til motorernes målte hastighed og retning. Hvis den har nået hastighedsmålet, ønsker vi, at motoren udelukkende bevæger sig på sit momentum. Hvis det ikke er tilfældet, vil vi tilføje mere hastighed til motoren. I kontrolteori er dette kendt som et lukket-sløjfe-feedback-kontrolsystem.

For at lære mere om dette modul, klik her.instructables-VHDL-Motor-Speed-Control-Decide-Retning-og-Speed-Left-and-Right-Speed-Controller-fig-2

Trin 3: Den binære konvertering
Fra tidligere beregninger har du allerede kendt den nødvendige handling for hver af motorerne. Beregningerne udføres dog med binær fortegn. Formålet med dette modul er at konvertere disse fortegnsværdier til en værdi, der kan læses af PWM-generatoren, som er retningen (enten med uret eller mod uret) og hastigheden (mellem 0 til 255). Da feedbacken fra motoren måles i binært uden fortegn, er et andet modul nødvendigt for at konvertere værdierne uden fortegn (retning og hastighed) til en værdi med fortegn, der kan beregnes af fejlberegningsmodulet. For at lære mere om dette modul, klik her.

Trin 4: Fraværet af lyskilde
Du har lavet en robot, der bevæger sig for at søge lys, når der registreres lys af robotten. Men hvad sker der, når robotten ikke registrerer lys? Formålet med dette modul er at diktere, hvad man skal gøre, når en sådan tilstand er til stede.

Den nemmeste måde og en lyskilde at søge på er, at robotten roterer på plads. Efter at have roteret i et bestemt antal sekunder, hvis robotten stadig ikke har fundet en lyskilde, vil du have robotten til at stoppe med at bevæge sig for at spare strøm. Efter endnu et indstillet antal sekunder bør robotten rotere på plads igen for at søge lyset. For at lære mere om dette modul, klik her.

Trin 5: Sådan fungerer det
Du kan henvise til billedet ovenfor for denne forklaring. Som nævnt i starten af ​​denne instruktionsbog, skal du bruge inputs "størrelse" og "position" fra tærskelinddelingen. For at sikre, at disse input var gyldige (f.eksample, når du modtager størrelse = 0, er størrelsen virkelig nul, fordi kameraet ikke registrerer lys, og ikke fordi kameraet stadig var ved at initialisere), skal du også bruge en form for indikator, som vi kalder "KLAR". Disse data vil blive behandlet af styringen (Ctrl. vhd) for at bestemme målhastigheden for hver motor (9 bit, signeret).

For et mere stabilt output på motoren, vil du bruge feedback i et lukket sløjfesystem. Dette kræver inputs"retning" og "hastighed" for hver motor fra motorhastighedsmålingsdivisionen. Da du vil inkludere disse input i dine beregninger, bliver du nødt til at konvertere disse usignerede værdier til 9-bit fortegns binære. Dette gøres af den usignerede til den signerede binære konverter (US2S.vhd).

Hvad fejlberegningen (fejl. vhd) gør, er at trække den målte hastighed fra målhastigheden for at bestemme handlingen for hver motor. Det betyder, at når begge har samme værdi, bliver subtraktionen nul, og motoren vil udelukkende bevæge sig på sit momentum. Du kan også tilføje en multiplikationsfaktor, så robotten kan nå målhastigheden hurtigere.

Da motorstyringen har brug for hastigheden og retningen for hver motor, skal du oversætte handlingens fortegnsværdier til to separate værdier uden fortegn: hastighed (1 bit) og retning (8 bit). Dette gøres af den signerede-til-usignerede binære konverter (S2US.vhd), og vil blive input til motorstyringsdivisionen.

Vi har også tilføjet et modul til at bestemme, hvad der skal gøres, når lys ikke registreres (ingen lystæller. Bhd). Da dette modul grundlæggende er en tæller, vil det tælle, hvor længe robotten skal enten rotere eller blive på plads. Dette vil sikre, at robotten "ser" sit miljø i stedet for blot det, der er foran den, og sparer på batteriet, når der ikke er nogen lyskilde virkelig tilgængelig.instructables-VHDL-Motor-Speed-Control-Decide-Retning-og-Speed-Left-and-Right-Speed-Controller-fig-3

Trin 6: Kombiner Files
At kombinere files, skal du tilslutte signalerne fra hvert modul. For at gøre det skal du lave et nyt topniveaumodul file. Indsæt de foregående modulers ind- og udgange som komponenter, tilføj signaler til forbindelserne og tildel hver port til det tilsvarende par. Du kan henvise til forbindelserne på illustrationen ovenfor og se på koden her.instructables-VHDL-Motor-Speed-Control-Decide-Retning-og-Speed-Left-and-Right-Speed-Controller-fig-4

Trin 7: Test det
Når du er færdig med hele koden, skal du vide, om din kode virker, før du uploader den til boardet, især da dele af koden kan være lavet af forskellige personer. Dette kræver en testbench, hvor du vil indtaste dummy-værdier og se, om koden opfører sig, som vi ønsker, den skal opføre sig. Du kan hvile start med at teste hvert modul, og hvis de alle fungerer korrekt, kan du derefter teste modulet på øverste niveau.

Trin 8: Prøv det på hardwaren
Efter din kode er blevet testet på din computer, kan du teste koden på den rigtige hardware. Du skal lave begrænsningen file på Vivado (.xdc file for BASYS 3) for at kontrollere, hvilke ind- og udgange der går til hvilke porte.

VIGTIGT TIP: Vi lærte på den hårde måde, at elektriske komponenter kan have en maksimal værdi på strøm eller voltages. Sørg for at henvise til databladet for værdierne. For PMOD HB5 skal du sørge for at indstille voltage fra strømkilden ved 12 volt (da dette er den nødvendige voltage for motoren), og strømmen så lidt som nødvendigt for at motoren kan bevæge sig.

Trin 9: Kombiner det med andre dele
Hvis de foregående trin lykkedes, skal du kombinere koden med de andre grupper for den endelige kode, der skal uploades til robotten. Så, voila! Du har med succes lavet en lyssøgende robot.

Trin 10: Bidragydere
Fra venstre mod højre:

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

Meget fint: VHDL motorhastighedskontrol: Bestem retning og hastighed, venstre og højre hastighedskontrol: Side 6
Tak for vedrviewing! Dette projekt er faktisk kun en del af et klasseprojekt (Light Seeking Robot med BASYS 3 board og OV7670 kamera), så jeg tilføjer linket til klassens instruerbare snart!

Fantastisk: Jeg glæder mig til at se det hele samlet.

Dokumenter/ressourcer

instructables VHDL Motorhastighedskontrol Bestem retning og hastighed venstre og højre hastighedskontrol [pdf] Instruktioner
VHDL motorhastighedskontrol bestemme retning og hastighed venstre og højre hastighedskontrol, VHDL motorhastighed, kontrol bestemme retning og hastighed venstre og højre hastighedskontrol

Referencer

Efterlad en kommentar

Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret *