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

روبوت ذاتي التوازن بعجلتين: 7 خطوات
روبوت ذاتي التوازن بعجلتين: 7 خطوات

فيديو: روبوت ذاتي التوازن بعجلتين: 7 خطوات

فيديو: روبوت ذاتي التوازن بعجلتين: 7 خطوات
فيديو: كيفية صنع روبوت ذاتي الحركة باستخدام الاردوينو( سيارة اردوينو ذاتية الحركه)arduino car 2024, شهر نوفمبر
Anonim
روبوت ذاتي التوازن بعجلتين
روبوت ذاتي التوازن بعجلتين

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

ما هو الروبوت ذاتي التوازن؟

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

كيف يعمل؟

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

كيف تعمل خوارزمية الحلقة المغلقة؟

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

لذلك ، نحتاج إلى القيام بأمرين هنا ، أولاً ، نحتاج إلى حساب زاوية الميل (لفة) التي يمر بها الروبوت ونتيجة لذلك ، نحتاج إلى التحكم في اتجاه دوران المحركات.

كيف نقيس زاوية الميل؟

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

  • مقياس التسارع هو جهاز كهرومغناطيسي يقيس التسارع المناسب ، وهذا هو تسارع الجسم في إطار الراحة اللحظية.
  • الجيروسكوب هو جهاز كهروميكانيكي يقيس السرعة الزاوية ويستخدم لتحديد اتجاه الجهاز.

ومع ذلك ، فإن مشكلة استخدام هذه المستشعرات هي:

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

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

اللوازم

القطع:

  1. Arduino Pro Mini 3.3V 8 مع 8 ميجا هرتز ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI USB إلى وحدة المحول التسلسلي TTL
  3. وحدة GY-521 مع MPU-6050
  4. زوج من محرك التروس الصغير N20 6V - 300rpm
  5. سائق محرك L298N
  6. LM2596S DC إلى DC محول باك
  7. البطارية (بطارية ليثيوم أيون قابلة لإعادة الشحن 9.7 فولت)
  8. حزام البطارية
  9. اثنان من لوحات الدوائر PCB النموذجية
  10. ذكر وأنثى رأس دبابيس الأسلاك الطائر

أدوات:

  1. لحام الحديد ولحام
  2. المواجهة بين عرافة النايلون
  3. مجموعة مفكات دقيقة
  4. طابعة 3D

الخطوة 1: البناء

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

يتكون الروبوت من 4 طبقات

  1. تربط الطبقة السفلية المحركات ولديها نقاط تثبيت لوحدة تشغيل المحرك L298N
  2. تحتوي الطبقة التالية على لوحة النموذج الأولي مع Arduino pro mini ورؤوس ملحومة بها
  3. الطبقة الثالثة تتصاعد IMU
  4. الطبقة العليا ، والتي أسميها "طبقة الوفير" تحفر البطارية ، ومحول باك ، ومفتاح نقدي

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

الخطوة 2: الأسلاك

الأسلاك
الأسلاك

لقد قمت بلحام بعض رؤوس رؤوس الأنثى بلوحة أداء لتتناسب مع دبابيس رأس Arduino pro المصغرة. بعد ذلك ، قمت بلحام رأس الذكر بتثبيت اللوحة للسماح بالوصول إلى الإدخال / الإخراج. تم تثبيت بقية المكونات على الإطار المطبوع ثلاثي الأبعاد وتوصيلها باستخدام أسلاك توصيل.

الخطوة الثالثة: نظرية التحكم

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

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

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

الخطوة 4: استخدام MPU 6050

مكتبة MPU6050

github.com/jrowberg/i2cdevlib/tree/master/…

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

www.i2cdevlib.com/forums/topic/96-arduino-…

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

باستخدام معالج الحركة الرقمية

يحتوي MPU6050 على DMP (معالج الحركة الرقمية).

ما هو DMP؟ يمكنك التفكير في DMP على أنه متحكم دقيق داخلي يعالج الحركة المعقدة من جيروسكوب ثلاثي المحاور ومقياس تسارع ثلاثي المحاور على متن mpu6050 ، باستخدام خوارزميات اندماج الحركة الخاصة به. تفريغ المعالجة التي كان يمكن إجراؤها بخلاف ذلك بواسطة Arduino

كيفية استخدامها؟ لمعرفة كيفية استخدام DMP ، انتقل إلى مثال الرسم MPU6050_DMP6 الذي يأتي مع مكتبة MPU6050 (في Arduino IDE: File-> Example-> MPU6050-> MPU6050_DMP6). هذه أيضًا فرصة جيدة للتحقق من عمل المستشعر بالفعل وأن الأسلاك صحيحة

الخطوة 5: التشفير

لقد استخدمت Arduino IDE وواجهة FTDI لبرمجة Arduino pro mini.

باستخدام مثال الرسم (MPU6050_DMP6) الذي يأتي مع مكتبة MPU6050 كرمز أساسي ، أضفت وظائف PID () و MotorDriver ().

أضف المكتبة

  • MPU6050: لاستخدام مستشعر MPU6050 ، سنحتاج إلى تنزيل مكتبة مطوري I2C من Jeff Rowberg وإضافتها إلى مجلد Arduino "libraries" الموجود في ملفات البرنامج على جهاز الكمبيوتر الخاص بك.
  • Wire: نحتاج أيضًا إلى مكتبة Wire للسماح لنا بالتواصل مع أجهزة I2C.

كود مزيف

تضمين المكتبات:

  • سلك
  • MPU6050
  • I2Cdev.h

تهيئة المتغيرات والثوابت والكائنات

اقامة ()

  • اضبط وضع الدبوس للتحكم في المحركات
  • اضبط وضع الدبوس لمصباح LED للحالة
  • قم بتهيئة MPU6050 وقم بتعيين قيم الإزاحة

PID ()

حساب قيمة PID

MotorDriver (استجابة PID)

استخدم قيمة PID للتحكم في سرعة واتجاه المحركات

حلقة ()

  • احصل على البيانات من DMP
  • استدعاء وظائف PID () a MotorDriver ()

الخطوة 6: إجراء ضبط PID

هذا هو الجزء الأكثر مملاً في المشروع ويتطلب القليل من الصبر إلا إذا كنت محظوظًا جدًا. فيما يلي الخطوات:

  1. اضبط المصطلحين I و D على 0
  2. أمسك الروبوت ، واضبط P بحيث يبدأ الروبوت في التأرجح حول وضع التوازن
  3. مع مجموعة P ، قم بزيادة I بحيث يتسارع الروبوت بشكل أسرع عند عدم التوازن. مع ضبط P و I بشكل صحيح ، يجب أن يكون الروبوت قادرًا على التوازن الذاتي لبضع ثوانٍ على الأقل ، مع بعض التذبذب
  4. أخيرًا ، تؤدي الزيادة D إلى تقليل التذبذب

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

الخطوة السابعة: الاستنتاج

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

اقتراحات للتحسين:

  • المحركات الأسرع ذات العزم العالي ، أي بالنسبة لمحركات التيار المستمر ، يكون تصنيف الجهد أعلى من عزم الدوران الأعلى
  • احصل على بطارية أثقل أو حرك الكتلة أعلى قليلاً
  • استبدل العجلات المطبوعة ثلاثية الأبعاد بعجلات مطاطية للحصول على مزيد من الجر

موصى به: