
Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02

I denne opplæringen skal vi skrive Verilog -kode for å kontrollere servomotoren. Servoen SG-90 er produsert av Waveshare. Når du kjøper servomotoren, kan du motta et datablad som viser driftsspenning, maksimalt dreiemoment og den foreslåtte pulsbreddemodulasjonen (PWM) … etc. FPGA DuePrologic gir imidlertid inngangsspenning på 3,3V der driftsspenningen til servo SG -90 er 5V - 7V. I mangel på elektrisk kraft vil jeg liste opp min kalibrerte PWM for å rotere servomotoren vellykket.
Vår oppgave: Servomotoren roteres frem og tilbake med en periode på 5 sekunder
Full meny: https://roywchpi.blogspot.com 2020/07/13-fpga-cyclone-iv-dueprologic-controls.html
Trinn 1: Bygg elektronisk krets

Trinn 2: Sett opp Pin Planner

Klikk på "Start I/O Assignment Analysis" for å sjekke om pin -planleggeren er riktig angitt. Ellers må du importere alle portnavnene selv.
Trinn 3: Verilog -kode
Vi lager en timer "servo_count". Når "servo_A" er HØY, er PWM 1,5 ms, og derfor er servoen plassert ved 120 grader. I kontrast, når "servo_A" er LAV, er PWM 0,15 ms, og derfor holdes servoen på 0 grader.
tilordne XIO_2 [3] = servo_puls; // for V '
reg [31: 0] servo_count;
første start
servo_count <= 32'b0;
servo_A <= 1'b0;
slutt
alltid @(posedge CLK_66)
begynne
servo_count <= servo_count + 1'b1;
hvis (servo_count> 400000000) // Klokkesyklus 66MHz, 1/66M * 400000000 ~ 5 sekunder
begynne
servo_A <=! servo_A;
servo_count <= 32'b0;
slutt
slutt
reg [31: 0] ex_auto;
første start
ex_auto <= 32'b0;
servo_auto <= 1'b0;
slutt
alltid @(posedge CLK_66)
begynne
hvis (servo_A == 1'b1)
begynne
ex_auto <= ex_auto + 1'b1;
hvis (ex_auto> 100000) // Klokkesyklus 66MHz, er denne PWM ~ 1,5ms, servoen roterer til 120 grader
begynne
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
slutt
slutt
hvis (servo_A == 1'b0)
begynne
ex_auto <= ex_auto + 1'b1;
hvis (ex_auto> 10000) // Klokkesyklus 66MHz, er denne PWM ~ 0,15ms, servoen roterer til 0 grader
begynne
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
slutt
slutt
slutt
Trinn 4: Last opp Verilog -kode


Klikk "Start kompilering". Hvis det ikke vises noen feilmelding, gå til "Programmerer" for å fullføre maskinvareoppsettet. Husk å oppdatere pof -filen i "Endre fil" om nødvendig. Klikk "Start" for å laste opp koden.
Tross alt bør du se at servomotoren roteres periodisk.
Anbefalt:
FPGA Cyclone IV DueProLogic Controls Raspberry Pi -kamera: 5 trinn

FPGA Cyclone IV DueProLogic Controls Raspberry Pi -kamera: Til tross for at FPGA DueProLogic er offisielt designet for Arduino, skal vi gjøre FPGA og Raspberry Pi 4B kommuniserbare. Tre oppgaver implementeres i denne opplæringen: (A) Trykk samtidig på de to trykknappene på FPGA for å snu vinkelen på
FPGA Cyclone IV DueProLogic - Trykknapp og LED: 5 trinn

FPGA Cyclone IV DueProLogic - Trykknapp og LED: I denne opplæringen skal vi bruke FPGA til å kontrollere ekstern LED -krets. Vi skal implementere følgende oppgaver (A) Bruk trykknappene på FPGA Cyclone IV DuePrologic for å kontrollere LED. (B) Flash LED på & av periodisk Video demo Lab
Arduino Cyclone Game: 5 trinn (med bilder)

Arduino Cyclone Game: Jeg har aldri spilt det virkelige syklonspillet, men jeg liker tanken på å spille med reaksjonstiden min. Jeg designet et miniatyrisert spill. Den består av 32 lysdioder som danner en sirkel, lysdiodene lyser en etter en som en leddjager. Målet er å trykke på en rumpe
Fpga kontrollert RC servomotor robotarm - Digilent konkurranse: 3 trinn

Fpga kontrollert RC servomotor robotarm - Digilent konkurranse: FPGA kontrollert servomotor robotarm Målet med dette prosjektet er å lage et programmerbart system som kan utføre loddeoperasjoner på perfboard. Systemet er basert på Digilent Basys3 utviklingsbord, og det vil kunne lodde
Digispark Controls Relay Via GSM: 3 trinn

Digispark Controls Relay Via GSM: Denne instruksjonen bruker et Digispark -kort, sammen med et relé og en GSM -modul for å slå på eller av og apparatet, mens du sender den nåværende tilstanden til et forhåndsdefinert telefonnummer. Koden er veldig grov, reagerer på all kommunikasjon fra modulen t