Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
V tomto tutoriáli napíšeme kód Verilog na ovládanie servomotora. Servo SG-90 vyrába spoločnosť Waveshare. Pri kúpe servomotora môžete dostať technický list so zoznamom prevádzkového napätia, maximálneho krútiaceho momentu a navrhovanej modulácie šírky impulzu (PWM) … atď. FPGA DuePrologic však poskytuje vstupné napätie 3,3 V, kde je prevádzkové napätie serva SG -90 5 V - 7 V. Pri nedostatku elektrického napájania uvediem svoj kalibrovaný PWM, aby sa servo motor úspešne otočil.
Naša úloha: Servomotor sa otáča tam a späť v priebehu 5 sekúnd
Kompletné menu:
Krok 1: Vytvorte elektronický obvod
Krok 2: Nastavte plánovač pinov
Kliknutím na „Spustiť analýzu priradenia I/O“skontrolujte, či je plánovač pinov správne nastavený. V opačnom prípade musíte importovať všetky názvy portov sami.
Krok 3: Verilog Code
Vytvárame časovač „servo_count“. Keď je „servo_A“HIGH, PWM je 1,5 ms, a preto je servo umiestnené pri 120 stupňoch. Naopak, keď je „servo_A“NÍZKY, PWM je 0,15 ms, a preto je servo udržiavané na 0 stupňoch.
priradiť XIO_2 [3] = servo_pulse; // pre V '
reg [31: 0] servo_count;
počiatočný začiatok
servo_count <= 32'b0;
servo_A <= 1'b0;
koniec
vždy @(posedge CLK_66)
začať
servo_count <= servo_count + 1'b1;
if (servo_count> 400000000) // Taktovací cyklus 66MHz, 1/66M * 400000000 ~ 5 sekúnd
začať
servo_A <=! servo_A;
servo_count <= 32'b0;
koniec
koniec
reg [31: 0] ex_auto;
počiatočný začiatok
ex_auto <= 32'b0;
servo_auto <= 1'b0;
koniec
vždy @(posedge CLK_66)
začať
ak (servo_A == 1'b1)
začať
ex_auto <= ex_auto + 1'b1;
ak (ex_auto> 100000) // Taktovací cyklus 66 MHz, tento PWM je ~ 1,5 ms, servo sa otáča o 120 stupňov
začať
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
koniec
koniec
ak (servo_A == 1'b0)
začať
ex_auto <= ex_auto + 1'b1;
ak (ex_auto> 10 000) // Taktovací cyklus 66 MHz, tento PWM je ~ 0,15 ms, servo sa otáča o 0 stupňov
začať
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
koniec
koniec
koniec
Krok 4: Nahrajte kód Verilog
Kliknite na „Spustiť kompiláciu“. Ak sa nezobrazí žiadne chybové hlásenie, dokončite nastavenie hardvéru v časti „Programátor“. V prípade potreby nezabudnite aktualizovať súbor pof v časti „Zmeniť súbor“. Kliknutím na tlačidlo „Štart“nahráte kód.
Koniec koncov, mali by ste vidieť, že servomotor sa pravidelne otáča.