Sadržaj:

FPGA Ciklon IV DueProLogic kontrolira Servo motor: 4 koraka
FPGA Ciklon IV DueProLogic kontrolira Servo motor: 4 koraka

Video: FPGA Ciklon IV DueProLogic kontrolira Servo motor: 4 koraka

Video: FPGA Ciklon IV DueProLogic kontrolira Servo motor: 4 koraka
Video: Servomotor control on the FPGA Basys3 Board 2024, Studeni
Anonim
FPGA ciklon IV DueProLogic kontrolira servo motor
FPGA ciklon IV DueProLogic kontrolira servo motor

U ovom ćemo vodiču napisati Verilog kod za upravljanje servo motorom. Servo SG-90 proizvodi Waveshare. Kada kupite servo motor, možda ćete primiti podatkovni list s popisom radnog napona, maksimalnog zakretnog momenta i predložene Pulse Width Modulation (PWM)… itd. Međutim, FPGA DuePrologic daje ulazni napon od 3,3 V gdje je radni napon servo SG -90 5V - 7V. U nedostatku električne energije navest ću svoj kalibrirani PWM kako bih uspješno rotirao servo motor.

Naš zadatak: Servo motor se okreće naprijed -natrag u razdoblju od 5 sekundi

Cijeli izbornik:

Korak 1: Izgradite elektronički krug

Izgradite elektronički krug
Izgradite elektronički krug

Korak 2: Postavite Pin Planner

Postavljanje Pin planera
Postavljanje Pin planera

Kliknite "Pokreni analizu dodjele I/O" da biste provjerili je li pin planer ispravno postavljen. U suprotnom, morate sami uvesti sve nazive portova.

Korak 3: Verilog koda

Izrađujemo mjerač vremena "servo_count". Kad je "servo_A" VISOKO, PWM je 1,5 ms pa se servo nalazi na 120 stupnjeva. Nasuprot tome, kada je "servo_A" NISKA, PWM je 0,15 ms i stoga se servo drži na 0 stupnjeva.

dodijeliti XIO_2 [3] = servo_puls; // za V '

reg [31: 0] broj serva;

početni početak

broj servo <= 32'b0;

servo_A <= 1'b0;

kraj

uvijek @(postavljeno CLK_66)

početi

broj serva <= broj serva + 1'b1;

if (broj servo> 400000000) // Sat ciklus 66MHz, 1/66M * 400000000 ~ 5 sekundi

početi

servo_A <=! servo_A;

broj servo <= 32'b0;

kraj

kraj

reg [31: 0] ex_auto;

početni početak

ex_auto <= 32'b0;

servo_auto <= 1'b0;

kraj

uvijek @(postavljeno CLK_66)

početi

if (servo_A == 1'b1)

početi

ex_auto <= ex_auto + 1'b1;

if (ex_auto> 100000) // Satni ciklus 66MHz, ovaj PWM iznosi ~ 1,5 ms, servo se okreće na 120 stupnjeva

početi

servo_auto <=! servo_auto;

ex_auto <= 32'b0;

kraj

kraj

if (servo_A == 1'b0)

početi

ex_auto <= ex_auto + 1'b1;

if (ex_auto> 10000) // Satni ciklus 66MHz, ovaj PWM iznosi ~ 0,15 ms, servo se okreće na 0 stupnjeva

početi

servo_auto <=! servo_auto;

ex_auto <= 32'b0;

kraj

kraj

kraj

Korak 4: Prenesite Verilog kôd

Image
Image

Kliknite "Pokreni kompilaciju". Ako se ne prikaže poruka o pogrešci, idite na "Programer" da biste dovršili postavljanje hardvera. Ne zaboravite ažurirati pof datoteku u "Promijeni datoteku" ako je potrebno. Kliknite "Start" za učitavanje koda.

Uostalom, trebali biste vidjeti da se servo motor povremeno okreće.

Preporučeni: