جدول المحتويات:

FPGA Cyclone IV DueProLogic Controls محرك سيرفو: 4 خطوات
FPGA Cyclone IV DueProLogic Controls محرك سيرفو: 4 خطوات

فيديو: FPGA Cyclone IV DueProLogic Controls محرك سيرفو: 4 خطوات

فيديو: FPGA Cyclone IV DueProLogic Controls محرك سيرفو: 4 خطوات
فيديو: Servomotor control on the FPGA Basys3 Board 2024, شهر نوفمبر
Anonim
FPGA Cyclone IV DueProLogic يتحكم في محرك سيرفو
FPGA Cyclone IV DueProLogic يتحكم في محرك سيرفو

في هذا البرنامج التعليمي ، سنقوم بكتابة رمز Verilog للتحكم في محرك سيرفو. يتم تصنيع المؤازرة SG-90 بواسطة Waveshare. عند شراء محرك سيرفو ، قد تتلقى ورقة بيانات تسرد جهد التشغيل وعزم الدوران الأقصى وتعديل عرض النبضة المقترح (PWM) … إلخ. ومع ذلك ، فإن FPGA DuePrologic يوفر جهد دخل يبلغ 3.3 فولت حيث يكون جهد التشغيل لمؤازرة SG-90 هو 5 فولت - 7 فولت. في حالة نقص الطاقة الكهربائية ، سأدرج PWM الذي تمت معايرته من أجل تدوير محرك سيرفو بنجاح.

مهمتنا: يتم تدوير المحرك المؤازر ذهابًا وإيابًا لمدة 5 ثوانٍ

القائمة الكاملة:

الخطوة الأولى: بناء دائرة إلكترونية

بناء دائرة إلكترونية
بناء دائرة إلكترونية

الخطوة 2: إعداد Pin Planner

قم بإعداد Pin Planner
قم بإعداد Pin Planner

انقر فوق "بدء تحليل تعيين الإدخال / الإخراج" للتحقق مما إذا تم تعيين مخطط الدبوس بشكل صحيح. خلاف ذلك ، يجب عليك استيراد جميع أسماء المنافذ بنفسك.

الخطوة 3: كود فيريلوج

نقوم بإنشاء جهاز توقيت "servo_count". عندما تكون "servo_A" عالية ، فإن PWM تكون 1.5 مللي ثانية ومن ثم فإن المؤازرة تقع عند 120 درجة. في المقابل ، عندما تكون "servo_A" منخفضة ، فإن PWM تكون 0.15 مللي ثانية وبالتالي تظل المؤازرة عند درجة 0.

تعيين XIO_2 [3] = نبضة مؤازرة ؛ // لـ 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 ؛

نهاية

نهاية

ريج [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.5 مللي ثانية ، تدور المؤازرة إلى 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.15 مللي ثانية ، تدور المؤازرة إلى 0 درجة

يبدأ

servo_auto <=! servo_auto ؛

ex_auto <= 32'b0 ؛

نهاية

نهاية

نهاية

الخطوة 4: قم بتحميل كود فيريلوج

Image
Image

انقر فوق "بدء التجميع". إذا لم يتم عرض رسالة خطأ ، فانتقل إلى "مبرمج" لإكمال إعداد الأجهزة. تذكر تحديث ملف pof في "تغيير الملف" إذا لزم الأمر. انقر فوق "ابدأ" لتحميل الكود.

بعد كل شيء ، يجب أن ترى أن محرك سيرفو يدور بشكل دوري.

موصى به: