آموزش آردوینوپروژه های آردوینو

ساخت و کنترل بازوی رباتیک با آردوینو و سروو موتور

سلام. ساخت و کنترل بازوی رباتیک با آردوینو و سروو موتور را آماده کردیم.

آموزش طراحی بازو های ربات با آردوینو

در این پروژه آردوینو قصد داریم یک بازوی رباتیک مبتنی بر Arduino Uno بسازیم. ما در اینجا بازو را با استفاده از مقوا طراحی میکنیم و شما میتوانید از بازو های آماده یا چاپ سه بعدی استفاده کنید. مراحل کامل طراحی بازو ربات در پایین توضیح داده شده است. در این پروژه از برد آردوینو برای کنترل موتور های سروو که قطعات بازو را به هم متصل کرده اند استفاده میکنیم. همچنین میتوانیم از این پروژه به عنوان جرثقیل رباتیک استفاده کنیم. این پروژه برای مبتدیانی که میخواهند یاد بگیرند چطور یک ربات ساده را با هزینه کم بسازند بسیار مناسب است. همچنین در اینجا نحوه کار سروو موتور ها را نیز یاد خواهید گرفت.

بازوی رباتیک ما توسط چهار پتانسیومتر متصل به Arduino کنترل میشود. هر پتانسیومتر برای کنترل یک سروو موتور استفاده میشود. شما به راحتی میتوانید با چرخاندن این پتانسیومتر ها قسمت های مختلف ربات را جابجا کنید. با کمی تمرین و ظریف کاری به آسانی میتوانید شیئ ها را بردارید و جابجا کنید. ما برای این مطلب آموزشی از سروو موتور های کوچک استفاده کرده ایم. از این پروژه میتوانید برای عملیات های سنگین استفاده کنید اما باید سروو موتور های قوی تری انتخاب کنید.

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

سروو موتور چیست؟

سروو موتور ترکیبی از موتور DCT سیستم کنترل موقعیت و چرخ دنده ها است. سروو ها در دنیای مدرن کاربردهای زیادی دارند و به همین دلیل در شکل ها و اندازه های مختلفی در دسترس هستند. ما در این آموزش از سروو موتور SG90  استفاده خواهیم کرد که یکی از محبوب ترین و ارزان ترین سروو ها است. SG90 یک سروو 180 درجه است. بنابراین با این سروو می توانیم محورها را از 0 تا 180 درجه قرار دهیم.

کنترل سروو موتور با رزبری پای

یک سروو موتور به طور کلی دارای سه سیم است، یکی برای ولتاژ مثبت ، دیگری برای GND و دیگری برای تنظیم موقعیت است. سیم قرمز به برق متصل شده است، سیم قهوه ای به gnd وصل می شود و سیم زرد (یا سفید) به سیگنال ورودی وصل میشود.

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

در صورتی که با چرخه وظیفه و PWM آشنایی ندارید آموزش مقابل را ببینید : آموزش راه اندازی PWM با آردوینو

فرکانس سیگنال PWM براساس نوع سروو موتور متفاوت است. برای SG90 فرکانس سیگنال PWM حدود 50 هرتز است. برای فهمیدن فرکانس عملکرد سروو خود، دیتاشیت مدل مربوطه را بررسی کنید. پس از انتخاب فرکانس ، نکته مهم دیگر در اینجا DUTY RATIO سیگنال PWM است.

جدول زیر موقعیت Servo را برای چرخه وظیفه خاص نشان می دهد. با انتخاب مقدار مناسب، می توانید سروو را در هر زاویه ای قرار دهید. مثلا برای 45º ، نسبت وظیفه باید 5 یا 5٪ باشد.

موقعیت چرخه وظیفه
0 درجه 2.5
90 درجه 7.5
180 درجه 12.5

ساخت بازوی رباتیک با کارتن

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

پایه بازوی رباتیک با Arduino

یک تکه مقوا کوچک را بالای سروو اول قرار دهید و سپس سروو موتور دوم را روی این تخته بچسبانید و در جای خود محکم کنید. چرخش سروو باید با نمودار مطابقت داشته باشد.

سروو موتور دوم در بازو ربات

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

مقداری مقوا را بردارید و آن را به قطعات 3*11 سانتی متر برش دهید. اطمینان حاصل کنید که مقوا / کارتن شما محکم باشد و نرم نشده باشد. سوراخ مستطیل شکل را در یک انتهای برش دهید (0.8 سانتی متر از پایین) فقط کافی است تا برای یک سروو موتور دیگر جا داشته باشد و در انتهای دیگر چرخ دنده سروو را محکم با پیچ یا با چسب جا دهید. سپس سرو سوم را در سوراخ اول قرار دهید.

متصل کردن سروو موتور سوم در مستطیل

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

قطعه مقوا برای ساخت بازوی رباتیک با آردوینو

حالا همانطور که در شکل نشان داده شده سرو و چهارم و آخر را در لبه قطعه دوم چسب بزنید.

سرو و چهارم آخر بازوی ربات با Arduino

با این کار ، دو قطعه متصل به هم نظر می رسند.

آموزش طراحی بازوی رباتیک با Arduino

سپس آن را به سروو اول متصل کنید تا چیزی شبیه به تصویر زیر شود.

چگونه یک بازوی رباتیک بسازیم

برای قلاب ، دو کارتن دیگر به طول 1cmx7cm و 4cmx5cm را برش دهید. همانطور که در شکل نشان داده شده است ، آنها را به هم بچسبانید و دنده نهایی را در همان لبه بچسبانید.

ایجاد قلاب رباتیک با آردوینو

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

تصویر نهایی بازوی رباتیک با مقوا

مدار پروژه بازوی رباتیک با آردوینو

اتصالات مدار بازوی رباتیک با آردوینو در زیر نشان داده شده است.

اتصالات مدار بازوی رباتیک با آردوینو

ولتاژ دریافتی از پتانسیومتر ها نویز بالایی دارد به همین منظور ما از مقاومت ها استفاده کرده ایم. ولتاژ دریافتی از پتانسیومتر ها سپس به کانال های آنالوگ به دیجیتال در آردوینو تغذیه میشود. ما برای این کار از چهار کانال ADC آردوینو استفاده میکنیم.

قطعات مورد نیاز

  1. برد آردوینو Uno
  2. خازن 1000uF – چهار عدد
  3. خازن 100nF – چهار عدد
  4. سروو موتور SG 90 – چهار عدد
  5. پتانسیومتر 10 کیلو اهم – چهار عدد
  6. منبع تغذیه (5v)
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

کد بازوی رباتیک با آردوینو

آردوینو شش کانال آنالوگ به دیجیتال دارد. همانطور که گفته شد ما از چهار کانال ADC برای کنترل بازوی رباتیک استفاده میکنیم. آنالوگ به دیجیتال آردوینو Uno دارای دقت 10 بیتی است. بنابراین مقدار آنالوگ 0-5 ولت به مقدار دیجیتال 0-1023 تبدیل میشود. یعنی تقریبا برای هر واحد 4.9 میلی ولت. کد کامل پروژه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را توضیح میدهیم.

حال برای اینکه UNO بتواند سیگنال آنالوگ را به سیگنال دیجیتال تبدیل کند، ما باید به کمک توابع زیر از کانال ADC کانال آردوینو اونو استفاده کنیم:

1. analogRead(pin);
2. analogReference();
3. analogReadResolution(bits);

کانال های آردوینو ADC مقدار مرجع پیش فرض 5 ولت دارند. این بدان معنی است که ما می توانیم حداکثر ولتاژ ورودی 5 ولت برای تبدیل ADC در هر کانال ورودی بدهیم. از آنجا که برخی از سنسورها ولتاژهای 0-2.5 ولت را تأمین می کنند ، بنابراین با یک مرجع 5 ولت ، دقت کمتری دریافت می کنیم ، بنابراین ما یک دستورالعمل داریم که ما را قادر می سازد این مقدار مرجع را تغییر دهیم. بنابراین برای تغییر مقدار مرجع از “analogReference ()” استفاده میکنیم.

اگر نیاز به توضیحات بیشنر دارید، آنالوگ به دیجیتال در آردوینو را ببینید.

به عنوان پیش فرض ما حداکثر وضوح ADC را که 10 بیت است دریافت می کنیم ، این وضوح را می توان با استفاده از دستورالعمل  (“analogReadResolution(bits);”) تغییر داد.

در مدار بازوی رباتیک ، ما این ولتاژ مرجع را به صورت پیش فرض قرار داده ایم، بنابراین می توانیم مقدار را از کانال ADC با analogRead(pin); بخوانیم. در اینجا pin نشان دهنده پینی است که در آن سیگنال آنالوگ دریافت میشود. ما میخواهیم مقدار آنالوگ را از پین A0 بخوانیم بنابراین باید بنویسیم :

int SENSORVALUE0 = analogRead(A0);

حال بیایید در مورد سروو موتور صحبت کنیم ، Arduino Uno یک ویژگی دارد که ما را قادر می سازد با ارائه مقدار درجه، موقعیت سروو را کنترل کنیم. اگر می خواهیم سروو در 30 درجه باشد. کتابخانه  (Servo.h) را فراخوانی کنید. این کتابخانه کار را بسیار راحت میکند.

#include <Servo.h>
servo servo0;
servo0.attach(3);
servo0.write(degrees);

اکنون ، ما موقعیت سرو SG90 را از 0 تا 180 و مقادیر ADC از 0-1023 داریم. ما از یک تابع ویژه استفاده خواهیم کرد که به طور خودکار هر دو مقدار را مطابقت می دهد.

sensorvalue0 = map(sensorvalue0, 0, 1023, 0, 180);

این عبارت هر دو مقدار را به صورت خودکار همگام می کند و نتیجه را در “servovalue0” ذخیره می کند. اینگونه است که ما با استفاده از آردوینو سروو موتور های خود را در پروژه بازوی رباتیک Arduino کنترل میکنیم.

فیلم عملکرد پروژه

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

موارد موجود در فایل : سورس کامل ، شماتیک کامل

ثبت نام / ورود

4.2 (13 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

8 نظر

  1. سلام مهندس وقت بخیر ، من بعد تکمیل مدار وقتی خواستم پروژه را ران کنم سروو ها شروع به لرزش کردند ، لطف میکنید بفرمایین مشکل از کجاست؟

    1. سلام داداش .
      منم به همین مشکل خوردم . اگه دلیلشو میدونی ممنون میشم بگی

  2. سلام
    ببخشید این سروو موتور ها بیشتر از 180 درجه نمیچرخند؟

    1. سلام جناب، اغلب سروو موتو ها محدوده چرخش ۱۸۰ درجه ای دارند اما انواع دیگر هم موجود است، جهت کسب اطلاعات بیشتر مقاله سروو موتور چیست را بخوانید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *