FPGA Cyclone IV DueProLogic Controls محرك سيرفو: 4 خطوات
FPGA Cyclone IV DueProLogic Controls محرك سيرفو: 4 خطوات
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 في "تغيير الملف" إذا لزم الأمر. انقر فوق "ابدأ" لتحميل الكود.

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