
Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:10

I den här självstudien kommer vi att skriva Verilog -kod för att styra servomotorn. Servon SG-90 tillverkas av Waveshare. När du köper servomotorn kan du få ett datablad som visar driftsspänning, maximalt vridmoment och den föreslagna pulsbreddsmodulationen (PWM) … etc. FPGA DuePrologic tillhandahåller emellertid ingångsspänning på 3,3V där driftspänningen för servo SG -90 är 5V - 7V. I brist på elektrisk kraft kommer jag att lista min kalibrerade PWM för att rotera servomotorn framgångsrikt.
Vår uppgift: Servomotorn roteras fram och tillbaka med en period på 5 sekunder
Fullständig meny: https://roywchpi.blogspot.com 2020/07/13-fpga-cyclone-iv-dueprologic-controls.html
Steg 1: Bygg en elektronisk krets

Steg 2: Ställ in Pin Planner

Klicka på "Start I/O Assignment Analysis" för att kontrollera om stiftplaneraren är korrekt inställd. Annars måste du importera alla portnamn själv.
Steg 3: Verilog -kod
Vi skapar en timer "servo_count". När "servo_A" är HÖG är PWM 1,5 ms och därmed ligger servon vid 120 grader. Däremot, när "servo_A" är LÅG, är PWM 0,15 ms och därför hålls servon på 0 grader.
tilldela XIO_2 [3] = servo_puls; // för V '
reg [31: 0] servo_count;
första början
servo_count <= 32'b0;
servo_A <= 1'b0;
slutet
alltid @(posedge CLK_66)
Börja
servo_count <= servo_count + 1'b1;
if (servo_count> 400000000) // Clock cycle 66MHz, 1/66M * 400000000 ~ 5 seconds
Börja
servo_A <=! servo_A;
servo_count <= 32'b0;
slutet
slutet
reg [31: 0] ex_auto;
första början
ex_auto <= 32'b0;
servo_auto <= 1'b0;
slutet
alltid @(posedge CLK_66)
Börja
if (servo_A == 1'b1)
Börja
ex_auto <= ex_auto + 1'b1;
om (ex_auto> 100000) // Klockcykel 66MHz är denna PWM ~ 1,5ms, servon roterar till 120 grader
Börja
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
slutet
slutet
if (servo_A == 1'b0)
Börja
ex_auto <= ex_auto + 1'b1;
om (ex_auto> 10000) // Klockcykel 66MHz är denna PWM ~ 0,15ms, servon roterar till 0 grader
Börja
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
slutet
slutet
slutet
Steg 4: Ladda upp Verilog -kod


Klicka på "Starta kompilering". Om inget felmeddelande visas, gå till "Programmerare" för att slutföra maskinvaruinstallationen. Kom ihåg att uppdatera pof -filen i "Ändra fil" om det behövs. Klicka på "Start" för att ladda upp koden.
När allt kommer omkring bör du se att servomotorn roteras periodiskt.
Rekommenderad:
FPGA Cyclone IV DueProLogic Controls Raspberry Pi -kamera: 5 steg

FPGA Cyclone IV DueProLogic Controls Raspberry Pi -kamera: Trots att FPGA DueProLogic är officiellt utformad för Arduino, kommer vi att göra FPGA och Raspberry Pi 4B överförbara. Tre uppgifter implementeras i denna handledning: (A) Tryck samtidigt på de två tryckknapparna på FPGA för att vända
FPGA Cyclone IV DueProLogic - Tryckknapp & LED: 5 steg

FPGA Cyclone IV DueProLogic - Tryckknapp & LED: I denna handledning kommer vi att använda FPGA för att styra extern LED -krets. Vi kommer att genomföra följande uppgifter (A) Använd tryckknapparna på FPGA Cyclone IV DuePrologic för att styra LED. (B) Flash LED på & av regelbundet Video demo Lab
Arduino Cyclone Game: 5 steg (med bilder)

Arduino Cyclone Game: Jag har aldrig spelat det riktiga cyklonarkadespelet men jag gillar idén att spela med vår reaktionstid.Jag designade ett miniatyriserat spel. Den består av 32 lysdioder som bildar en cirkel, lysdioderna lyser upp en efter en som en ledjakt. Målet är att trycka på en rumpa
Fpga kontrollerad RC servomotor robotarm - Digilent tävling: 3 steg

Fpga kontrollerad RC servomotor robotarm - Digilent tävling: FPGA styrd servomotor robotarm Målet med detta projekt är att skapa ett programmerbart system som kan utföra lödningsoperationer på perf board. Systemet är baserat på Digilent Basys3 utvecklingskort och det kommer att kunna lödas
Digispark Controls Relay Via GSM: 3 steg

Digispark Controls Relay Via GSM: Denna instruerbara använder ett Digispark -kort, tillsammans med ett relä och en GSM -modul för att slå på eller stänga av och apparat, medan textning av det aktuella tillståndet till ett fördefinierat telefonnummer. Koden är mycket rå, lyhörd för all kommunikation från modulen t