INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
In hierdie handleiding gaan ons Verilog -kode skryf om die servomotor te beheer. Die servo SG-90 word vervaardig deur Waveshare. As u die servomotor koop, ontvang u moontlik 'n datablad met die werkspanning, maksimum wringkrag en die voorgestelde Pulse Width Modulation (PWM) … ens. Die FPGA DuePrologic bied egter insetspanning van 3.3V, waar die werkspanning van servo SG -90 5V - 7V is. By gebrek aan elektriese krag, sal ek my gekalibreerde PWM lys om die servomotor suksesvol te draai.
Ons taak: die servomotor word met 'n tydperk van 5 sekondes heen en weer gedraai
Volledige spyskaart: https://roywchpi.blogspot.com 2020/07/13-fpga-cyclone-iv-dueprologic-controls.html
Stap 1: Bou 'n elektroniese stroombaan
Stap 2: Stel penbeplanner op
Klik op "Start I/O Assignment Analysis" om te kyk of die penbeplanner korrek ingestel is. Andersins moet u alle poortname self invoer.
Stap 3: Verilog -kode
Ons skep 'n timer 'servo_count'. As "servo_A" HOOG is, is die PWM 1,5 ms en vandaar dat die servo 120 grade is. In teenstelling hiermee, as "servo_A" LAAG is, is die PWM 0.15 ms en word die servo dus op 0 grade gebly.
ken XIO_2 [3] toe = servo_puls; // vir V '
reg [31: 0] servo_count;
aanvanklike begin
servo_count <= 32'b0;
servo_A <= 1'b0;
einde
altyd @(posedge CLK_66)
begin
servo_count <= servo_count + 1'b1;
as (servo_telling> 400000000) // Kloksiklus 66MHz, 1/66M * 400000000 ~ 5 sekondes
begin
servo_A <=! servo_A;
servo_count <= 32'b0;
einde
einde
reg [31: 0] ex_auto;
aanvanklike begin
ex_auto <= 32'b0;
servo_auto <= 1'b0;
einde
altyd @(posedge CLK_66)
begin
as (servo_A == 1'b1)
begin
ex_auto <= ex_auto + 1'b1;
as (ex_auto> 100000) // Kloksiklus 66MHz, is hierdie PWM ~ 1.5ms, servo draai tot 120 grade
begin
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
einde
einde
as (servo_A == 1'b0)
begin
ex_auto <= ex_auto + 1'b1;
as (ex_auto> 10000) // Kloksiklus 66MHz, is hierdie PWM ~ 0.15ms, servo draai na 0 grade
begin
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
einde
einde
einde
Stap 4: Laai Verilog -kode op
Klik op "Begin samestelling". As daar geen foutboodskap verskyn nie, gaan na "Programmer" om die hardeware -opstelling te voltooi. Onthou om die pof -lêer by te werk in "Verander lêer" indien nodig. Klik op "Start" om die kode op te laai.
U moet immers sien dat die servomotor gereeld gedraai word.