Inhaltsverzeichnis:
- Schritt 1: Elektronische Schaltung aufbauen
- Schritt 2: Pin-Planer einrichten
- Schritt 3: Verilog-Code
- Schritt 4: Verilog-Code hochladen
Video: FPGA Cyclone IV DueProLogic steuert Servomotor - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
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.
Empfohlen:
So bauen Sie ein Wifi-System, das die Beleuchtung und Heizung Ihres Aquariums steuert – wikiHow
So erstellen Sie ein Wifi-System, das die Beleuchtung und Heizung Ihres Aquariums steuert: Was macht es? Ein System, das Ihr Aquarium automatisch nach einem Zeitplan oder manuell mit einem Druckknopf oder einer Internetanfrage ein- / ausschaltet. Ein System, das die Wassertemperatur überwacht und E-Mails und Warnungen sendet, falls es unter
So verwenden Sie den SG90-Servomotor mit "skiiiD": 9 Schritte
So verwenden Sie den SG90-Servomotor mit "skiiiD": Vor dem Start gibt es ein grundlegendes Tutorial zur Verwendung von skiiiD https://www.instructables.com/id/Getting-Started-With-SkiiiD-Editor
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter - Daumen Roboter - Servomotor - Quellcode: 26 Schritte (mit Bildern)
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter | Daumen Roboter | Servomotor | Quellcode: Thumbs Robot. Verwendet ein Potentiometer des Servomotors MG90S. Es macht sehr viel Spaß und ist einfach! Der Code ist sehr einfach. Es sind nur etwa 30 Zeilen. Es sieht aus wie ein Motion-Capture.Bitte hinterlassen Sie Fragen oder Feedback![Anleitung] Quellcode https://github.c