فهرست مطالب:

ربات خود متعادل - الگوریتم کنترل PID: 3 مرحله
ربات خود متعادل - الگوریتم کنترل PID: 3 مرحله

تصویری: ربات خود متعادل - الگوریتم کنترل PID: 3 مرحله

تصویری: ربات خود متعادل - الگوریتم کنترل PID: 3 مرحله
تصویری: MDC20TeleOperation_MDC20اجرای الگوریتم کنترل از راه دور بر روی 2024, نوامبر
Anonim
ربات خود متعادل - الگوریتم کنترل PID
ربات خود متعادل - الگوریتم کنترل PID

این پروژه به این دلیل طراحی شد که من علاقه مند بودم در مورد الگوریتم های کنترل و نحوه اجرای موثر حلقه های PID کاربردی بیشتر بیاموزم. این پروژه هنوز در مرحله توسعه است زیرا هنوز ماژول بلوتوث اضافه نشده است که امکان کنترل روی ربات را از طریق تلفن هوشمند مجهز به بلوتوث فراهم می کند.

موتورهای N20 DC مورد استفاده نسبتاً ارزان بودند و از این رو بازی قابل توجهی در آنها انجام می شود. این امر باعث ایجاد کمی حرکت تند و سریع می شود زیرا موتورها بر گشاد شدن چرخها غلبه می کنند. بنابراین ، دستیابی به حرکت کاملاً صاف تقریباً غیرممکن است. کدی که من نوشتم بسیار ساده است اما به طور م theثر توانایی الگوریتم PID را نشان می دهد.

خلاصه ی پروژه:

شاسی این ربات با استفاده از چاپگر Ender 3 به صورت سه بعدی چاپ می شود و طوری طراحی شده است که با هم فشرده شوند.

این ربات توسط Arduino Uno کنترل می شود که داده های حسگر را از MPU6050 گرفته و موتورهای DC را از طریق درایور موتور خارجی کنترل می کند. باتری آن 7.4 ولت و 1500 میلی آمپر ساعت است. راننده موتور آن را تا 5 ولت تنظیم می کند تا آردوینو را تغذیه کند و 7.4 ولت را به موتورها وصل می کند.

این نرم افزار از ابتدا با کمک کتابخانه های "Arduino-KalmanFilter-master" و "Arduino-MPU6050-master" از gitHub نوشته شده است.

تدارکات:

  • قطعات چاپ سه بعدی
  • آردوینو UNO
  • سنسور MPU6050 6 محوره
  • درایور موتور DC
  • N20 DC Motors (x2)
  • باتری 9 ولت

مرحله 1: ساخت ربات

ساخت ربات
ساخت ربات
ساخت ربات
ساخت ربات
ساخت ربات
ساخت ربات

چاپ و مونتاژ

کل ساختار باید مطبوعاتی باشد ، اما من از چسب فوق العاده برای ایمن سازی قطعات برای اطمینان از سفت و سخت بودن ربات در هنگام تعادل استفاده کرده ام.

من قطعات را در فیوژن 360 طراحی کرده ام و هر قسمت را برای چاپ بدون پشتیبان گیری بهینه کرده ام تا امکان تحمل بیشتر و سطح تمیزتری ایجاد شود.

تنظیمات مورد استفاده در چاپگر Ender 3 عبارت بودند از: 0.16mm Layer Heights @ 40٪ پر کننده برای همه قسمت ها.

مرحله 2: ربات چاپ سه بعدی

ربات پرینت سه بعدی
ربات پرینت سه بعدی

شاسی (x1)

چرخ چپ (x2)

مسکن موتور چپ (x2)

قاب آردوینو (x1)

مرحله 3: الگوریتم کنترل PID

الگوریتم کنترل PID
الگوریتم کنترل PID

من یک الگوریتم کنترل PID را از ابتدا با استفاده از کتابخانه های "Arduino-KalmanFilter-master" و "Arduino-MPU6050-master" از gitHub نوشتم.

فرضیه الگوریتم به شرح زیر است:

  • داده های خام MPU6050 را بخوانید
  • از فیلتر Kalman برای تجزیه و تحلیل داده های ژیروسکوپ و شتاب سنج استفاده کنید تا نادرستی قرائت ژیروسکوپ را به دلیل شتاب سنسور حذف کنید. این مقدار نسبتاً صاف شده برای سطح سنسور را در درجه به دو رقم اعشار برمی گرداند.
  • خطای E را در زاویه محاسبه کنید ، یعنی: زاویه بین سنسور و نقطه تنظیم.
  • خطای متناسب را به صورت (ثابت خطای تناسب x) محاسبه کنید.
  • محاسبه خطای انتگرال به عنوان مجموع در حال اجرا (خطای Constant of Integration x).
  • محاسبه خطای مشتق ثابت به عنوان [(تفاوت تمایز) x (تغییر خطا / تغییر زمان)]
  • همه خطاها را جمع کنید تا سرعت خروجی به موتورها ارسال شود.
  • بر اساس علامت زاویه خطا ، موتورها را در کدام جهت بچرخانید.
  • حلقه به طور نامحدود اجرا می شود و با تغییر ورودی بر خروجی ایجاد می شود. این یک حلقه بازخورد است که از مقادیر خروجی به عنوان مقادیر ورودی جدید برای تکرار بعدی استفاده می کند.

مرحله نهایی تنظیم پارامترهای حلقه PID ، Ki و Kd است.

  1. نقطه شروع خوب این است که Kp را به آرامی افزایش دهید تا زمانی که ربات در اطراف نقطه تعادل نوسان کند و بتواند سقوط کند.
  2. در مرحله بعد ، Kd را از حدود 1 the مقدار Kp شروع کرده و به آرامی افزایش دهید تا زمانی که نوسانات ناپدید شوند و وقتی ربات تحت فشار قرار می گیرد ، به آرامی بلغزد.
  3. سرانجام ، با Ki در حدود 20 K از Kp شروع کنید و متفاوت باشید تا زمانی که ربات "فراتر" از نقطه تعیین شده برای فعالانه گرفتن سقوط و بازگشت به حالت عمودی حرکت کند.

توصیه شده: