Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
In diesem Tutorial werden wir Verilog-Code schreiben, um den Servomotor zu steuern. Das Servo SG-90 wird von Waveshare hergestellt. Wenn Sie den Servomotor kaufen, erhalten Sie möglicherweise ein Datenblatt, das die Betriebsspannung, das maximale Drehmoment und die vorgeschlagene Pulsweitenmodulation (PWM) usw. auflistet. Der FPGA DuePrologic bietet jedoch eine Eingangsspannung von 3,3 V, wobei die Betriebsspannung des Servo SG-90 5 V - 7 V beträgt. Bei fehlender elektrischer Leistung werde ich meine kalibrierte PWM auflisten, um den Servomotor erfolgreich zu drehen.
Unsere Aufgabe: Der Servomotor wird mit der Zeit von 5 Sekunden hin und her gedreht
Vollständige Speisekarte:
Schritt 1: Elektronische Schaltung aufbauen
Schritt 2: Pin-Planer einrichten
Klicken Sie auf "Start I/O Assignment Analysis", um zu überprüfen, ob der Pinplaner richtig eingestellt ist. Andernfalls müssen Sie alle Portnamen selbst importieren.
Schritt 3: Verilog-Code
Wir erstellen einen Timer "servo_count". Wenn "servo_A" HIGH ist, beträgt die PWM 1,5 ms und somit befindet sich das Servo bei 120°. Im Gegensatz dazu, wenn "servo_A" LOW ist, beträgt die PWM 0,15 ms und daher bleibt das Servo auf 0 Grad.
zuweisen XIO_2[3] = servo_pulse; //für V'
reg [31:0] servo_count;
anfänglicher Anfang
servo_count <= 32'b0;
servo_A <= 1'b0;
Ende
immer @(posege CLK_66)
Start
servo_count <= servo_count + 1'b1;
if(servo_count > 400000000) // Taktzyklus 66MHz, 1/66M * 400000000 ~ 5 Sekunden
Start
Servo_A <= !Servo_A;
servo_count <= 32'b0;
Ende
Ende
reg [31:0] ex_auto;
anfänglicher Anfang
ex_auto <= 32'b0;
servo_auto <= 1'b0;
Ende
immer @(posege CLK_66)
Start
if(servo_A==1'b1)
Start
ex_auto <= ex_auto + 1'b1;
if (ex_auto > 100000) // Taktzyklus 66 MHz, diese PWM beträgt ~ 1,5 ms, Servo dreht auf 120 Grad
Start
servo_auto <= !servo_auto;
ex_auto <= 32'b0;
Ende
Ende
if(servo_A==1'b0)
Start
ex_auto <= ex_auto + 1'b1;
if (ex_auto > 10000) // Taktzyklus 66 MHz, diese PWM beträgt ~ 0,15 ms, Servo dreht sich auf 0 Grad
Start
servo_auto <= !servo_auto;
ex_auto <= 32'b0;
Ende
Ende
Ende
Schritt 4: Verilog-Code hochladen
Klicken Sie auf "Kompilierung starten". Wenn keine Fehlermeldung angezeigt wird, gehen Sie zu "Programmer", um das Hardware-Setup abzuschließen. Denken Sie daran, die pof-Datei bei Bedarf unter "Datei ändern" zu aktualisieren. Klicken Sie auf "Start", um den Code hochzuladen.
Schließlich sollten Sie sehen, dass der Servomotor periodisch gedreht wird.