راه اندازی سرو موتور با آردوینو

سرو موتور یا Servo motor  نوعی موتور الکتریکیه که برای راه اندازی سرو موتور با آردوینو اغلب از شیلد ها و درایور های مخصوص سروو موتور استفاده میکنن ، اما قراره ما در این مطلب و با استفاده از PWM و  کتابخانه ی Servo.h این موتور رو راه اندازی کنیم.

در مطلب سرو موتور چیست ؟ کامل توضیح دادم که این موتور چیه و چطور کار میکنه و درمورد ساختارش توضیح دادم ، اما خب اگه اونو نخوندید بهتره که یکبار نگاه بندازین 🙂

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

سرووموتور DC از سه قسمت عمده ی زیر تشکیل شده.

  1. موتور DC
  2. قسمت مکانیکی برای افزایش گشتاور
  3. مدار حسگر موقعیت و کنترل موتور

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

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

سرو موتور SG92R

این موتور 3 سیمه ، که دوسیم اون مربوط به تغذیه (قرمز و قهوه ای) و سیم دیگه سیم کنترلی هستش که به میکرو وصل میشه. بازه ی حرکت موتور 180 درجه هستش  که میشه با زاویه ی 90 درجه به طرفین بچرخه،

زاویه ی چرخش با عرض پالسی تعیین میشه که به سیم کنترلی اعمال میشه.با عرض پالس یک میلی ثانیه ، موتور 90 درجه به چپ ، 1.5 میلی ثانیه ، وسط و 2 میلی ثانیه ، موتور 90 درجه به راست میچرخه که این پالس های کنترلی هر 20 میلی ثانیه باید تکرار بشه.

یه چیز خیلی باحال کتابخونه ی Servo اینه که ، توابع کتابخونه ی Servo.h تا 12 موتور در بردهای معمولی و 48 موتور توی بردهای سری Mega  رو پشتیبانی میکنن.البته بدی هم داره ، مثلا توی بردهای غیر Mega ، هنگام استفاده از این توابع ، عملکرد PWM پایه های 9 و 10 غیرفعال میشه و توی بردهای Mega اگر تعداد موتور ها از 12 تا بیشتر بشه پایه های 11 و 12 خروجی PWM نمیدن.

توابع راه اندازی سرو موتور با آردوینو

تابع Servo

این تابع متغیری از نوع Servo تعریف میکنه که میشه با اون موتور رو کنترل کرد و باید برای هر موتوری که برد وصل میکنیم یک بار اونو با نامی متفاوت تعریف کنیم.

در واقع این تابع یک متغیر ایجاد میکنه و باید اسمی برای هر موتور بزاریم ، مثال اولو ببینید کامل متوجه میشید 😉

تابع servo.attach

این تابع شماره پایه ای رو مشخص میکنه که موتور به آن متصل میشه و قالب اون بصورت زیره:

pin:مشخصه که شماره پایه برای اتصال به موتور هستش.

min و max : پارامترهای min و max به ترتیب کمترین و بیشترین عرض پالس برای چرخش صفر و 180 درجه رو تعیین میکنه که این اعداد بصورت پیش فرض 544 و 2400 میکروثانیه در نظر گرفته شدن.

مثال 1:

تابع write :

این تابع برای تنظیم زاویه یا سرعت موتور به کار میره. مقدار زاویه میتونه از صفر تا 180 درجه متغیر باشه.اگر موتور با چرخش پیوسته ( سرو موتور 360 درجه ) استفاده کنیم که تنها قابلیت تنظیم سرعت داره ، ورودی صفر و 180 به ترتیب به معنای چرخش  با سرعت کامل در دو جهت مخالف و 90 بدون هیچ چرخشی هست.

 

مثال: یک برنامه که سروو موتور رو ابتدا از صفر تا 180 درجه و سپس بلعکس حرکت میده :

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

توی این کد بیشترین مقدار عرض پالس رو برای چرخش 180 درجه ای 1000 و 2000 میکروثانیه در نظر گرفتیم .( همیشه قطعات دقت لازم رو ندارن و اگه این چرخش بدست نیومد ، با کمی سعی و خطا و بالا پایین کردن این ارقام، چرخش تصحیح میشه) در حلقه بی نهایت (void loop) هر 20 میلی ثانیه ، زاویه ی چرخش رو از صفر تا 180 درجه یک واحد افزایش میدیم و بعدش همین عمل رو از 180 تا صفر درجه بصورت کاهشی انجام میدیم.

 

و مثال دوم که با تغییر پتاسنیومتر زاویه ی چرخش سرو موتور تغییر میکنه:

 

تابع writeMicroseconds(uS)

این تابع پالسی با عرض دلخواه به سروو اعمال میکنه ، بازه ی زمانی بین 1000 میکروثانیه برای چرخش حداکثر پادساعت گرد ، 2000 میکروثانیه برای چرخش ساعت گرد و 1500 میکروثانیه برای چرخش به سمت وسطه. البته بدونید که این اعداد ممکنه دقیقا با موتور شما کارنکنه ولی با سعی و خطا عددی بین 700 تا 2300 میکروثانیه ، حداکثر چرخش رو برای شما ایجاد میکنه.

سرعت موتورهای با چرخش پیوسته ( سرو موتور 360 درجه ) نیز به همین ترتیب تغییر می کنه.
تابع read

این تابع زاویه ی کنونی چرخش سروو رو بعنوان خروجی میده که عددی بین 0 تا 180 درجه هست.

تابع attached

این تابع بررسی میکنه که آیا پایه ای به سروو متصل هست یا نه و خروجی اون true  یا false هستش.

تابع detach

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

مثال:
میخوایم موتوری که به پایه 9 وصل هستش ر, به اندازه 90 درجه بچرخونیم و بعد پایه رو ازاد کنیم.

اینم pdf سرو موتور و  آموزش سایت adafruit به زبون انگلیسی . البته مطلبی که خوندین تمامی بخش های اونو پوشش میداد !

آموزش سرو موتور PDF

 

دوستان سوال داشتین یا از نظرتون جایی کامل توضیح داده نشده بود توی کامنتا بپرسین 🙂 قطعا ارتباط 2 طرفه آموزش هارو بهتر میکنه و به ما انرژی بیشتری میده.

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

شما ممکن است این را هم بپسندید

پاسخ دهید

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