تعليمات شعار

تعليمات التحكم في سرعة محرك VHDL تقرر الاتجاه وسرعة وحدة التحكم في السرعة اليسرى واليمنى

تعليمات- VHDL- محرك-سرعة-تحكم-قرر-الاتجاه-والسرعة-اليسار واليمين-وحدة التحكم في السرعة-المنتج

ملحوظة: هذه الصفحة جزء من بناء أكبر. يرجى التأكد من أن تبدأ من هنا ، حتى تفهم ما يلي في المشروع الأكبر

زيادةview

يعد التحكم في سرعة المحرك والاتجاه أحد القسمين الرئيسيين في روبوت جهاز الكشف الضوئي ، والآخر هو جهاز الكشف الضوئي أو قسم كاشف الضوء. بينما يركز قسم الكاشف الضوئي على رؤية الروبوت ، يركز قسم التحكم في سرعة المحرك والاتجاه على حركة الروبوت. سرعة المحرك وبيانات عملية التحكم في الاتجاه الواردة من قسم الكاشف الضوئي وتعطي ناتجًا ماديًا في شكل حركة محرك.

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

لتحقيق ذلك ، ستحتاج إلى إنشاء وحدات VHDL هذه (مرتبطة أيضًا أدناه):

  1. السيطرة
  2. حساب الخطأ
  3. التحويل الثنائي
  4.  عدم وجود مصدر ضوء

يمكنك إلقاء نظرة على كود VHDL لهذا التقسيم هنا.

لوازم
نوصي بالتشفير باستخدام ISE Design Suite 14.7 حيث يمكن استخدامه أيضًا لاختبار الكود في VHDL. ومع ذلك ، لتحميل الكود إلى BASYS 3 ، ستحتاج إلى تثبيت Vivado (الإصدار 2015.4 أو 2016.4) وكتابة القيد بامتداد .xdc.التعليمات- VHDL- المحرك- السرعة- التحكم- تحديد الاتجاه- والسرعة- اليسار واليمين- وحدة التحكم في السرعة- الشكل 1

التحكم في سرعة محرك VHDL: تحديد الاتجاه والسرعة ، وحدة التحكم في السرعة اليسرى واليمنى: صفحة 1

خطوة التعليمات

الخطوة 1: التحكم
لفهم كيفية التحكم في سلوك الروبوت الباحث عن الضوء ، سنشرح السلوك المطلوب للروبوت عندما يرى مصدرًا للضوء. سيتم التحكم في هذا السلوك وفقًا لموضع وحجم مصدر الضوء.- VHDL - موتور - سرعة - تحكم - قرر - اتجاه - وسرعة - يسار - يمين - تحكم في السرعة -

تشبه الخوارزمية المستخدمة وحدة تحكم روبوت RC ، مع ذراع يمكن تدويره يسارًا أو يمينًا ، ورافعة أخرى يمكن قلبها للأمام أو للخلف.

للبحث عن الضوء ، تريد أن يتحرك هذا الروبوت في خط مستقيم إذا كان موضع مصدر الضوء أمام الروبوت مباشرة. للقيام بذلك ، تريد نفس السرعة على كلا المحركين الأيمن والأيسر. إذا كان الضوء موجودًا على الجانب الأيسر من الروبوت ، فأنت تريد أن يتحرك المحرك الأيمن أسرع من المحرك الأيسر حتى يتمكن الروبوت من الدوران إلى اليسار باتجاه الضوء. على العكس من ذلك ، إذا كان الضوء موجودًا على الجانب الأيمن من الروبوت ، فأنت تريد أن يتحرك المحرك الأيسر أسرع من المحرك الأيمن حتى يتمكن الروبوت من الالتفاف إلى اليمين باتجاه الضوء. هذا مشابه للرافعة اليسرى لوحدة التحكم RC ، حيث يمكنك التحكم فيما إذا كنت تريد تحريك الروبوت إلى اليسار أو اليمين أو بشكل مستقيم.

بعد ذلك ، تريد أن يتحرك الروبوت للأمام إذا كان مصدر الضوء بعيدًا (مصدر ضوء صغير) ، أو يتحرك للخلف إذا كان مصدر الضوء المكتشف قريبًا جدًا (مصدر ضوء كبير). تريد أيضًا أنه كلما كان الروبوت بعيدًا عن مصدر الضوء ، زادت سرعة تحرك الروبوت. هذا مشابه للرافعة اليمنى لوحدة التحكم RC ، حيث يمكنك التحكم فيما إذا كنت تريد المضي قدمًا أو للخلف ، ومدى السرعة التي تريدها أن تتحرك بها.

يمكنك بعد ذلك استنباط معادلة رياضية لسرعة كل محرك من المحركات ، ونختار نطاق السرعة بين -255 إلى 255. وتعني القيمة السالبة أن المحرك سوف يدور للخلف ، بينما تعني القيمة الموجبة أن المحرك سوف يدور للأمام.

هذه هي الخوارزمية الأساسية لحركة هذا الروبوت. لمعرفة المزيد حول هذه الوحدة ، انقر هنا.

الخطوة 2: حساب الخطأ
نظرًا لأن لديك بالفعل سرعة واتجاه الهدف للمحركات ، فأنت تريد أيضًا أن تأخذ في الاعتبار السرعة والاتجاه المقاسين للمحركات. إذا وصلت إلى هدف السرعة ، فنحن نريد أن يتحرك المحرك فقط على زخمه. إذا لم يحدث ذلك ، فنحن نريد إضافة المزيد من السرعة للمحرك. في نظرية التحكم ، يُعرف هذا بنظام التحكم في التغذية الراجعة ذات الحلقة المغلقة.

لمعرفة المزيد حول هذه الوحدة ، انقر هنا.التعليمات- VHDL- المحرك- السرعة- التحكم- تحديد الاتجاه- والسرعة- اليسار واليمين- وحدة التحكم في السرعة- الشكل 2

الخطوة 3: التحويل الثنائي
من الحسابات السابقة ، لقد عرفت بالفعل الإجراء المطلوب لكل محرك. ومع ذلك ، تتم العمليات الحسابية باستخدام ثنائي بعلامة. الغرض من هذه الوحدة هو تحويل هذه القيم الموقعة إلى قيمة يمكن قراءتها بواسطة مولد PWM ، وهي الاتجاه (إما في اتجاه عقارب الساعة أو عكس اتجاه عقارب الساعة) والسرعة (تتراوح بين 0 إلى 255). أيضًا ، نظرًا لأن التعليقات الواردة من المحرك تُقاس في نظام ثنائي غير موقعة ، هناك حاجة إلى وحدة نمطية أخرى لتحويل القيم غير الموقعة (الاتجاه والسرعة) إلى قيمة موقعة يمكن حسابها بواسطة وحدة حساب الخطأ. لمعرفة المزيد حول هذه الوحدة ، انقر هنا.

الخطوة 4: غياب مصدر الضوء
لقد صنعت روبوتًا يتحرك للبحث عن الضوء عندما يكتشف الروبوت الضوء. ولكن ماذا يحدث عندما لا يكتشف الروبوت الضوء؟ الغرض من هذه الوحدة هو إملاء ما يجب فعله عند وجود مثل هذا الشرط.

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

الخطوة 5: كيف يعمل
يمكنك الرجوع إلى الصورة أعلاه لهذا الشرح. كما هو مذكور في بداية هذا الدليل ، ستحتاج إلى مدخلات "الحجم" و "الموضع" من قسم العتبة. للتأكد من أن هذه المدخلات كانت صالحة (على سبيل المثالample ، عندما تتلقى الحجم = 0 ، يكون الحجم صفرًا حقًا لأن الكاميرا لا تكتشف الضوء ، وليس لأن الكاميرا كانت لا تزال قيد التهيئة) ستحتاج أيضًا إلى نوع من المؤشر ، والذي نسميه "جاهز". ستتم معالجة هذه البيانات بواسطة عنصر التحكم (Ctrl. vhd) لتحديد سرعة الهدف لكل محرك (9 بتات ، موقعة).

للحصول على خرج أكثر ثباتًا على المحرك ، فأنت تريد استخدام الملاحظات في نظام الحلقة المغلقة. يتطلب هذا مدخلات "الاتجاه" و "السرعة" لكل محرك من قسم قياس سرعة المحرك. نظرًا لأنك تريد تضمين هذه المدخلات في حساباتك ، فسيتعين عليك تحويل هذه القيم غير الموقعة إلى ثنائي موقعة 9 بت. يتم ذلك عن طريق غير الموقع على المحول الثنائي الموقع (US2S.vhd).

ما يقوم به حساب الخطأ (خطأ. vhd) هو طرح السرعة المقاسة من سرعة الهدف لتحديد الإجراء لكل محرك. هذا يعني أنه عندما يكون لكليهما نفس القيمة ، يصبح الطرح صفراً وسيتحرك المحرك فقط على زخمه. يمكنك أيضًا إضافة عامل الضرب حتى يصل الروبوت إلى سرعة الهدف بشكل أسرع.

نظرًا لأن وحدة التحكم في المحرك تحتاج إلى سرعة واتجاه كل محرك ، يجب عليك ترجمة القيم الموقعة للإجراء إلى قيمتين منفصلتين غير مذكورتين: السرعة (1 بت) والاتجاه (8 بت). يتم ذلك عن طريق المحول الثنائي الموقعة إلى غير الموقعة (S2US.vhd) ، وسوف تصبح مدخلات لقسم التحكم في المحرك.

أضفنا أيضًا وحدة لتحديد ما يجب فعله عند عدم اكتشاف الضوء (لا يوجد عداد ضوئي. Bhd). نظرًا لأن هذه الوحدة عبارة عن عداد في الأساس ، فسوف تحسب المدة التي يحتاجها الروبوت إما للدوران أو البقاء في مكانه. سيضمن هذا أن الروبوت "يرى" بيئته بدلاً من مجرد رؤية ما أمامه ، ويحافظ على طاقة البطارية عندما لا يتوفر مصدر ضوء بالفعل.التعليمات- VHDL- المحرك- السرعة- التحكم- تحديد الاتجاه- والسرعة- اليسار واليمين- وحدة التحكم في السرعة- الشكل 3

الخطوة 6: ادمج ملف Files
لدمج ملف fileق ، تحتاج إلى توصيل الإشارات من كل وحدة. للقيام بذلك ، عليك إنشاء وحدة مستوى أعلى جديدة file. أدخل مدخلات ومخرجات الوحدات السابقة كمكونات ، وأضف إشارات للتوصيلات وقم بتعيين كل منفذ للزوج المقابل. يمكنك الرجوع إلى الاتصالات الموجودة في الرسم التوضيحي أعلاه ، وإلقاء نظرة على الكود هنا.التعليمات- VHDL- المحرك- السرعة- التحكم- تحديد الاتجاه- والسرعة- اليسار واليمين- وحدة التحكم في السرعة- الشكل 4

الخطوة 7: اختباره
بعد الانتهاء من الكود بالكامل ، تحتاج إلى معرفة ما إذا كانت الكود الخاص بك يعمل قبل تحميله على اللوحة ، خاصة وأن أجزاء من الكود قد تكون مصنوعة من قبل أشخاص مختلفين. يتطلب هذا طاولة اختبار ، حيث ستقوم بإدخال قيم وهمية ومعرفة ما إذا كان الرمز يتصرف بالطريقة التي نريدها أن يتصرف بها. يمكنك البدء باختبار كل وحدة ، وإذا كانت جميعها تعمل بشكل صحيح ، يمكنك عندئذٍ اختبار وحدة المستوى الأعلى.

الخطوة 8: جربها على الأجهزة
بعد اختبار الكود الخاص بك على جهاز الكمبيوتر الخاص بك ، يمكنك اختبار الكود على الجهاز الحقيقي. عليك أن تجعل القيد file على Vivado (.xdc file لـ BASYS 3) للتحكم في المدخلات والمخرجات التي تذهب إلى أي منافذ.

نصيحة مهمة: لقد تعلمنا بالطريقة الصعبة أن المكونات الكهربائية قد يكون لها قيمة قصوى للتيار أو الحجمtagإس. تأكد من الرجوع إلى ورقة البيانات للقيم. بالنسبة لـ PMOD HB5 ، تأكد من ضبط المجلدtagه من مصدر الطاقة عند 12 فولت (لأن هذا هو المجلد المطلوبtage للمحرك) ، والتيار أقل من اللازم حتى يتحرك المحرك.

الخطوة 9: ادمجها مع أجزاء أخرى
إذا نجحت الخطوات السابقة ، فقم بدمج الشفرة مع المجموعات الأخرى ليتم تحميل الكود النهائي في الروبوت. ثم ، فويلا! لقد نجحت في صنع روبوت يبحث عن الضوء.

الخطوة العاشرة: المساهمون
من اليسار إلى اليمين:

  • أنطونيوس غريغوريوس ديفن ريفالدي
  • فيليكس ويجونا
  • نيكولاس سانجايا
  • ريتشارد ميديانتوالتعليمات- VHDL- المحرك- السرعة- التحكم- تحديد الاتجاه- والسرعة- اليسار واليمين- وحدة التحكم في السرعة- الشكل 6

لطيف جدًا: التحكم في سرعة محرك VHDL: تحديد الاتجاه والسرعة ، وحدة التحكم في السرعة اليسرى واليمنى: صفحة 6
شكرا لك على إعادةviewعمل! هذا المشروع هو في الواقع جزء واحد فقط من مشروع الفصل (Light Looking Robot مع لوحة BASYS 3 وكاميرا OV7670) ، لذلك سأضيف الرابط إلى الفصل الدراسي قريبًا!

مذهل: أنا أتطلع إلى رؤية كل شيء معًا.

المستندات / الموارد

تعليمات التحكم في سرعة محرك VHDL تقرر الاتجاه وسرعة وحدة التحكم في السرعة اليسرى واليمنى [بي دي اف] تعليمات
التحكم في سرعة محرك VHDL يقرر الاتجاه والسرعة وحدة التحكم في السرعة اليسرى واليمنى ، وسرعة محرك VHDL ، والتحكم في تحديد الاتجاه والسرعة ، وحدة التحكم في السرعة اليسرى واليمنى

مراجع

اترك تعليقا

لن يتم نشر عنوان بريدك الإلكتروني. تم وضع علامة على الحقول المطلوبة *