Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
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.