Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Në këtë tutorial, ne do të shkruajmë kodin Verilog për të kontrolluar servo motorin. Servo SG-90 është prodhuar nga Waveshare. Kur blini servo motorin, mund të merrni një fletë të dhënash që liston tensionin e funksionimit, çift rrotullues maksimal dhe Modulimin e propozuar të Gjerësisë së Pulsit (PWM) … etj. Sidoqoftë, FPGA DuePrologic siguron tension hyrës prej 3.3V ku voltazhi i funksionimit të servo SG -90 është 5V - 7V. Në mungesë të energjisë elektrike, unë do të listoj PWM tim të kalibruar në mënyrë që të rrotulloj me sukses servo motorin.
Detyra jonë: Servo motori rrotullohet mbrapa dhe me radhë me një periudhë prej 5 sekondash
Menyja e plotë:
Hapi 1: Ndërtoni një qark elektronik
Hapi 2: Vendosni Pin Planifikuesin
Klikoni "Fillo Analizën e Detyrës I/O" për të kontrolluar nëse planifikuesi i kunjave është vendosur si duhet. Përndryshe, ju duhet të importoni të gjithë emrat e portit vetë.
Hapi 3: Kodi Verilog
Ne krijojmë një kohëmatës "servo_count". Kur "servo_A" është LART, PWM është 1.5ms dhe kështu servo është e vendosur në 120 gradë. Në të kundërt, kur "servo_A" është I ULT, PWM është 0.15ms dhe për këtë arsye servo qëndron në 0 gradë.
cakto XIO_2 [3] = servo_pulse; // për V '
reg [31: 0] servo_count;
fillimi fillestar
servo_count <= 32'b0;
servo_A <= 1'b0;
fund
gjithmonë @(paraqiti CLK_66)
filloj
servo_count <= servo_count + 1'b1;
nëse (servo_count> 400000000) // Cikli i orës 66MHz, 1/66M * 400000000 ~ 5 sekonda
filloj
servo_A <=! servo_A;
servo_count <= 32'b0;
fund
fund
reg [31: 0] ex_auto;
fillimi fillestar
ex_auto <= 32'b0;
servo_auto <= 1'b0;
fund
gjithmonë @(paraqiti CLK_66)
filloj
nëse (servo_A == 1'b1)
filloj
ex_auto <= ex_auto + 1'b1;
nëse (ex_auto> 100000) // Cikli i orës 66MHz, ky PWM është ms 1.5ms, servo rrotullohet në 120 gradë
filloj
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
fund
fund
nëse (servo_A == 1'b0)
filloj
ex_auto <= ex_auto + 1'b1;
nëse (ex_auto> 10000) // Cikli i orës 66MHz, ky PWM është 15 0.15ms, servo rrotullohet në 0 gradë
filloj
servo_auto <=! servo_auto;
ex_auto <= 32'b0;
fund
fund
fund
Hapi 4: Ngarko Verilog Code
Klikoni "Filloni përpilimin". Nëse nuk shfaqet asnjë mesazh gabimi, shkoni te "Programmer" për të përfunduar konfigurimin e harduerit. Mos harroni të azhurnoni skedarin pof në "Ndrysho skedarin" nëse është e nevojshme. Klikoni "Fillimi" për të ngarkuar kodin.
Në fund të fundit, duhet të shihni që servo motori rrotullohet periodikisht.