Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tässä opetusohjelmassa aiomme kirjoittaa Verilog -koodin servomoottorin ohjaamiseen. Servo SG-90 on Wavesharen valmistama. Kun ostat servomoottorin, saatat saada tietolomakkeen, jossa luetellaan käyttöjännite, suurin vääntömomentti ja ehdotettu pulssileveysmodulaatio (PWM) jne. FPGA DuePrologic tarjoaa kuitenkin 3,3 V: n tulojännitteen, kun SG -90: n käyttöjännite on 5 V - 7 V. Sähkötehon puuttuessa luettelen kalibroidun PWM: n servomoottorin pyörittämiseksi onnistuneesti.
Tehtävämme: Servomoottoria pyöritetään edestakaisin 5 sekunnin ajan
Koko valikko:
Vaihe 1: Rakenna elektroninen piiri
Vaihe 2: Määritä Pin Planner
Napsauta "Aloita I/O -määritysanalyysi" tarkistaaksesi, onko pin -suunnittelija asetettu oikein. Muussa tapauksessa sinun on tuotava kaikki porttien nimet itse.
Vaihe 3: Verilog -koodi
Luomme ajastimen "servo_count". Kun "servo_A" on KORKEA, PWM on 1,5 ms ja siten servo sijaitsee 120 astetta. Sitä vastoin, kun "servo_A" on LOW, PWM on 0,15 ms ja siksi servo pysyy 0 astetta.
antaa XIO_2 [3] = servo_pulse; // V: lle
reg [31: 0] servo_count;
alku alkaa
servoluku <= 32'b0;
servo_A <= 1'b0;
loppuun
aina @(postaus CLK_66)
alkaa
servo_ count <= servo_ count + 1'b1;
if (servoluku> 400000000) // Kellojakso 66MHz, 1/66M * 400000000 ~ 5 sekuntia
alkaa
servo_A <=! servo_A;
servoluku <= 32'b0;
loppuun
loppuun
reg [31: 0] ex_auto;
alku alkaa
ex_auto <= 32'b0;
servo_auto <= 1'b0;
loppuun
aina @(postaus CLK_66)
alkaa
jos (servo_A == 1'b1)
alkaa
ex_auto <= ex_auto + 1'b1;
jos (ex_auto> 100000) // Kellojakso 66 MHz, tämä PWM on ~ 1,5 ms, servo pyörii 120 asteeseen
alkaa
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
loppuun
loppuun
jos (servo_A == 1'b0)
alkaa
ex_auto <= ex_auto + 1'b1;
jos (ex_auto> 10000) // Kellojakso 66 MHz, tämä PWM on ~ 0,15 ms, servo pyörii 0 asteeseen
alkaa
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
loppuun
loppuun
loppuun
Vaihe 4: Lähetä Verilog -koodi
Napsauta "Aloita kokoaminen". Jos virheilmoitusta ei näy, mene "Ohjelmoija" loppuun laitteiston asennuksen suorittamiseksi. Muista päivittää pof -tiedosto tarvittaessa "Vaihda tiedosto" -kohtaan. Napsauta "Käynnistä" ladataksesi koodin.
Loppujen lopuksi sinun pitäisi nähdä, että servomoottoria pyöritetään säännöllisesti.