FPGA Cyclone IV DueProLogic vezérlő szervomotor: 4 lépés
FPGA Cyclone IV DueProLogic vezérlő szervomotor: 4 lépés
Anonim
Az FPGA Cyclone IV DueProLogic vezérli a szervo motort
Az FPGA Cyclone IV DueProLogic vezérli a szervo motort

Ebben az oktatóanyagban Verilog kódot fogunk írni a szervomotor vezérléséhez. Az SG-90 szervót a Waveshare gyártja. A szervomotor vásárlásakor kaphat egy adatlapot, amely felsorolja az üzemi feszültséget, a maximális nyomatékot és a javasolt impulzusszélesség -modulációt (PWM) stb. Az FPGA DuePrologic azonban 3,3 V bemeneti feszültséget biztosít, ahol az SG -90 szervo üzemi feszültsége 5V - 7V. Az elektromos áram hiányában felsorolom a kalibrált PWM -eket a szervomotor sikeres forgatása érdekében.

Feladatunk: A szervomotor 5 másodperc alatt előre -hátra forog

Teljes menü:

1. lépés: Elektronikus áramkör építése

Elektronikus áramkör építése
Elektronikus áramkör építése

2. lépés: A Pin Planner beállítása

A Pin Planner beállítása
A Pin Planner beállítása

Kattintson a "Start I/O Assignment Analysis" gombra, hogy ellenőrizze, hogy a tű tervező helyesen van -e beállítva. Ellenkező esetben az összes portnevet egyedül kell importálnia.

3. lépés: Verilog -kód

Létrehozunk egy "servo_count" időzítőt. Ha a "servo_A" MAGAS, akkor a PWM 1,5 ms, és ezért a szervó 120 fokon található. Ezzel szemben, ha a "servo_A" alacsony, a PWM 0,15 ms, és ezért a szervó 0 fokon marad.

hozzárendel XIO_2 [3] = servo_pulse; // V -re

reg [31: 0] servo_count;

kezdő kezdet

szervo_szám <= 32'b0;

szervo_A <= 1'b0;

vége

mindig @(poszter CLK_66)

kezdődik

szervo_szám <= szervo_szám + 1'b1;

if (szervo_szám> 400000000) // Óraciklus 66MHz, 1/66M * 400000000 ~ 5 másodperc

kezdődik

szervo_A <=! servo_A;

szervo_szám <= 32'b0;

vége

vége

reg [31: 0] ex_auto;

kezdő kezdet

ex_auto <= 32'b0;

szervo_auto <= 1'b0;

vége

mindig @(poszter CLK_66)

kezdődik

ha (servo_A == 1'b1)

kezdődik

ex_auto <= ex_auto + 1'b1;

ha (ex_auto> 100000) // Óraciklus 66 MHz, ez a PWM ~ 1,5 ms, a szervó 120 fokra forog

kezdődik

szervo_auto <=! servo_auto;

ex_auto <= 32'b0;

vége

vége

ha (servo_A == 1'b0)

kezdődik

ex_auto <= ex_auto + 1'b1;

ha (ex_auto> 10000) // Óraciklus 66 MHz, ez a PWM ~ 0,15 ms, a szervó 0 fokig forog

kezdődik

szervo_auto <=! servo_auto;

ex_auto <= 32'b0;

vége

vége

vége

4. lépés: Töltse fel a Verilog -kódot

Image
Image

Kattintson a "Fordítás indítása" gombra. Ha nem jelenik meg hibaüzenet, lépjen a "Programozó" részre a hardver beállításának befejezéséhez. Ne felejtse el frissíteni a pof fájlt a "Fájl módosítása" részben, ha szükséges. Kattintson a "Start" gombra a kód feltöltéséhez.

Végül is látnia kell, hogy a szervomotor rendszeresen forog.

Ajánlott: