Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
V tej vadnici bomo napisali Verilog kodo za krmiljenje servo motorja. Servo SG-90 proizvaja Waveshare. Ko kupite servo motor, boste morda prejeli podatkovni list, ki vsebuje delovno napetost, največji navor in predlagano pulzno širinsko modulacijo (PWM) … itd. Vendar pa FPGA DuePrologic zagotavlja vhodno napetost 3,3 V, kjer je delovna napetost servo SG -90 5 V - 7 V. Zaradi pomanjkanja električne energije bom navedel svoj umerjeni PWM, da bom uspešno zavrtel servo motor.
Naša naloga: Servo motor se vrti naprej in nazaj v obdobju 5 sekund
Celoten meni:
Korak: Zgradite elektronsko vezje
2. korak: Nastavite načrtovalnik pin
Kliknite "Začni analizo dodelitve V/I", da preverite, ali je načrtovalec zatičev pravilno nastavljen. V nasprotnem primeru morate vsa imena vrat uvoziti sami.
3. korak: Verilog koda
Ustvarimo časovnik "servo_count". Ko je "servo_A" VISOKO, je PWM 1,5 ms, zato se servo nahaja pri 120 stopinjah. Nasprotno, ko je "servo_A" NIZKA, je PWM 0,15 ms, zato se servo vzdržuje pri 0 stopinjah.
dodeli XIO_2 [3] = servo_pulz; // za V '
reg [31: 0] servo_broj;
začetni začetek
število servo <= 32'b0;
servo_A <= 1'b0;
konec
vedno @(postavljeno CLK_66)
začeti
servo_count <= servo_count + 1'b1;
if (servo_count> 400000000) // Ura takta 66MHz, 1/66M * 400000000 ~ 5 sekund
začeti
servo_A <=! servo_A;
število servo <= 32'b0;
konec
konec
reg [31: 0] ex_auto;
začetni začetek
ex_auto <= 32'b0;
servo_auto <= 1'b0;
konec
vedno @(postavljeno CLK_66)
začeti
če (servo_A == 1'b1)
začeti
ex_auto <= ex_auto + 1'b1;
if (ex_auto> 100000) // Ura cikla 66MHz, ta PWM je ~ 1,5ms, servo se vrti na 120 stopinj
začeti
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
konec
konec
če (servo_A == 1'b0)
začeti
ex_auto <= ex_auto + 1'b1;
če (ex_auto> 10000) // Ura cikla 66 MHz, je ta PWM ~ 0,15 ms, servo se vrti na 0 stopinj
začeti
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
konec
konec
konec
4. korak: Naložite Verilog kodo
Kliknite "Začni kompilacijo". Če se ne prikaže sporočilo o napaki, pojdite na "Programmer", da dokončate nastavitev strojne opreme. Ne pozabite posodobiti datoteke pof v "Spremeni datoteko", če je potrebno. Kliknite "Start", da naložite kodo.
Konec koncev bi morali videti, da se servo motor občasno vrti.