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

روبوت ذاتي التوازن - خوارزمية التحكم PID: 3 خطوات
روبوت ذاتي التوازن - خوارزمية التحكم PID: 3 خطوات

فيديو: روبوت ذاتي التوازن - خوارزمية التحكم PID: 3 خطوات

فيديو: روبوت ذاتي التوازن - خوارزمية التحكم PID: 3 خطوات
فيديو: Self Balancing Robot using Arduino | How to Make Self Balancing Robot @XiLiRTechnologies 2024, ديسمبر
Anonim
روبوت ذاتي التوازن - خوارزمية التحكم PID
روبوت ذاتي التوازن - خوارزمية التحكم PID

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

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

ملخص المشروع:

هيكل الروبوت مطبوع ثلاثي الأبعاد باستخدام طابعة Ender 3 وهو مصمم ليلائم الضغط معًا.

يتم التحكم في الروبوت بواسطة Arduino Uno الذي يأخذ بيانات المستشعر من MPU6050 ويتحكم في محركات التيار المستمر من خلال محرك خارجي. يعمل ببطارية 7.4 فولت ، 1500 مللي أمبير في الساعة. ينظم سائق المحرك هذا إلى 5 فولت لتشغيل Arduino ويزود المحركات بـ 7.4 فولت.

تمت كتابة البرنامج من البداية بمساعدة مكتبات "Arduino-KalmanFilter-master" و "Arduino-MPU6050-master" من gitHub.

اللوازم:

  • أجزاء مطبوعة ثلاثية الأبعاد
  • اردوينو UNO
  • MPU6050 مستشعر 6 محاور
  • سائق محرك DC
  • محركات N20 DC (x2)
  • بطارية 9 فولت

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

بناء الروبوت
بناء الروبوت
بناء الروبوت
بناء الروبوت
بناء الروبوت
بناء الروبوت

الطباعة والتجميع

يجب أن يكون الهيكل بأكمله مناسبًا للضغط ولكني استخدمت superglue لتأمين المكونات لضمان أن يكون الروبوت صلبًا تمامًا عند الموازنة.

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

الإعدادات المستخدمة في طابعة Ender 3 هي: 0.16mm Layer Heights @ 40٪ infill لجميع الأجزاء.

الخطوة 2: 3D Print Robot

روبوت طباعة ثلاثي الأبعاد
روبوت طباعة ثلاثي الأبعاد

الهيكل (x1)

العجلة اليسرى (x2)

مبيت المحرك الأيسر (x2)

حقيبة اردوينو (x1)

الخطوة 3: خوارزمية التحكم PID

خوارزمية التحكم PID
خوارزمية التحكم PID

لقد كتبت خوارزمية تحكم PID من البداية باستخدام مكتبات "Arduino-KalmanFilter-master" و "Arduino-MPU6050-master" من gitHub.

فرضية الخوارزمية هي كما يلي:

  • قراءة البيانات الأولية من MPU6050
  • استخدم مرشح كالمان لتحليل البيانات من كل من الجيروسكوب ومقياس التسارع لإلغاء عدم الدقة في قراءات الجيروسكوب بسبب تسارع المستشعر. يؤدي هذا إلى إرجاع قيمة ناعمة نسبيًا لدرجة حرارة المستشعر بالدرجات إلى منزلتين عشريتين.
  • احسب الخطأ E في الزاوية ، أي: الزاوية بين المستشعر ونقطة الضبط.
  • احسب الخطأ النسبي (ثابت التناسب × الخطأ).
  • احسب خطأ تكاملي كمجموع تشغيل لـ (خطأ ثابت التكامل x).
  • حساب خطأ مشتق ثابت مثل [(ثابت التمايز) x (التغيير في الخطأ / التغيير في الوقت)]
  • اجمع جميع الأخطاء لإعطاء سرعة الإخراج التي سيتم إرسالها إلى المحركات.
  • احسب الاتجاه الذي يجب أن تدور فيه المحركات بناءً على علامة زاوية الخطأ.
  • ستعمل الحلقة إلى أجل غير مسمى وستبنى على المخرجات مع اختلاف المدخلات. إنها حلقة تغذية مرتدة ، تستخدم قيم المخرجات كقيم إدخال جديدة للتكرار التالي.

تتمثل الخطوة الأخيرة في ضبط معلمات حلقة PID Kp و Ki & Kd.

  1. تتمثل نقطة البداية الجيدة في زيادة Kp ببطء حتى يتأرجح الروبوت حول نقطة التوازن ويمكن أن يسقط.
  2. بعد ذلك ، ابدأ Kd بحوالي 1٪ من قيمة Kp وزد ببطء حتى تختفي التذبذبات وينزلق الروبوت بسلاسة عند دفعه.
  3. أخيرًا ، ابدأ بـ Ki بحوالي 20٪ من Kp وتنوع حتى "يتجاوز" الروبوت نقطة الضبط ليلتقط السقوط ويعود إلى الوضع الرأسي.

موصى به: