چگونه یک ربات حفظ تعادل با آردوینو ایجاد کنیم؟

نوع فایل
آموزشی
حجم فایل
125 KB
نویسنده
تاریخ انتشار
4 مهر 1397
دسته بندی
آموزش آردوینو
تعداد بازدید
98 بازدید
۲,۰۰۰ تومان
افزودن به سبد خرید
 خرید این محصول

چگونه یک ربات حفظ تعادل با آردوینو ایجاد کنیم؟

ربات حفظ تعادل

همیشه از نحوه کار ربات های دو چرخ (Segways) تعجب کردید ؟ این آموزش به شما نشان می دهد چگونه یک ربات با آردوینو ایجاد کنید که خودش را متعادل نگه دارد درست مثل یک Segway !

ربات حفظ تعادل چگونه کار می کند ؟

برای حفظ تعادل ربات , موتور ها باید به نحوی حرکت کنند که از سقوط ربات جلوگیری شود. این عمل نیازمند دریافت بازخورد (feedback) و اصلاح عناصر مربوطه است . عنصر بازخورد سنسور زیروسکوپ MPU6050 + شتاب سنج آن است که هر سه شتاب و چرخش را در هر سه محور به ما می دهد .

آردوینو از این عناصر براش شناسایی جهت فعلی ربات استفاده می کند . عنصر اصلاح کننده ترکیبی از موتور و چرخ ربات می باشد.ربات حفظ تعادل با آردوینودیتاشیت اتصالات ربات حفظ تعادل

حفظ تعادل با آردوینو

ابتدا MPU6050 را به Arduino وصل کنید و برای متصل کردن بقیه اجزا همانطور که در بالا نشان داده شده , اقدام کنید. ماژول L298N می تواند 5v+ مورد نیاز توسط Arduino را تا زمانی که ولتاژ ورودی آن 7 ولت یا بیشتر باشد فراهم کند.

با این حال , من تصمیم گرفتم منبع تغذیه جداگانه برای موتور و مدار را داشته باشم . توجه داشته باشید که اگر شما قصد استفاده از یک ولتاژ منبع تغذیه بیش از 12 ولت برای L298N داشته باشید , باید فقط جامپر مربوط به 12v+ را حذف کنید.

ساخت ربات

ساخت ربات متعادل کننده

بدنه ربات (عمدتا ساخته شده پلکسی) با دو موتور DC گیربکس دار

self balancing

مدار اصلی، شامل Arduino Nano و MPU6050 است

ماژول درایور L298N

ماژول درایور L298N

موتور DC گیربکس چرخ دارموتور DC گیربکس چرخ دار

ربات حفط تعادل خود اساسا یک آونگ معکوس است. اگر مرکز جرم نسبت به محور چرخ بالاتر باشد , می توان آن را متعادل تر کرد . یک مرکز جرم بالاتر به معنب یک لحظه جرمی بزرگتر از اینرسی است.

که مطابق شتاب پایین زاویه ای (سقوط کندتر) است . به همین دلیل بسته باطری را در بالا قرار دهید . با این حال , ارتفاع این ربات بر اساس در دسترس بود مواد (پلکسی) انتخاب شده است .

نظریه حفظ تعادل

در نظریه کنترل، حفظ برخی از متغیر (در این مورد، موقعیت ربات) ثابت نیاز به یک کنترل کننده خاص به نام PID (مشتق انتگرال متناسب). هر کدام از این پارامترها “دستاوردها” است، که معمولا Kp، Ki و Kd نامیده می شود. PID بین ارزش مورد نظر (یا ورودی) و مقدار واقعی (یا خروجی) اصلاح می کند. تفاوت بین ورودی و خروجی را به نام “خطا” می نامند.

کنترل کننده PID خطا را به کمترین مقدار ممکن با تنظیم خروجی ثابت می کند. در Arduino خود ربات متعادل کننده، ورودی (که شیب دلخواه، در درجه) توسط نرم افزار تعیین شده است. MPU6050 شیب فعلی روبات را می خواند و آن را به الگوریتم PID می فرستد، که محاسبات را برای کنترل موتور انجام می دهد و ربات را در موقعیت صحیح نگه می دارد. PID نیاز دارد که مقادیر Kp، Ki و Kd مقادیر بهینه داشته باشد.

مهندسان از نرم افزار مانند MATLAB برای محاسبه این مقادیر به طور خودکار استفاده می کنند. متاسفانه، ما نمی توانیم از MATLAB در پروژه خودمان استفاده کنیم، زیرا این امر پروژه را بیشتر پیچیده می کند. ما در عوض مقدار PID را به صورت دستی تنظیم خواهیم کرد. در ادامه یاد می گیرید که چگونه این کار را انجام دهید :

  1. Kp، Ki و Kd را برابر صفر قرار دهید.
  2. تنظیم Kp اگر کم باشد ، ربات سقوط خواهد کرد. اگر بیش از حد Kp را زیاد کنید ربات را به آرامی به جلو و عقب به حرکت در می آورد . اگر به اندازه کافی Kp تنظیم کنید. باعث می شود ربات رو به عقب و جلو حرکت کند(و یا کمی نوسان کند).
  3. هنگامی که Kp تنظیم کردید، نوبت به تنظیم Kd می رسد. مقدار Kd مناسب، نوسانات را کاهش می دهد تا زمانی که ربات تقریبا پایدار باشد. همچنین، مقدار مناسب Kd تعادل ربات را حفظ خواهد کرد، حتی اگر به ربات فشار وارد شود.
  4. سرانجام باید Ki را تنظیم کنید. ربات زمانی که روشن می شود، نوسان دارد، حتی اگر Kp و Kd درست تنظیم شوند، اما زمانی تثبیت می شوند که . مقدار وارده به حد کافی صحیح باشد، تا تثبیت ربات در زمان کافی انجام شود.

سورس کد آردوینو ربات حفظ تعادل

برای این پروژه ما به چهار کتابخانه خارجی نیاز داریم تا کار ربات حفظ تعادل با آردوینو را انجام دهد. کتابخانه PID باعث می شود که مقادیر P، I، و D محاسبه شود. کتابخانه LMotorController برای درایور دو موتور با ماژول L298N استفاده می شود. کتابخانه I2Cdev و کتابخانه MPU6050_6_Axis_MotionApps20 برای خواندن داده ها از MPU6050 هستند. شما می توانید این کتابخانه ها به همراه سورس کد را بعد از خرید به راحتی دانلود کنید.

مقادیر Kp، Ki، Kd را من به دلخواه تغییر داده ام  ممکن است برای شما به درستی عمل نکن . اگر درست کار نکرد ، مراحل تنظیم مقادیر را که در بالا ذکر شد دنبال کنید. توجه داشته باشید که شیب ورودی در کد من 173 درجه است. شما می توانید این مقدار را اگر دوست دارید تغییر دهید، اما توجه داشته باشید که این زاویه شیب است که باید ربات را حفظ کرد. همچنین، اگر موتورهای شما خیلی سریع باشند، می توانید مقادیر MotorSpeedFactorLeft و MotorSpeedFactorRight را تنظیم کنید.

آپدیت های آینده

در آپدیت های بعدی قصد دارم ساخت ربات حفظ تعادل با استپر موتور ها را آموزش بدهم و امکانات زیادی می شود به این نوع ربات های پیشرفته اضافه کرد مثل بازو , دوربین و … در حال حاظر من روی بهینه ازی الگوریتم این ربات توسط الگوریتم هوشمند q learning هستم که توسط آزمون و خطا قادر به حفظ تعادل باشد حتما بعد از تکمیل آموزش پیشرفته ساخت ربات حفظ تعادل جدید را قرار خواهم داد .

این قسمت از آموزش #آردوینو_یار هم به پایان رسید در صورت هر گونه مشکل می توانید زیر همین پست کامنت بزارید یا از طریق صفحه اینستاگرام ما با ما در میان بگذارید.

موفق باشید.

 

مطالعه بیشتر

  راهنمای خرید:
  • لینک دانلود فایل بلافاصله بعد از پرداخت وجه به نمایش در خواهد آمد.
  • همچنین لینک دانلود به ایمیل شما ارسال خواهد شد به همین دلیل ایمیل خود را به دقت وارد نمایید.
  • ممکن است ایمیل ارسالی به پوشه اسپم یا Bulk ایمیل شما ارسال شده باشد.
  • در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.