FPGA Cyclone IV DueProLogic kontrole servo motor: 4 koraka
FPGA Cyclone IV DueProLogic kontrole servo motor: 4 koraka
Anonim
FPGA Cyclone IV DueProLogic kontrolira servo motor
FPGA Cyclone 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 dobiti tehnički list koji navodi radni napon, maksimalni okretni moment i predloženu pulsno -širinsku modulaciju (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 -nazad u razdoblju od 5 sekundi

Cijeli meni:

Korak 1: Izgradite elektroničko kolo

Izgradite elektroničko kolo
Izgradite elektroničko kolo

Korak 2: Postavite Pin Planner

Postavite Pin Planner
Postavite Pin Planner

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

Korak 3: Verilog koda

Kreiramo tajmer "servo_count". Kada je "servo_A" VISOKO, PWM je 1,5 ms pa se servo nalazi na 120 stepeni. Nasuprot tome, kada je "servo_A" NISKA, PWM je 0,15 ms i stoga se servo drži na 0 stupnjeva.

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

reg [31: 0] servo_broj;

početni početak

broj servo <= 32'b0;

servo_A <= 1'b0;

kraj

uvijek @(postavljeno CLK_66)

početi

servo_broj <= broj servo_boda + 1'b1;

if (broj servo> 400000000) // Sat takta 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 je ~ 1.5ms, servo se okreće na 120 stepeni

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 je ~ 0,15ms, servo se okreće na 0 stepeni

početi

servo_auto <=! servo_auto;

ex_auto <= 32'b0;

kraj

kraj

kraj

Korak 4: Postavite Verilog kôd

Image
Image

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

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