ዝርዝር ሁኔታ:

FPGA Cyclone IV DueProLogic መቆጣጠሪያዎች Servo Motor: 4 ደረጃዎች
FPGA Cyclone IV DueProLogic መቆጣጠሪያዎች Servo Motor: 4 ደረጃዎች

ቪዲዮ: FPGA Cyclone IV DueProLogic መቆጣጠሪያዎች Servo Motor: 4 ደረጃዎች

ቪዲዮ: FPGA Cyclone IV DueProLogic መቆጣጠሪያዎች Servo Motor: 4 ደረጃዎች
ቪዲዮ: Servomotor control on the FPGA Basys3 Board 2024, ህዳር
Anonim
FPGA አውሎ ንፋስ IV DueProLogic መቆጣጠሪያዎች Servo ሞተር
FPGA አውሎ ንፋስ IV DueProLogic መቆጣጠሪያዎች Servo ሞተር

በዚህ መማሪያ ውስጥ የ servo ሞተርን ለመቆጣጠር የቨርሪሎግ ኮድ እንጽፋለን። Servo SG-90 በ Waveshare የተሰራ ነው። የ servo ሞተር ሲገዙ ፣ የሥራውን voltage ልቴጅ ፣ ከፍተኛውን የማሽከርከሪያ እና የታቀደውን የ pulse Width Modulation (PWM)… ወዘተ የሚዘረዝር የውሂብ ሉህ ሊቀበሉ ይችላሉ። ሆኖም ፣ የ FPGA DuePrologic የ servo SG -90 የአሠራር voltage ልቴጅ 5V - 7V በሆነበት የ 3.3V የግብዓት voltage ልቴጅ ይሰጣል። በኤሌክትሪክ ኃይል እጥረት ፣ የ servo ሞተርን በተሳካ ሁኔታ ለማሽከርከር የእኔን የተስተካከለ PWM እዘርዝራለሁ።

የእኛ ተግባር - የ servo ሞተር በ 5 ሰከንዶች ጊዜ ውስጥ ወደ ፊት እና ወደ ፊት ይሽከረከራል

ሙሉ ምናሌ

ደረጃ 1 የኤሌክትሮኒክ ወረዳ ይገንቡ

የኤሌክትሮኒክ ወረዳ ይገንቡ
የኤሌክትሮኒክ ወረዳ ይገንቡ

ደረጃ 2 የፒን ዕቅድ አውጪን ያዘጋጁ

የፒን ዕቅድ አውጪን ያዘጋጁ
የፒን ዕቅድ አውጪን ያዘጋጁ

የፒን ዕቅድ አውጪው በትክክል ከተዋቀረ ለማረጋገጥ “እኔ/ኦ የምደባ ትንተና ጀምር” ን ጠቅ ያድርጉ። ያለበለዚያ ሁሉንም የወደብ ስሞች በራስዎ ማስመጣት አለብዎት።

ደረጃ 3 - የቬሪሎግ ኮድ

ሰዓት ቆጣሪ “servo_count” እንፈጥራለን። “Servo_A” ከፍተኛ በሚሆንበት ጊዜ ፣ PWM 1.5ms ነው ፣ ስለሆነም ሰርቪው በ 120 ዲግ ላይ ይገኛል። በተቃራኒው ፣ “servo_A” LOW በሚሆንበት ጊዜ ፣ PWM 0.15ms ነው ፣ ስለሆነም ሰርቪው በ 0 ዲግሪ ይቆያል።

XIO_2 [3] = servo_pulse መድብ; // ለ V '

reg [31: 0] servo_count;

የመጀመሪያ ጅምር

servo_count <= 32'b0;

servo_A <= 1'b0;

አበቃ

ሁልጊዜ @(posedge CLK_66)

ጀምር

servo_count <= servo_count + 1'b1;

ከሆነ (servo_count> 400000000) // የሰዓት ዑደት 66 ሜኸ ፣ 1/66 ሜ * 400000000 ~ 5 ሰከንዶች

ጀምር

servo_A <=! servo_A;

servo_count <= 32'b0;

አበቃ

አበቃ

reg [31: 0] ex_auto;

የመጀመሪያ ጅምር

ex_auto <= 32'b0;

servo_auto <= 1'b0;

አበቃ

ሁልጊዜ @(posedge CLK_66)

ጀምር

ከሆነ (servo_A == 1'b1)

ጀምር

ex_auto <= ex_auto + 1'b1;

ከሆነ (ex_auto> 100000) // የሰዓት ዑደት 66 ሜኸ ፣ ይህ PWM ~ 1.5ms ነው ፣ ሰርቪው ወደ 120 ዲግ ይሽከረከራል

ጀምር

servo_auto <=! servo_auto;

ex_auto <= 32'b0;

አበቃ

አበቃ

ከሆነ (servo_A == 1'b0)

ጀምር

ex_auto <= ex_auto + 1'b1;

ከሆነ (ex_auto> 10000) // የሰዓት ዑደት 66 ሜኸ ፣ ይህ PWM ~ 0.15ms ነው ፣ ሰርቪው ወደ 0 ዲግሪ ይሽከረከራል

ጀምር

servo_auto <=! servo_auto;

ex_auto <= 32'b0;

አበቃ

አበቃ

አበቃ

ደረጃ 4: የቬሪሎግ ኮድ ይስቀሉ

Image
Image

«ማጠናቀር ጀምር» ን ጠቅ ያድርጉ። ምንም የስህተት መልእክት ካልታየ የሃርድዌር ቅንጅትን ለማጠናቀቅ ወደ “ፕሮግራመር” ይሂዱ። አስፈላጊ ከሆነ በ ‹ፋይል ለውጥ› ውስጥ ያለውን የ pof ፋይል ማዘመንዎን ያስታውሱ። ኮዱን ለመስቀል “ጀምር” ን ጠቅ ያድርጉ።

ከሁሉም በኋላ ፣ የ servo ሞተር በየጊዜው የሚሽከረከር መሆኑን ማየት አለብዎት።

የሚመከር: