Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Sa tutorial na ito, magsusulat kami ng Verilog code upang makontrol ang servo motor. Ang servo SG-90 ay gawa ng Waveshare. Kapag binili mo ang servo motor, maaari kang makatanggap ng isang datasheet na naglilista ng operating voltage, maximum torque at ang iminungkahing Pulse Width Modulation (PWM) … atbp. Gayunpaman, ang FPGA DuePrologic ay nagbibigay ng input boltahe ng 3.3V kung saan ang operating boltahe ng servo SG-90 ay 5V - 7V. Sa kawalan ng kuryente, ililista ko ang aking naka-calibrate na PWM upang matagumpay na paikutin ang servo motor.
Ang aming gawain: Ang motor na servo ay pinaikot nang pabalik-balik sa panahon ng 5 segundo
Buong menu:
Hakbang 1: Bumuo ng Electronic Circuit
Hakbang 2: I-set Up ang Tagaplano ng Pin
I-click ang "Simulan ang I / O Pagsusuri sa Pagtatalaga" upang suriin kung ang pin planner ay itinakda nang tama. Kung hindi man, kailangan mong i-import ang lahat ng mga pangalan ng port sa iyong sarili.
Hakbang 3: Verilog Code
Lumilikha kami ng isang timer na "servo_count". Kapag ang "servo_A" ay TAAS, ang PWM ay 1.5ms at samakatuwid ang servo ay matatagpuan sa 120 deg. Sa kaibahan, kapag ang "servo_A" ay mababa, ang PWM ay 0.15ms at samakatuwid ang servo ay nanatili sa 0 degree.
italaga ang XIO_2 [3] = servo_pulse; // para sa V '
reg [31: 0] servo_count;
paunang pagsisimula
servo_count <= 32'b0;
servo_A <= 1'b0;
magtapos
laging @ (posedge CLK_66)
magsimula
servo_count <= servo_count + 1'b1;
kung (servo_count> 400000000) // Clock cycle 66MHz, 1 / 66M * 400000000 ~ 5 segundo
magsimula
servo_A <=! servo_A;
servo_count <= 32'b0;
magtapos
magtapos
reg [31: 0] ex_auto;
paunang pagsisimula
ex_auto <= 32'b0;
servo_auto <= 1'b0;
magtapos
laging @ (posedge CLK_66)
magsimula
kung (servo_A == 1'b1)
magsimula
ex_auto <= ex_auto + 1'b1;
kung (ex_auto> 100000) // Clock cycle 66MHz, ang PWM na ito ay ~ 1.5ms, ang servo ay umiikot sa 120 deg
magsimula
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
magtapos
magtapos
kung (servo_A == 1'b0)
magsimula
ex_auto <= ex_auto + 1'b1;
kung (ex_auto> 10000) // Clock cycle 66MHz, ang PWM na ito ay ~ 0.15ms, ang servo ay umiikot sa 0 deg
magsimula
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
magtapos
magtapos
magtapos
Hakbang 4: Mag-upload ng Verilog Code
I-click ang "Start Compilation". Kung walang ipinakitang mensahe ng error, pumunta sa "Programmer" upang makumpleto ang pag-setup ng hardware. Tandaan na i-update ang pof file sa "Baguhin ang file" kung kinakailangan. Ang pag-click sa "Start" upang mai-upload ang code.
Pagkatapos ng lahat, dapat mong makita na ang servo motor ay paikutin nang pana-panahon.